llvm-mc - LLVM 機器碼演練場¶
語法¶
llvm-mc [選項] [檔名]
描述¶
llvm-mc 命令將指定架構的組合語言程式碼作為輸入,並產生物件檔或可執行檔。
llvm-mc 提供了一組用於處理機器碼的工具,例如編碼指令和顯示內部表示形式、將字串反組譯為位元組等。
除非使用 --arch
選項覆蓋預設值,否則輸出組合語言程式碼的架構選擇將從輸入檔案自動確定。
選項¶
如果省略 -o
選項,則如果輸入來自標準輸入,llvm-mc 會將其輸出發送到標準輸出。如果 -o
選項指定為「-
」,則輸出也會發送到標準輸出。
如果未指定 -o
選項,並且指定了「-
」以外的輸入檔,則 llvm-mc 會透過採用輸入檔名、移除任何現有的 .s
副檔名並添加 .o
副檔名來建立輸出檔名。
其他 llvm-mc 選項如下所述。
終端使用者選項¶
- --help¶
顯示可用選項(–help-hidden 以獲得更多資訊)。
- -o <檔名>¶
使用
<檔名>
作為輸出檔名。有關更多詳細資訊,請參閱上面的摘要。
- --arch=<字串>¶
要組譯的目標架構,請參閱 -version 以查看可用目標。
- --as-lex¶
應用組譯器的「詞法分析器」將輸入分解為標記並列印出每個標記。這旨在幫助開發和測試組譯器實現。
- --assemble¶
組譯組語檔(預設),並將結果輸出為組語。這在設計和測試指令解析器時很有用,並且與其他 llvm-mc 旗標結合使用時會是一個很有用的工具。例如,此選項可能在轉換不同方言的組語時很有用,例如在 Intel 上,您可以使用 -output-asm-variant=1 將 AT&T 組語語法轉換為 Intel 組語語法。 它也可以與 –show-encoding 結合使用,以了解指令是如何編碼的。
- --disassemble¶
剖析一系列的十六進位位元組,並將結果以組語語法輸出。
- --mdis¶
標記十六進位位元組字串的反組譯。
- --cdis¶
十六進位位元組字串的彩色反組譯。
- --filetype=[asm,null,obj]¶
設定輸出檔案類型。將此旗標設定為 asm 將使工具輸出文字組語。將此旗標設定為 obj 將使工具輸出目標檔。將其設定為 null 則不會產生任何輸出,可用於計時目的。預設值為 asm。
- -g¶
為組語原始程式檔產生 DWARF 除錯資訊。
- --large-code-model¶
建立假設程式碼可能超過 2 GB 的 CFI 指令。
- --main-file-name=<string>¶
指定我們應該將輸入檔視為的名稱。
- --masm-hexfloats¶
啟用 MASM 樣式的十六進位浮點數初始設定式 (3F800000r)。
- --mcpu=<cpu-name>¶
以特定 CPU 類型為目標 (-mcpu=help 以取得詳細資訊)。
- --triple=<string>¶
要組譯的目標三元組,請參閱 -version 以取得可用的目標。
- --split-dwarf-file=<filename>¶
DWO 輸出檔名。
- --show-inst-operands¶
顯示已剖析的指令運算元。
- --show-inst¶
顯示內部指令表示法。
- --show-encoding¶
顯示指令編碼。
- --save-temp-labels¶
不要捨棄暫存標籤。
- --relax-relocations¶
發出 R_X86_64_GOTPCRELX 而不是 R_X86_64_GOTPCREL。
- --print-imm-hex¶
立即數值優先使用十六進制格式。
- --preserve-comments¶
在輸出的組合語言中保留註解。
- --output-asm-variant=<uint>¶
用於輸出列印的語法變體。例如,在 x86 目標上,--output-asm-variant=0 以 AT&T 語法列印,而 --output-asm-variant=1 以 Intel/MASM 語法列印。
- --compress-debug-sections=[none|zlib|zstd]¶
選擇 DWARF 除錯區段壓縮。
結束狀態¶
如果 llvm-mc 成功,它將以 0 結束。否則,如果發生錯誤,它將以非零值結束。