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=target triple¶
使用指定的字串覆蓋輸入位元碼檔案中指定的目標三元組。如果您選擇與當前系統不相容的架構,則可能會導致崩潰。
- -march=arch¶
指定要為其生成組譯的架構,覆蓋位元碼檔案中編碼的目標。如需有效架構列表,請參閱 llc -help 的輸出。默認情況下,這是從目標三元組推斷出來的,或自動檢測到當前架構。
- -mcpu=cpuname¶
指定當前架構中要為其生成代碼的特定晶片。默認情況下,這是從目標三元組推斷出來的,並自動檢測到當前架構。如需可用 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=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=scheduler¶
可用的指令排程器(在暫存器配置之前)
=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=allocator¶
要使用的暫存器配置器(預設值 = linearscan)
=bigblock: Big-block register allocator =linearscan: linear scan register allocator =local: local register allocator =simple: simple register allocator
- -relocation-model=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=syntax¶
選擇從 X86 後端發出的程式碼風格
=att: Emit AT&T-style assembly =intel: Emit Intel-style assembly
結束狀態¶
如果 lli 無法載入程式,它將會以結束代碼 1 結束。否則,它將會返回它執行的程式的結束代碼。