Assembly 如何在程序集使用宏时避免名称冲突
我想在我的Assembly 如何在程序集使用宏时避免名称冲突,assembly,x86,gnu-assembler,att,Assembly,X86,Gnu Assembler,Att,我想在我的common.h文件中声明以下宏: .macro HEX_NIBBLE reg //LOCAL letter, end cmp $10, \reg jae letter add $'0, \reg jmp end letter: /* 0x37 == 'A' - 10 */ add $0x37, \reg end: .endm 每当我在我的main.Scode中的多个位置调用上述内核时,我都会得到以下错误: $ as --32
common.h
文件中声明以下宏:
.macro HEX_NIBBLE reg
//LOCAL letter, end
cmp $10, \reg
jae letter
add $'0, \reg
jmp end
letter:
/* 0x37 == 'A' - 10 */
add $0x37, \reg
end:
.endm
每当我在我的main.S
code中的多个位置调用上述内核时,我都会得到以下错误:
$ as --32 -o main.o main.S -g
main.S: Assembler messages:
main.S:17: Error: symbol `letter' is already defined
main.S:17: Error: symbol `end' is already defined
main.S:17: Error: symbol `letter' is already defined
main.S:17: Error: symbol `end' is already defined
main.S:17: Error: symbol `letter' is already defined
main.S:17: Error: symbol `end' is already defined
我只想使用GNU汇编程序(GAS),不使用GCC。如何避免这些错误?对于这种情况是否有装配指令
main.S
对于这个例子可以采用任何形式,比如下面的代码:
.include "common.h"
BEGIN
HEX_NIBBLE %ax
HEX_NIBBLE %ax
HEX_NIBBLE %ax
HEX_NIBBLE %ax
hlt
使用或re:hex:您可能对