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 <filename>¶
使用
<filename>
作為輸出檔案名稱。請參閱上面的摘要以瞭解更多詳細資訊。
- --arch=<string>¶
目標組譯架構,請參閱 -version 以查看可用的目標。
- --as-lex¶
應用組譯器的 “lexer” 將輸入分解為 token 並印出每個 token。這旨在幫助開發和測試組譯器的實作。
- --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 偵錯資訊。
- --hex¶
將原始十六進位位元組作為反組譯的輸入。空白字元會被忽略。
- --large-code-model¶
建立 CFI 指令,假設程式碼可能超過 2 GB。
- --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 結束。否則,如果發生錯誤,它將以非零值結束。