lli - 直接从 LLVM 位码执行程序¶
摘要¶
lli [选项] [文件名] [程序参数]
描述¶
lli 直接执行 LLVM 位码格式的程序。它接受 LLVM 位码格式的程序,并使用即时编译器或解释器执行它。
lli 不是一个模拟器。它不会执行不同架构的 IR,并且只能解释(或 JIT 编译)主机架构。
JIT 编译器采用与其他工具(如 llc)相同的参数,但它们不一定适用于解释器。
如果未指定文件名,则 lli 从标准输入读取程序的 LLVM 位码。
命令行上指定的可选参数作为参数传递给程序。
通用选项¶
- -fake-argv0=可执行文件¶
覆盖传递给正在执行的程序的
argv[0]
值。
- -force-interpreter={false,true}¶
如果设置为 true,则即使此架构可以使用即时编译器,也使用解释器。默认为 false。
- -help¶
打印命令行选项的摘要。
- -load=插件文件名¶
导致 lli 加载名为插件文件名的插件(共享对象)并将其用于优化。
- -stats¶
打印来自代码生成过程的统计信息。目前,这仅对即时编译器有意义。
- -time-passes¶
记录每个代码生成过程所需的时间并将其打印到标准错误。
- -version¶
打印 lli 的版本并退出,而不执行任何其他操作。
目标选项¶
- -mtriple=目标三元组¶
用指定的字符串覆盖输入位码文件中指定的目标三元组。如果您选择与当前系统不兼容的架构,这可能会导致崩溃。
- -march=架构¶
指定要为其生成汇编的架构,覆盖位码文件中编码的目标。有关有效架构的列表,请参阅llc -help的输出。默认情况下,这是从目标三元组推断出来的,或者自动检测为当前架构。
- -mcpu=cpu名称¶
指定当前架构中要为其生成代码的特定芯片。默认情况下,这是从目标三元组推断出来的,或者自动检测为当前架构。有关可用 CPU 的列表,请使用:llvm-as < /dev/null | llc -march=xyz -mcpu=help
- -mattr=a1,+a2,-a3,...¶
覆盖或控制目标的特定属性,例如是否启用 SIMD 操作。当前 CPU 设置默认属性集。有关可用属性的列表,请使用:llvm-as < /dev/null | llc -march=xyz -mattr=help
浮点选项¶
- -disable-excess-fp-precision¶
禁用可能提高浮点精度的优化。
- -enable-no-infs-fp-math¶
启用假设没有 Inf 值的优化。
- -enable-no-nans-fp-math¶
启用假设没有 NAN 值的优化。
- -enable-unsafe-fp-math¶
导致 lli 启用可能降低浮点精度的优化。
- -soft-float¶
导致 lli 生成软件浮点库调用,而不是等效的硬件指令。
代码生成选项¶
- -code-model=模型¶
从以下选项中选择代码模型
default: Target default code model tiny: Tiny code model small: Small code model kernel: Kernel code model medium: Medium code model large: Large code model
- -disable-post-RA-scheduler¶
禁用寄存器分配后的调度。
- -disable-spill-fusing¶
禁用将溢出代码融合到指令中。
- -jit-enable-eh¶
异常处理应在即时编译器中启用。
- -join-liveintervals¶
合并复制(默认值为 true)。
- -nozero-initialized-in-bss¶
不要将零初始化的符号放入 BSS 部分。
- -pre-RA-sched=调度程序¶
可用的指令调度程序(寄存器分配之前)
=default: Best scheduler for the target =none: No scheduling: breadth first sequencing =simple: Simple two pass scheduling: minimize critical path and maximize processor utilization =simple-noitin: Simple two pass scheduling: Same as simple except using generic latency =list-burr: Bottom-up register reduction list scheduling =list-tdrr: Top-down register reduction list scheduling =list-td: Top-down list scheduler
- -regalloc=分配器¶
要使用的寄存器分配器(默认为 linearscan)
=bigblock: Big-block register allocator =linearscan: linear scan register allocator =local: local register allocator =simple: simple register allocator
- -relocation-model=模型¶
从以下选项中选择重定位模型
=default: Target default relocation model =static: Non-relocatable code =pic: Fully relocatable, position independent code =dynamic-no-pic: Relocatable external references, non-relocatable code
- -spiller¶
要使用的溢出器(默认为 local)
=simple: simple spiller =local: local spiller
- -x86-asm-syntax=语法¶
选择要从 X86 后端发出的代码样式
=att: Emit AT&T-style assembly =intel: Emit Intel-style assembly
退出状态¶
如果 lli 无法加载程序,它将退出并返回退出代码 1。否则,它将返回其执行的程序的退出代码。