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