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

-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 結束。否則,如果發生錯誤,它將以非零值結束。