在 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/
我似乎找不到任何命令开关来显示我的宏定义的扩展。
有没有办法用 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/