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 标志结合使用时可以成为一个有用的工具。例如,此选项可能有助于从不同的方言转换汇编,例如在英特尔上,您可以使用 -output-asm-variant=1 将 AT&T 转换为英特尔汇编语法。它还可以与 –show-encoding 结合使用以了解指令是如何编码的。

--disassemble

解析一系列十六进制字节,并将其结果打印为汇编语法。

--mdis

十六进制字节字符串的标记反汇编。

--cdis

十六进制字节字符串的彩色反汇编。

--filetype=[asm,null,obj]

设置输出文件类型。将此标志设置为 asm 将使工具输出文本汇编。将此标志设置为 obj 将使工具输出目标文件。将其设置为 null 不会创建任何输出,并且可用于计时目的。默认值为 asm

-g

为汇编源文件生成 DWARF 调试信息。

--large-code-model

创建假设代码可能超过 2 GB 的 CFI 指令。

--main-file-name=<字符串>

指定我们应将输入文件视为哪个名称。

--masm-hexfloats

启用 MASM 样式的十六进制浮点数初始化程序 (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_GOTPCRELX 而不是 R_X86_64_GOTPCREL。

--print-imm-hex

更倾向于使用十六进制格式表示立即数。

--preserve-comments

在输出的汇编中保留注释。

--output-asm-variant=<无符号整数>

用于输出打印的语法变体。例如,在 x86 目标上,–output-asm-variant=0 以 AT&T 语法打印,而 –output-asm-variant=1 以 Intel/MASM 语法打印。

--compress-debug-sections=[none|zlib|zstd]

选择 DWARF 调试部分压缩。

退出状态

如果 llvm-mc 成功,它将以 0 退出。否则,如果发生错误,它将以非零值退出。