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)。

-mattr=a1,+a2,-a3,...
目標 特定屬性 (-mattr=help 查看詳細資訊)。
--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 結束。否則,如果發生錯誤,它將以非零值結束。