[an error occurred while processing this directive]
Длина команды
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено любитель форта 30 октября 2005 г. 01:48
В ответ на: Ничуть не менее неубедительно, чем утверждение, что задача отлично ложится на стековый проц :-) отправлено ReAl 29 октября 2005 г. 17:18

Литерал должен иметь размер равный разрядности данных, плюс код команды. Если все комады выравнять по этому размеру (12..16 бит), действительно, получится ПИК, где кодовое пространство в типичной программе расходуется крайне расточительно. Однако глупо делать все команды одной длины, имхо.

Можно сделать как в 32-разрядном ShBoom, где 6-битные коды команд собираются в обойму по 5 штук, оставшиеся 2 бита служат спец. признаками литералов, а значения литералов выравнены по 32-битной границе. Однако это сложновато, хотя и дает на типовых задачах необычайно плотный код, вдобавок, выполняющийся очень быстро, т.к. команды "засасываются" в проц пачками.

Для простого 8-разрядного стек-проца имеет смысл замесить 1-, 2- и 3-байтные команды. Подавляющее большинство команд (порядка 90% в системе команд, и даже более этого - в программах) будет 1-байтными, они дадут хорошую плотность кода, которая пикоподобным процам и не снилась. Команды с литералами будут 2- и 3-байтными, их надо немного, зато они дадут необходимую скорость исполнения. В специфических задачах с заведомо малым размером кода (порядка 1К) можно обойтись без 3-байтных команд.

> Т.е. таки две команды - в одной загрузка адреса/номера/маски бита, в
> другой - его проверка?

Зависит от требований, нюансов реализации и вкуса разработчика. Можно сделать и одну команду.

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru