Пишу на ассембелере для AVR использую avr-as. Поскольку для компиляции используется avr-gcc, то допускаются директивы Си-препроцессора (#include, #define, ...).
Хочу написать макрос, который бы после препроцессирования преобразовывался в _многострочный_ код.
Пример:
есть кусок кода, вызывающийся довольно часто
ldi r16,num
rcall delay
хочется его заменить на
wait(num)
Поскольку в ассемблере нет символа, разделяющего команды, нужно чтобы макрос становился именно многострочным.
Макрос
#define wait(n) ldi r16,n \
rcall delay
выраждается в
ldi r16,n rcall delay
Соответственно, avr-as матерится на мусор в конце строки:
avr-gcc -I. -mmcu=attiny15 -x assembler-with-cpp -Wa,-gstabs,-ahlms=main.lst -c main.S -o main.o
main.S: Assembler messages:
main.S:100: Error: garbage at end of line
make: *** [main.o] Error 1
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от rei3er
Ответ на:
комментарий
от koTuk
Ответ на:
комментарий
от rei3er
Ответ на:
комментарий
от rei3er
Ответ на:
комментарий
от koTuk
Ответ на:
комментарий
от rei3er
Ответ на:
комментарий
от koTuk
Ответ на:
комментарий
от koTuk
Ответ на:
комментарий
от rei3er
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум [AVR-Asm] Как использовать статическую либу в avr-gcc? (2009)
- Форум А как Вы работаете с AVR ? (2013)
- Форум размер бинарников avr-gcc (2014)
- Форум define (2005)
- Форум define (2005)
- Форум scheme define (2007)
- Форум Java -> define ? (2006)
- Форум [Ъконсоль] '\b' многострочно (2010)
- Форум удаление многострочного шаблона (2013)
- Форум Conky многострочный текст (2013)