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 フラグと組み合わせると便利なツールになります。たとえば、このオプションは、異なるdialectのアセンブリをトランスコードするのに役立ちます。たとえば、Intel では、-output-asm-variant=1 を使用して AT&T から Intel アセンブリ構文に変換できます。また、--show-encoding と組み合わせて、命令がどのようにエンコードされるかを理解することもできます。

--disassemble

一連の16進バイトを解析し、結果をアセンブリ構文として出力します。

--mdis

16進バイト列のマークアップ付き逆アセンブル。

--cdis

16進バイト列のカラー逆アセンブル。

--filetype=[asm,null,obj]

出力ファイルタイプを設定します。このフラグを asm に設定すると、ツールはテキストアセンブリを出力します。このフラグを obj に設定すると、ツールはオブジェクトファイルを出力します。null に設定すると、出力が作成されず、タイミング測定に使用できます。デフォルト値は asm です。

-g

アセンブリソースファイルの DWARF デバッグ情報を生成します。

--large-code-model

コードが 2 GB を超える可能性があると想定した CFI ディレクティブを作成します。

--main-file-name=<文字列>

入力ファイルとみなすべき名前を指定します。

--masm-hexfloats

MASM スタイルの16進浮動小数点初期化子 (3F800000r) を有効にします。

-mattr=a1,+a2,-a3,...
ターゲット固有の属性(詳細については -mattr=help)。
--mcpu=<cpu名>

特定の CPU タイプをターゲットにします(詳細については -mcpu=help)。

--triple=<文字列>

アセンブルするターゲットトリプル。利用可能なターゲットについては -version を参照してください。

--split-dwarf-file=<ファイル名>

DWO 出力ファイル名。

--show-inst-operands

解析された命令オペランドを表示します。

--show-inst

内部命令表現を表示します。

--show-encoding

命令エンコーディングを表示します。

--save-temp-labels

一時ラベルを破棄しません。

--relax-relocations

R_X86_64_GOTPCREL の代わりに R_X86_64_GOTPCRELX を出力します。

--print-imm-hex

即値には16進数形式を優先します。

--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 で終了します。それ以外の場合、エラーが発生した場合、ゼロ以外の値で終了します。