在 GNU 汇编器 - AS - 列表中显示宏扩展。仅预处理?

Show macro expansions in GNU Assembler - AS - listing. Preprocess only?

我似乎找不到任何命令开关来显示我的宏定义的扩展。

有没有办法用 GNU 汇编程序来做到这一点?

例如,如果我有这样的宏:

.macro MACROA a
    mov \a,%rax
.endm

MACROA 

我希望看到这样的扩展:

; MACROA 
mov , %rax

我依稀记得看到过这个,但不知道在哪里了。

我尝试了 -a 开关,但它没有生成扩展,只有操作码打印在宏旁边

> as x.s -a
GAS LISTING x.s             page 1


   1                
   2                
   3                .text
   4                
   5                .macro MACROA a
   6                    mov \a, %rax
   7                .endm
   8                
   9                _start:
  10 0000 48C7C00A      MACROA 
  10      000000

GAS LISTING x.s             page 2


DEFINED SYMBOLS
                 x.s:9      .text:0000000000000000 _start

NO UNDEFINED SYMBOLS

as -a -am 启用带有宏扩展的列表。

...
   5                    MACROA 10
   5 0000 488B0425      >  mov 10,%rax
   5      0A000000 
       # load from absolute address 10, not mov , %rax.
       # That's why as -Os doesn't optimize it to a 5-byte mov to eax
...

man page 意味着单独 -am 会打开列表,并将列表样式设置为包含宏扩展。但在当前版本的 GAS 中(例如我系统上的 Binutils 2.36.1),情况并非如此。一个单独的列表选项,如 bare -a 是实际打开列表所必需的。

这是GAS选项解析中的一个错误;随时报告。我认为他们使用 https://sourceware.org/bugzilla/