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)。
- --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 退出。否则,如果发生错误,它将以非零值退出。