Open Vadimatorik opened 1 year ago
Даже интересно не сколько могу выкинуть, а сколько минимально я должен реализовать, чтобы не пришлось писать только на ассемблере и не писать свой))) Хотелось бы ограничиться проектированием железа) Зачем - хочу)
Почти все команды используются компилятором :) А те, что не используются им, используются явно, как ассемблерные инструкции. Например, ret
)
Те же команды ветвления AVR (которых 24 штуки), имеют не самые понятные и читаемые/запоминающиеся мнемоники. И для всех них в языке есть "человеческие" аналоги с if (...)
Насколько помню, if (...)
использовал всего две команды ветвления. Но может не всматривался.
Так, стоп. Как все, если должна быть компиляция под Attiny4? А там у нас совсем мало команд. Или вот attiny которая без стека вообще (забыл название). Ну то есть без стека, а там 1 или 3 слова есть стека...
Я просто думаю, что можно взять минимальный набор AVR инструкций, минимальный набор ветвлений, выкинуть push/pop, прерывания и получить вполне себе реализуемую штуку в 2-3к вентелей) Ну и регистров порезать, конечно же, да.
Кстати сюда же вопрос. Рас уж attiny много и есть те, у которых набор команд отличается, есть ли возможность прописать свой target?) Типа relayvr1: и какие регистры есть, какие команды есть. Оно же где-то прописано)
В тестах можно посмотреть часть команд (но тут они не все) https://github.com/trol73/the-rat-avr/tree/main/compiler/test/ru/trolsoft/therat/avr/compiler А если и регистры порезать, да ещё и стек выкинуть, то совсем тяжко будет под это писать ) С-- реализует человеко-читаемую форму для большинства команд, чтобы можно было писать человек-читаемый код. А сколько из них было бы достаточно для минимального программирования - это другой вопрос )
Кстати сюда же вопрос. Рас уж attiny много и есть те, у которых набор команд отличается, есть ли возможность прописать свой target?) Типа relayvr1: и какие регистры есть, какие команды есть. Оно же где-то прописано)
нет такого ) лично я не планировал использовать урезанные ядра (с прагматической точки зрения это очень странно, т.к. такие урезанные чипы и найти сложнее, и стоят они дороже, чем условная atmega8), и, соответственно, не заморачивался пока поддержкой их ограничений )
Ну вообще да. Но тянуть за собой даже минимальные 54 инструкции (ну минус работу с GPIO и по мелочи, 45).
А. То есть attiny4 не поддерживается?
Почему не поддерживается? Там же те же самые команды, только не все они поддерживаются. Но компилятор, в данный момент, не будет проверять доступность команд, эта задача на программисте
А. Вот оно как. Понял. Я думал, что компилятор смотрит на список доступных команд в рамках ядра. А то отстрелить себе ногу очень просто)))
Возник такой вопрос. Ввиду строгих ограничений на количество конструкций в языке, сколько действительно команд ассемблера (без ассемблерных вставок) используется компилятором? Я тут в домашних целях просто делаю клон AVR на реле. И мне вот интересно, сколько команд я могу выкинуть, чтобы при этом мочь писать на C-- свободно под это поделье. Просто у AVR ведь 100500 команд ветвления. Но используется из С-- наверняка минимум. Можно где-то посмотреть на этот минимум?