Рабочий код в сборке NASM является следующее:Как получить значение переменной в макро аргумента
%macro ISR_NOERRCODE 1
[GLOBAL isr%1]
isr%1:
...
%endmacro
%assign i 0 ; Initialize the loop Variable
%rep 8
ISR_NOERRCODE i
%assign i i+1
%endrep
который расширяется в 8 кодовых блоков имя isr1
, isr2
и т.д. Но в синтаксисе GAS, аргумент, заданный макросу, как представляется, не расширяется. Мой код:
.macro ISR_NOERRCODE n
.global isr\n
isr\n:
...
.endm
.set i, 0
.rept
ISR_NOERRCODE $i
.set i, $i + 1
.endr
Что приводит к ошибке ассемблера:
Error: symbol `isr$i' is already defined
Поскольку макрос, кажется, принимает $i
аргумента в качестве символьной строки.
Возможно ли это даже в синтаксисе GAS?
Работает как очарование, спасибо большое! – Gargamel