我似乎找不到任何命令開關來顯示我的宏定義的擴展。
有沒有辦法用 GNU 匯編器做到這一點?
例如,如果我有這樣的宏:
.macro MACROA a
mov \a,%rax
.endm
MACROA $10
我想看到這樣的擴展:
; MACROA $10
mov $10, %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
10 000000
GAS LISTING x.s page 2
DEFINED SYMBOLS
x.s:9 .text:0000000000000000 _start
NO UNDEFINED SYMBOLS
uj5u.com熱心網友回復:
as -a -am 啟用帶有宏擴展的串列。
...
5 MACROA 10
5 0000 488B0425 > mov 10,%rax
5 0A000000
# load from absolute address 10, not mov $10, %rax.
# That's why as -Os doesn't optimize it to a 5-byte mov to eax
...
手冊頁暗示單獨打開串列,-am以及設定串列樣式以包含宏擴展。但在當前版本的 GAS(例如我系統上的 Binutils 2.36.1)中,情況并非如此。-a要真正打開串列,需要一個單獨的串列選項(如裸)。
這是 GAS 的選項決議中的一個錯誤;隨時報告。我認為他們使用https://sourceware.org/bugzilla/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/474978.html
