| LLC(1) | LLVM | LLC(1) |
نام (NAME)
llc - کامپایلر ایستای LLVM
خلاصه دستور (SYNOPSIS)
llc [options] [filename]
توضیحات (DESCRIPTION)
دستور llc ورودیهای منبع LLVM را برای یک معماری مشخص به زبان اسمبلی کامپایل میکند. سپس خروجی زبان اسمبلی میتواند از طریق یک اسمبلر و پیونددهندهٔ بومی برای تولید یک فایل اجرایی بومی مورد استفاده قرار گیرد.
انتخاب معماری برای کد اسمبلی خروجی بهطور خودکار از روی فایل ورودی تعیین میشود، مگر اینکه گزینهٔ -march برای لغو مقدار پیشفرض به کار گرفته شود.
گزینهها (OPTIONS)
اگر filename برابر با "-" باشد یا وارد نشود، llc از ورودی استاندارد میخواند. در غیر این صورت، از filename خوانده خواهد شد. ورودیها میتوانند در قالب زبان اسمبلی LLVM (.ll) یا قالب بیتکد LLVM (.bc) باشند.
در صورتی که گزینهٔ -o مشخص نشده باشد و ورودی از ورودی استاندارد دریافت شود، llc خروجی خود را به خروجی استاندارد ارسال خواهد کرد. اگر گزینهٔ -o مقدار "-" را مشخص کند، خروجی نیز به خروجی استاندارد ارسال میشود.
اگر هیچ گزینهٔ -o مشخص نشده باشد و فایلی به غیر از "-" به عنوان ورودی داده شود، llc نام فایل خروجی را با در نظر گرفتن نام فایل ورودی، حذف هرگونه پسوند موجود .bc و افزودن پسوند .s ایجاد میکند.
سایر گزینههای llc در زیر شرح داده شدهاند.
گزینههای کاربر نهایی (End-user Options)
- -help
- چاپ خلاصهای از گزینههای خط فرمان.
- -M
- ارسال گزینههای مخصوص هدف برای InstPrinter. به گزینهٔ -M در llvm-objdump(1) <llvm-objdump.html> مراجعه کنید.
- -o <filename>
- استفاده از <filename> به عنوان نام فایل خروجی. برای جزئیات بیشتر به خلاصهٔ بالا مراجعه کنید.
- -O=uint
- تولید کد در سطوح بهینهسازی مختلف. این سطوح متناظر با سطوح بهینهسازی -O0، -O1، -O2 و -O3 هستند که توسط clang استفاده میشوند.
- -mtriple=<target triple>
- جایگزینی target triple مشخصشده در فایل ورودی با رشتهٔ تعیینشده.
- -march=<arch>
- تعیین معماری مورد نظر برای تولید کد اسمبلی، با اولویت بر هدف کدگذاریشده در فایل ورودی. برای مشاهدهٔ فهرستی از معماریهای معتبر، خروجی llc -help را ببینید. بهطور پیشفرض این مقدار از target triple استنباط شده یا بهطور خودکار روی معماری جاری تشخیص داده میشود.
- -mcpu=<cpuname>
- مشخص کردن یک تراشهٔ خاص در معماری جاری برای تولید کد. بهطور پیشفرض این مقدار از target triple استنباط شده و بهصورت خودکار روی معماری جاری تشخیص داده میشود. برای مشاهدهٔ فهرستی از پردازندههای دردسترس، استفاده کنید از:
llvm-as < /dev/null | llc -march=xyz -mcpu=help
- -filetype=<output file type>
- تعیین نوع
خروجی که llc
باید تولید
کند.
گزینهها
عبارتند از:
asm برای
اسمبلی
متنی ('.s')، obj
برای
فایلهای
شیء بومی ('.o')
و null برای
عدم تولید
خروجی (جهت
آزمایش
کارایی).
توجه داشته باشید که همهٔ اهداف از تمامی گزینهها پشتیبانی نمیکنند.
- -mattr=a1,+a2,-a3,...
- بازنویسی یا کنترل ویژگیهای خاص هدف، مانند فعال یا غیرفعال بودن عملیات SIMD. مجموعه ویژگیهای پیشفرض توسط پردازندهٔ فعلی تنظیم میشود. برای دیدن فهرستی از ویژگیهای دردسترس، استفاده کنید از:
llvm-as < /dev/null | llc -march=xyz -mattr=help
- --frame-pointer
- مشخص کردن اثر بهینهسازی حذف اشارهگر فریم (all، non-leaf، none).
- --disable-excess-fp-precision
- غیرفعال کردن بهینهسازیهایی که ممکن است دقت اضافی برای ممیز شناور تولید کنند. توجه داشته باشید که این گزینه میتواند سرعت اجرای کد را در برخی سیستمها (مانند X86) به شدت کاهش دهد.
- --enable-no-infs-fp-math
- فعالسازی بهینهسازیهایی که نبود مقادیر بینهایت (Inf) را فرض میکنند.
- --enable-no-nans-fp-math
- فعالسازی بهینهسازیهایی که نبود مقادیر ناعدد (NAN) را فرض میکنند.
- --enable-no-signed-zeros-fp-math
- فعالسازی بهینهسازیهای ریاضی ممیز شناور که علامت صفر (0) را بیاهمیت فرض میکنند.
- --enable-no-trapping-fp-math
- فعالسازی تنظیم صفت ساخت استثناهای ممیز شناور جهت عدم استفاده از استثناها.
- --stats
- چاپ آمارهای ثبتشده توسط مراحل (passes) تولید کد.
- --save-stats, --save-stats=cwd, --save-stats=obj
- ذخیرهٔ آمارهای LLVM در یک فایل در دایرکتوری جاری (--save-stats/"--save-stats=cwd") یا دایرکتوری فایل خروجی ("--save-stats=obj") در قالب JSON.
- --time-passes
- ثبت مدت زمان مورد نیاز برای هر مرحله و چاپ گزارش در خطای استاندارد.
- --load=<dso_path>
- بارگذاری پویای dso_path (مسیری به یک شیء مشترک پویا) که یک هدف LLVM را پیادهسازی میکند. این کار امکان استفاده از نام هدف را با گزینهٔ -march فراهم میسازد تا بتوان برای آن هدف کد تولید کرد.
- -meabi=[default|gnu|4|5]
- تعیین نسخهٔ EABI جهت مطابقت. نسخههای معتبر EABI عبارتند از gnu، 4 و 5. مقدار پیشفرض (default) به triple بستگی دارد.
- -stack-size-section
- تولید بخش .stack_sizes که حاوی فرادادههای اندازهٔ پشته است. این بخش شامل آرایهای از جفتهای مقادیر نماد تابع (اندازهٔ اشارهگر) و اندازههای پشته (LEB128 بدون علامت) است. مقادیر اندازهٔ پشته تنها شامل فضای تخصیصیافته در مقدمهٔ تابع (prologue) هستند. توابعی با تخصیص پشتهٔ پویا در این بخش گنجانده نمیشوند.
- -remarks-section
- تولید بخش __remarks (در MachO) که حاوی فرادادههای مربوط به هشدارهای تشخیصی (remark diagnostics) است.
گزینههای تنظیم/پیکربندی (Tuning/Configuration Options)
- --print-after-isel
- چاپ کد ماشین تولیدشده پس از انتخاب دستورالعمل (instruction selection) (کاربردی برای اشکالزدایی).
- --regalloc=<allocator>
- مشخص کردن
تخصیصدهندهٔ
ثبات (register allocator)
برای
استفاده.
تخصیصدهندههای
معتبر ثبات
عبارتند از:
basic
fast
greedy
pbqp
- --spiller=<spiller>
- مشخص کردن
سرریزکننده
(spiller) برای
تخصیصدهندههای
ثباتی که از
آن
پشتیبانی
میکنند. در
حال حاضر
این گزینه
فقط توسط
تخصیصدهندهٔ
ثبات
پیمایش خطی
(linear scan) استفاده
میشود.
مقدار
پیشفرض spiller
برابر با local
است. مقادیر
معتبر
عبارتند از:
simple
local
گزینههای ویژهٔ Intel IA-32 (Intel IA-32-specific Options)
- --x86-asm-syntax=[att|intel]
- مشخص کردن خروجی کد اسمبلی بر اساس ساختار نحوی AT&T (پیشفرض) یا ساختار نحوی Intel.
وضعیت خروج (EXIT STATUS)
در صورت موفقیت، llc با مقدار 0 خارج میشود. در غیر این صورت، اگر خطایی رخ دهد، با یک مقدار غیرصفر خارج خواهد شد.
همچنین ببینید (SEE ALSO)
lli(1) <lli.html>
نویسندگان (AUTHORS)
نگهداریشده توسط تیم LLVM (https://llvm.org).
کپیرایت و تکثیر (COPYRIGHT)
2003-2026، پروژهٔ LLVM
| 2026-07-15 | 22 |