在气体汇编语言中使用ifdef

时间:2017-09-18 06:01:14

标签: assembly gas binutils

我有以下程序集文件mov.s

 .text
    .macro test_3
     and $3,%eax
    .endm

    movz:
    movzb   %al,%ax
     movzb   (%eax),%ax
     movzb   %al,%eax
        movzb   (%eax),%eax
    .ifdef test_3
        movzb33 %al,%rax
        movzb   (%rax),%rax
.endif

命令as -o dump.o movz

在这段代码中,我想用汇编语言测试ifdef,所以我定义了宏test_3。

根据我的理解,它应该打印消息 Error: no such instruction: 'movzb33 %al,%rax'当我使用汇编程序但它没有进入ifdef时,那么问题是什么?

1 个答案:

答案 0 :(得分:0)

.ifdef检查是否定义了符号,它不测试宏。在GNU AS和许多其他汇编程序中,宏只能在允许指令的地方使用。