ВходНаше всё Теги codebook PARTS Поиск Опросы Закон Понедельник
14 июня
/190552
Топик полностью
ReAl (19.04.2010 10:52 - 10:59, просмотров: 256) ответил koyodza на ARM в этом отношении просто идеален ;=)
В общем-то, у него *байтов* регистров даже больше, чем у AVR, у MSP430 столько же (и больше, чем у PDP-11). При проектировании AVR попытались запастись "достаточным" количеством именно байтов, чтобы повозиться с тремя 32-битными переменными (программное деление и умножение) 16 байт уже на грани - 12 байт плюс счётчик, стековый кадр - приплыли. Придётся какой-нибудь указатель на рабоиче данные уже сохранть/восстанавливать. Но, согласен с предыдущими ораторами, 16 байтов для более-менее нормальной работы хватило бы, а по 64-битным - так очень большой вопрос, стоило ли на это закладываться. 8-битнику 32 байта регистров таки как-то непонятно зачем. Тогда уже аккумулятор + 256 :-), как в разных вариациях получается у PIC16 и у 6502/6800/ST5_или_ST6_не_помню/STM8 при короткой адресации. Освободившиеся биты КОП - так это же счастье в том, что увеличивается число указательных пар, в том числе для адресации со смещением. В командах регистр-регистр можно было бы освободившийся бит использовать для словных операций - не только movw, но и addw, addcw, subw, ... Скорость поменялась бы мало, при 8-битном АЛУ всё равно по два такта шло бы, но размер кода - сильно. (кстати, с этими словным операциями - как только вводишь бит "словная" - тут же освобождается бит в номере регистра, словные операции вполне логично ограничить парами, начинающимися с чётного регистра). Ну и при 16-ти регистрах просто просятся команды pushm/popm со вторым словом - маской регистров :-) Тоже скорости не добавит, но код часто ужмёт.
Ответить