LLI(1) LLVM LLI(1)

lli - اجرای مستقیم برنامه‌ها از بیت‌کد LLVM

lli [options] [filename] [program args]

lli برنامه‌ها را مستقیماً در قالب بیت‌کد LLVM اجرا می‌کند. این ابزار برنامه‌ای در قالب بیت‌کد LLVM را دریافت کرده و آن را با استفاده از یک کامپایلر درجا (just-in-time) یا یک مفسر (interpreter) اجرا می‌نماید.

lli یک شبیه‌ساز نیست. این ابزار IR معماری‌های متفاوت را اجرا نمی‌کند و تنها می‌تواند برای معماری میزبان عمل تفسیر (یا کامپایل JIT) را انجام دهد.

کامپایلر JIT همان آرگومان‌های ابزارهای دیگر مانند llc را می‌پذیرد، اما این آرگومان‌ها لزوماً برای مفسر کار نمی‌کنند.

اگر filename مشخص نشده باشد، lli بیت‌کد LLVM برنامه را از ورودی استاندارد می‌خواند.

آرگومان‌های اختیاری args که در خط فرمان مشخص می‌شوند، به عنوان آرگومان به برنامه ارسال می‌گردند.

مقدار argv[0] ارسال‌شده به برنامهٔ در حال اجرا را بازنویسی می‌کند.
اگر روی true تنظیم شود، حتی در صورت در دسترس بودن کامپایلر درجا برای این معماری، از مفسر استفاده می‌کند. پیش‌فرض false است.
خلاصه‌ای از گزینه‌های خط فرمان را چاپ می‌کند.
باعث می‌شود lli افزونهٔ (shared object) مشخص‌شده با pluginfilename را بارگذاری کرده و از آن برای بهینه‌سازی استفاده کند.
آمارهای مربوط به گذرهای (passes) تولید کد را چاپ می‌کند. در حال حاضر، این گزینه تنها برای کامپایلر درجا معنی‌دار است.
مدت زمان لازم برای هر گذر تولید کد را ثبت کرده و آن را در خروجی خطای استاندارد چاپ می‌کند.
نسخهٔ lli را چاپ کرده و بدون انجام هیچ کار دیگری خارج می‌شود.

سه‌گانهٔ هدف (target triple) مشخص‌شده در فایل بیت‌کد ورودی را با رشتهٔ مشخص‌شده بازنویسی می‌کند. اگر معماری‌ای را انتخاب کنید که با سیستم فعلی سازگار نباشد، این عمل ممکن است منجر به فروپاشی برنامه (crash) شود.
معماری مورد نظر برای تولید اسمبلی را مشخص می‌کند و هدف تعیین‌شده در فایل بیت‌کد را نادیده می‌گیرد. برای دیدن فهرستی از معماری‌های معتبر خروجی llc -help را مشاهده کنید. به‌طور پیش‌فرض، این مقدار از سه‌گانهٔ هدف استنباط شده یا به‌صورت خودکار بر اساس معماری فعلی شناسایی می‌شود.
تراشهٔ خاصی در معماری فعلی را برای تولید کد مشخص می‌کند. به‌طور پیش‌فرض این مقدار از سه‌گانهٔ هدف استنباط شده و به‌صورت خودکار بر اساس معماری فعلی شناسایی می‌شود. برای فهرستی از پردازنده‌های در دسترس، از دستور زیر استفاده کنید: llvm-as < /dev/null | llc -march=xyz -mcpu=help
ویژگی‌های خاصی از هدف را بازنویسی یا کنترل می‌کند؛ مانند فعال یا غیرفعال بودن عملیات SIMD. مجموعه پیش‌فرض ویژگی‌ها توسط پردازندهٔ فعلی تعیین می‌شود. برای فهرستی از ویژگی‌های موجود، از دستور زیر استفاده کنید: llvm-as < /dev/null | llc -march=xyz -mattr=help

بهینه‌سازی‌هایی که ممکن است دقت ممیز شناور را افزایش دهند، غیرفعال می‌کند.
بهینه‌سازی‌هایی را فعال می‌کند که فرض می‌کنند هیچ مقدار بی‌نهایتی (Inf) وجود ندارد.
بهینه‌سازی‌هایی را فعال می‌کند که فرض می‌کنند هیچ مقدار تعریف‌نشده‌ای (NAN) وجود ندارد.
باعث می‌شود lli به‌جای دستورالعمل‌های سخت‌افزاری معادل، فراخوانی‌های کتابخانه‌ای ممیز شناور نرم‌افزاری تولید کند.

مدل کد را از موارد زیر انتخاب می‌کند:
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
زمان‌بندی پس از تخصیص ثبات را غیرفعال می‌کند.
ادغام کد سرریز (spill code) در دستورالعمل‌ها را غیرفعال می‌کند.
مدیریت استثناها در کامپایلر درجا فعال می‌شود.
ادغام رونوشت‌ها (پیش‌فرض=true).
نمادهای مقداردهی‌شده با صفر را در بخش BSS قرار نمی‌دهد.
زمان‌بندهای دستورالعمل موجود (پیش از تخصیص ثبات):
=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
تخصیص‌دهندهٔ ثبات برای استفاده (پیش‌فرض=linearscan)
=bigblock: Big-block register allocator
=linearscan: linear scan register allocator
=local: local register allocator
=simple: simple register allocator
مدل بازتخصیص را از موارد زیر انتخاب می‌کند:
=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
سبک کد خروجی از backend معماری X86 را انتخاب می‌کند:
=att: Emit AT&T-style assembly
=intel: Emit Intel-style assembly

اگر lli در بارگذاری برنامه ناموفق باشد، با کد وضعیت 1 خارج می‌شود. در غیر این صورت، کد وضعیت خروج برنامه‌ای را که اجرا کرده است برمی‌گرداند.

llc(1) <llc.html>

نگهداری‌شده توسط تیم LLVM (https://llvm.org).

2003-2026, LLVM Project

2026-07-15 22