| LLI(1) | LLVM | LLI(1) |
نام (NAME)
lli - اجرای مستقیم برنامهها از بیتکد LLVM
خلاصه دستور (SYNOPSIS)
lli [options] [filename] [program args]
توضیحات (DESCRIPTION)
lli برنامهها را مستقیماً در قالب بیتکد LLVM اجرا میکند. این ابزار برنامهای در قالب بیتکد LLVM را دریافت کرده و آن را با استفاده از یک کامپایلر درجا (just-in-time) یا یک مفسر (interpreter) اجرا مینماید.
lli یک شبیهساز نیست. این ابزار IR معماریهای متفاوت را اجرا نمیکند و تنها میتواند برای معماری میزبان عمل تفسیر (یا کامپایل JIT) را انجام دهد.
کامپایلر JIT همان آرگومانهای ابزارهای دیگر مانند llc را میپذیرد، اما این آرگومانها لزوماً برای مفسر کار نمیکنند.
اگر filename مشخص نشده باشد، lli بیتکد LLVM برنامه را از ورودی استاندارد میخواند.
آرگومانهای اختیاری args که در خط فرمان مشخص میشوند، به عنوان آرگومان به برنامه ارسال میگردند.
گزینههای عمومی (GENERAL OPTIONS)
- -fake-argv0=executable
- مقدار argv[0] ارسالشده به برنامهٔ در حال اجرا را بازنویسی میکند.
- -force-interpreter={false,true}
- اگر روی true تنظیم شود، حتی در صورت در دسترس بودن کامپایلر درجا برای این معماری، از مفسر استفاده میکند. پیشفرض false است.
- -help
- خلاصهای از گزینههای خط فرمان را چاپ میکند.
- -load=pluginfilename
- باعث میشود lli افزونهٔ (shared object) مشخصشده با pluginfilename را بارگذاری کرده و از آن برای بهینهسازی استفاده کند.
- -stats
- آمارهای مربوط به گذرهای (passes) تولید کد را چاپ میکند. در حال حاضر، این گزینه تنها برای کامپایلر درجا معنیدار است.
- -time-passes
- مدت زمان لازم برای هر گذر تولید کد را ثبت کرده و آن را در خروجی خطای استاندارد چاپ میکند.
- -version
- نسخهٔ lli را چاپ کرده و بدون انجام هیچ کار دیگری خارج میشود.
گزینههای هدف (TARGET OPTIONS)
- -mtriple=target triple
- سهگانهٔ هدف (target triple) مشخصشده در فایل بیتکد ورودی را با رشتهٔ مشخصشده بازنویسی میکند. اگر معماریای را انتخاب کنید که با سیستم فعلی سازگار نباشد، این عمل ممکن است منجر به فروپاشی برنامه (crash) شود.
- -march=arch
- معماری مورد نظر برای تولید اسمبلی را مشخص میکند و هدف تعیینشده در فایل بیتکد را نادیده میگیرد. برای دیدن فهرستی از معماریهای معتبر خروجی llc -help را مشاهده کنید. بهطور پیشفرض، این مقدار از سهگانهٔ هدف استنباط شده یا بهصورت خودکار بر اساس معماری فعلی شناسایی میشود.
- -mcpu=cpuname
- تراشهٔ خاصی در معماری فعلی را برای تولید کد مشخص میکند. بهطور پیشفرض این مقدار از سهگانهٔ هدف استنباط شده و بهصورت خودکار بر اساس معماری فعلی شناسایی میشود. برای فهرستی از پردازندههای در دسترس، از دستور زیر استفاده کنید: llvm-as < /dev/null | llc -march=xyz -mcpu=help
- -mattr=a1,+a2,-a3,...
- ویژگیهای خاصی از هدف را بازنویسی یا کنترل میکند؛ مانند فعال یا غیرفعال بودن عملیات SIMD. مجموعه پیشفرض ویژگیها توسط پردازندهٔ فعلی تعیین میشود. برای فهرستی از ویژگیهای موجود، از دستور زیر استفاده کنید: llvm-as < /dev/null | llc -march=xyz -mattr=help
گزینههای ممیز شناور (FLOATING POINT OPTIONS)
- -disable-excess-fp-precision
- بهینهسازیهایی که ممکن است دقت ممیز شناور را افزایش دهند، غیرفعال میکند.
- -enable-no-infs-fp-math
- بهینهسازیهایی را فعال میکند که فرض میکنند هیچ مقدار بینهایتی (Inf) وجود ندارد.
- -enable-no-nans-fp-math
- بهینهسازیهایی را فعال میکند که فرض میکنند هیچ مقدار تعریفنشدهای (NAN) وجود ندارد.
- -soft-float
- باعث میشود lli بهجای دستورالعملهای سختافزاری معادل، فراخوانیهای کتابخانهای ممیز شناور نرمافزاری تولید کند.
گزینههای تولید کد (CODE GENERATION OPTIONS)
- -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
- ادغام کد سرریز (spill code) در دستورالعملها را غیرفعال میکند.
- -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
- سرریزکننده (spiller) برای استفاده (پیشفرض=local)
=simple: simple spiller =local: local spiller
- -x86-asm-syntax=syntax
- سبک کد خروجی از backend معماری X86 را انتخاب میکند:
=att: Emit AT&T-style assembly =intel: Emit Intel-style assembly
وضعیت خروج (EXIT STATUS)
اگر lli در بارگذاری برنامه ناموفق باشد، با کد وضعیت 1 خارج میشود. در غیر این صورت، کد وضعیت خروج برنامهای را که اجرا کرده است برمیگرداند.
همچنین ببینید (SEE ALSO)
llc(1) <llc.html>
نویسندگان (AUTHORS)
نگهداریشده توسط تیم LLVM (https://llvm.org).
کپیرایت و تکثیر (COPYRIGHT)
2003-2026, LLVM Project
| 2026-07-15 | 22 |