Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Пока не начинаешь писать сложные макросы с оптимальным кодом не важно. Вот ПОДАЙ жучка, голос (+)

Отправлено ReAl 17 января 2008 г. 16:47
В ответ на: А какая разница, отличать по команде, или по закорючкам #@ ? отправлено AlexD 17 января 2008 г. 16:10

Если изначально в мнемоники заложена одна команда mov с закорючками, то я просто пишу

макро ПОДАЙ собачка, звучок
mov r16, звучок
out собачка, r16
усё

И один единственный макрос будет работать для
ПОДАЙ PORTB, 5
ПОДАЙ PORTC, voice_code_in_ram_cell
ПОДАЙ PORTD, Y+6
С небольшим усложнением макроса можно будет r16 применять для вида голоса в памяти или константы, а если уже в регистре - то прямо из него выбрасывать и не ставить лишнюю команду.
Если всё в мнемонике, то мне придётся писать горсть почти одинаковых макросов с разными именами.
Если и в мнемонике, и в закорючках, то я по карйней мере могу по закорючкам определить метод адресации и подставить нужную мнемонику.
По-хорошему, так иногда для оптимального макроса хочется знать - числовое выражение в аргументе абсолютное (и тогда по его значению что-то выбрать) или перемещаемое.
Грубо говоря - если команда add с константой длиннее команд inc/dec, то для перемещаемых значений и значений, больших по модулю, чем 1 - генерировать add, для +1/-1 inc/dec, для 0 - вообще ничего.
Или для AVR регистровых пар W(r25:r24), X, Y, Z - или поставить команду adiw для малых абсолютных значений или разбить на две с отдельными регистрами и hi8/lo8 для болших абсолютных или перемещаемых. А если нельзя определить - перемещаемое ли, то всегда две команды надо ставить.

Но этого хочется, если много пишешь на ассемблере. Если небольшие подпрограммы или меленькие проектики, да ещё и изредка - то можно и плюнуть.


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
сколько миллиампер в одном ампере ?:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru