Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Подскажите по использованию препроцессорной директиве #define
Отправлено
sdeftt 09 марта 2008 г. 14:20
Подскажите по использованию препроцессорной директиве #define в AVR Studio в программе на АССЕМБЛЕРЕ при использовании её не для определения константы, а для определения макроса-функции.
В общем виде определение препроцессорного макроса-функции выглядит так: #define prepMacrosName (список аргументов) (определение функции)
Вопрос №1
В хелпе приводиться такой пример:
#define SQR(X) ((X)*(X))
Т.е. если я вызову
ldi ZL , low SQR(17)
, то компилятор вместо SQR(17) напишет"
ldi ZL , low ((17) x (17)) или ldi ZL , low (289) ???
Вопрос №2
Обязательно ли в качестве аргументов "функции" макроса числовые переменные? Или можно и куски текстовых строк?
Могу ли я например использовать такой макрос:
#define Command (InstructionType) (InstructionType)
в строке программы
Command (and)i R16 , 0b01001000 // эквивалетно andi R16, 0b01001000
Command (or)i R16 , 0b01001110 // эквивалетно ori R16, 0b01001110
Замечание: как это сделано в СИ-компиляторах НЕ ИНТЕРЕСУЕТ. Интересует как это сделано для ассемблера в AVR Studio
Составить ответ | Вернуться на конференцию
Ответы