lli - 直接從 LLVM 位元碼執行程式

概要

lli [選項] [檔案名稱] [程式引數]

描述

lli 直接以 LLVM 位元碼格式執行程式。它接受 LLVM 位元碼格式的程式,並使用即時編譯器或直譯器來執行它。

lli 不是模擬器。它不會執行不同架構的 IR,並且只能為 host 架構進行直譯(或 JIT 編譯)。

JIT 編譯器接受與其他工具(如 llc)相同的引數,但它們不一定適用於直譯器。

如果未指定 filename,則 lli 會從標準輸入讀取程式的 LLVM 位元碼。

在命令列上指定的選用 args 會作為引數傳遞給程式。

通用選項

-fake-argv0=executable

覆寫傳遞到執行中程式的 argv[0] 值。

-force-interpreter={false,true}

如果設定為 true,即使此架構有可用的即時編譯器,仍使用直譯器。預設為 false。

-help

列印命令列選項的摘要。

-load=pluginfilename

使 lli 載入名為 pluginfilename 的外掛程式(共享物件)並將其用於最佳化。

-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 退出。否則,它將返回它執行的程式的結束代碼。

參見

llc(1)