| mlton(1) | General Commands Manual | mlton(1) |
نام (NAME)
mlton - کامپایلر کلبرنامه برای زبان برنامهنویسی استاندارد امال (SML)
خلاصه دستور (SYNOPSIS)
mlton [option ...] file.{c|mlb|o|sml} [file.{c|o|s|S} ...]
توضیحات (DESCRIPTION)
دستور MLton از خط فرمان به همراه مجموعهای از گزینهها و به دنبال آن یک نام فایل و فهرستی از فایلها برای کامپایل، اسمبلی و پیوند زدن اجرا میشود. سادهترین حالت، اجرای mlton foo.sml است، جایی که foo.sml حاوی یک برنامه معتبر SML است؛ در این حالت MLton برنامه را برای تولید یک فایل اجرایی با نام foo کامپایل میکند. از آنجا که MLton از کامپایل جداگانه (separate compilation) پشتیبانی نمیکند، برنامه باید کل برنامهای باشد که مایل به کامپایل آن هستید. با این حال، برنامه میتواند به امضاها (signatures) و ساختارهای تعریفشده در کتابخانه پایه (Basis Library) ارجاع دهد.
برنامههای بزرگتر، که چندین فایل را در بر میگیرند، میتوانند با سیستم ML Basis کامپایل شوند. در این حالت، mlton foo.mlb برنامه کامل SML را که توسط پایه foo.mlb شرح داده شده است کامپایل میکند، که ممکن است هم فایلهای SML و هم پایههای اضافی را مشخص نماید. برای جزئیات بیشتر به راهنمای MLton مراجعه کنید.
گزینههای زمان کامپایل MLton، نام فایل خروجی، میزان پرگویی پیامهای زمان کامپایل، و انجام یا عدم انجام برخی بهینهسازیها را کنترل میکنند. آنها همچنین میتوانند مشخص کنند چه فایلهای میانی ذخیره شوند و میتوانند فرایند کامپایل را زودهنگام در یکی از گذرهای میانی متوقف کنند؛ در این صورت میتوان با ارسال فایلهای تولیدشده به MLton کامپایل را از سر گرفت. ابزار MLton از پسوند فایل ورودی برای تعیین نوع برنامه ورودی استفاده میکند. پسوندهای ممکن عبارتند از: .c، .mlb، .o، .s و .sml.
بدون آرگومان، MLton شماره نسخه را چاپ کرده و خارج میشود. برای مشاهده پیام راهنمای نحوه استفاده، MLton را با یک سوییچ نامعتبر، مانند mlton -z اجرا کنید. در توضیحات زیر و در پیام نحوه استفاده، برای فلگهایی که چندین انتخاب را میپذیرند (مثلاً {true|false})، اولین مقدار ذکرشده مقدار پیشفرض است.
گزینههای زمان کامپایل (Compile-time options)
- -align n
- همترازی اشیا در حافظه را بر اساس مقدار مشخصشده (4 یا 8) تنظیم میکند. مقدار پیشفرض بسته به معماری متفاوت است.
- -as-opt option
- ارسال option به gcc هنگام کامپایل کردن کد اسمبلی. اگر مایلید گزینهای را به اسمبلر ارسال کنید، باید از نحو -Wa, در gcc استفاده کنید.
- -cc cc
- تعیین فایل اجرایی برای کامپایلر C. کامپایلر C همچنین برای کامپایل کد اسمبلی (فایلهای .s) به کد شیء (فایلهای .o) و پیوند دادن کد شیء به یک فایل اجرایی فراخوانی میشود.
- -cc-opt option
- ارسال option به gcc هنگام کامپایل کردن کد C.
- -codegen {native|x86|amd64|c|llvm}
- تولید کد شیء بومی (native) از طریق اسمبلی amd64، کد C، کد LLVM، یا اسمبلی x86. با گزینه -codegen native (-codegen amd64 یا -codegen x86)، ابزار MLton معمولاً سریعتر کامپایل میکند و کد بهتری تولید مینماید.
- -const 'name value'
- تنظیم
مقدار یک
ثابت در
زمان
کامپایل. در
ادامه
فهرستی از
ثابتهای
در دسترس،
مقادیر
پیشفرض
آنها و
آنچه کنترل
میکنند
آمده است.
Exn.keepHistory {false|true}
فعالسازی MLton.Exn.history. تنظیم این مقدار روی true هزینه کارایی به همراه دارد؛ هم در مصرف حافظه استثناها و هم در زمان اجرا، به دلیل کارهای اضافی که باید در هر بار ساخت، پرتاب (raise) و مدیریت (handle) استثنا انجام شود.
- -default-ann ann
- تعیین یادداشتهای پیشفرض ML Basis. برای مثال، -default-ann 'warnUnused true' باعث میشود هشدارهای متغیرهای استفادهنشده بهطور پیشفرض فعال شوند. مقادیر پیشفرض میتوانند توسط یک یادداشت در یک فایل ML Basis بازنویسی شوند.
- -default-type type
- تعیین انتساب پیشفرض برای یک نوع اولیه (primitive). برای مثال، -default-type word64 باعث میشود نوع سطحبالای word و ساختار سطحبالای Word در کتابخانه پایه به ترتیب برابر با Word64.word و Word64:WORD شوند. به همین ترتیب، -default-type intinf باعث میشود نوع سطحبالای int و ساختار سطحبالای Int در کتابخانه پایه به ترتیب برابر با IntInf.int و IntInf:INTEGER شوند.
- -disable-ann ann
- نادیده گرفتن یادداشت مشخصشده ML Basis در تمام فایلهای ML Basis. برای مثال، جهت مشاهده تمام هشدارهای انطباق (match) و استفادهنشده، با این گزینهها کامپایل کنید: -default-ann 'warnUnused true'، -disable-ann forceUsed، -disable-ann nonexhaustiveMatch، -disable-ann redundantMatch، و -disable-ann warnUnused.
- -export-header file
- نوشتن پیشنمونههای C (پروتوتیپها) در file برای تمامی توابع در برنامه که از SML به C صادر (export) شدهاند.
- -ieee-fp {false|true}
- باعث میشود مولد کد بومی x86 نسبت به پیروی از استاندارد ممیز شناور IEEE سختگیرانه عمل کند. بهطور پیشفرض، به دلیل هزینه کارایی، چنین نیست. این گزینه تنها همراه با -codegen x86 اثر دارد.
- -inline n
- تنظیم آستانه درونخطیسازی (inlining) مورداستفاده در بهینهساز. این آستانه معیاری تقریبی از اندازه کد یک رویه است. مقدار پیشفرض 320 است.
- -keep {g|o}
- ذخیره
فایلهای
میانی. اگر
هیچ
آرگومان -keep
داده نشود،
آنگاه تنها
فایل خروجی
ذخیره
میشود.
g فایلهای تولیدشده .c و .s که به gcc ارسال میشوند و فایلهای تولیدشده .ll که به llvm-as ارسال میشوند
o فایلهای شیء (.o)
- -link-opt option
- ارسال option به gcc هنگام پیوند زدن (linking). میتوانید از این گزینه برای مشخص کردن مسیرهای جستجوی کتابخانه، مانند -link-opt -Lpath، و کتابخانهها جهت پیوند، مانند -link-opt -lfoo، یا حتی هر دو بهطور همزمان، مانند -link-opt '-Lpath -lfoo' استفاده کنید. اگر مایلید گزینهای را به پیونددهنده ارسال کنید، باید از نحو -Wl, در gcc استفاده کنید؛ برای مثال: -link-opt '-Wl,--export-dynamic'.
- -llvm-as llvm-as
- مشخص کردن فایل اجرایی برای اسمبلر .ll به .bc در LLVM؛ میتواند برای انتخاب نسخه خاصی از ابزار استفاده شود (مانند -llvm-as llvm-as-14).
- -llvm-as-opt option
- ارسال option به llvm-as هنگام اسمبل کردن کد LLVM (.ll به .bc).
- -llvm-llc llc
- مشخص کردن فایل اجرایی برای کامپایلر سیستمی .bc به .o در LLVM؛ میتواند برای انتخاب نسخه خاصی از ابزار استفاده شود (مانند -llvm-llc llc-14).
- -llvm-llc-opt option
- ارسال option به llc هنگام کامپایل کردن کد LLVM (.bc به .o).
- -llvm-opt opt
- مشخص کردن فایل اجرایی برای بهینهساز .bc به .bc در LLVM؛ میتواند برای انتخاب نسخه خاصی از ابزار استفاده شود (مانند -llvm-opt opt-14).
- -llvm-opt-opt option
- ارسال option به opt هنگام بهینهسازی کد LLVM (.bc به .bc).
- -mlb-path-map file
- استفاده از file به عنوان نگاشت مسیر ML Basis برای تعریف متغیرهای مسیر اضافی MLB. استفاده مکرر از -mlb-path-map و -mlb-path-var مجاز است، و تعاریف متغیر در نگاشتهای مسیر متأخرتر نسبت به قبلیها اولویت دارند.
- -mlb-path-var 'name value'
- تعریف یک متغیر مسیر اضافی MLB. استفاده مکرر از -mlb-path-map و -mlb-path-var مجاز است، و تعاریف متغیر در نگاشتهای مسیر متأخرتر نسبت به قبلیها اولویت دارند.
- -output file
- مشخص کردن نام فایل خروجی نهایی. نام پیشفرض، همان نام فایل ورودی است که پسوند آن حذف شده و یک پسوند مناسب (که ممکن است خالی باشد) اضافه شده است.
- -profile {no|alloc|count|time}
- تولید یک فایل اجرایی که دادههای پروفایلینگ (سنجش کارایی) را جمعآوری میکند. هنگامی که چنین فایل اجرایی اجرا شود، یک فایل mlmon.out تولید خواهد کرد. صفحه راهنمای mlprof نحوه استخراج اطلاعات از این فایل را شرح میدهد.
- -profile-branch {false|true}
- در صورت درست (true) بودن، پروفایلر دادههای کارایی را بهطور جداگانه برای هر شاخه از تعریف یک تابع، عبارت case و عبارت if جمعآوری میکند.
- -profile-stack {false|true}
- در صورت درست (true) بودن، پروفایلر دادههای کارایی را برای تمام توابع موجود در پشته جمعآوری میکند، نه فقط تابعی که در حال حاضر اجرا میشود.
- -profile-val {false|true}
- در صورت درست (true) بودن، پروفایلر دادههای کارایی را بهطور جداگانه برای هر اعلان (توسعهپذیر) val جمعآوری میکند.
- -runtime arg
- ارسال
آرگومان به
سیستم زمان
اجرا از
طریق @MLton. این
آرگومان
پیش از سایر
سوییچهای
خط فرمان @MLton
پردازش
خواهد شد.
استفاده
مکرر از -runtime
مجاز است و
تمام
آرگومانها
را به ترتیب
ارسال
خواهد کرد.
اگر یک
سوییچ زمان
اجرا بیش از
یک بار رخ
دهد، آخرین
تنظیم
اثرگذار
خواهد بود.
نیازی به
ارائه @MLton
آغازین یا
-- پایانی
نیست؛ این
موارد
بهطور
خودکار
ارائه
خواهند شد.
یک آرگومان برای -runtime ممکن است شامل فاصله خالی باشد، که باعث میشود آرگومان توسط زمان اجرا به عنوان توالیای از کلمات تلقی شود. برای مثال، خط فرمان:
mlton -runtime 'ram-slop 0.4' foo.sml
باعث میشود foo طوری اجرا شود که گویی به این صورت فراخوانی شده است:
foo @MLton ram-slop 0.4 --
یک فایل اجرایی ایجادشده با -runtime stop هیچیک از آرگومانهای @MLton را پردازش نمیکند. این ویژگی برای ایجاد یک فایل اجرایی مفید است، مانند echo، که باید با @MLton مانند هر آرگومان خط فرمان دیگری برخورد کند.
% mlton -runtime stop echo.sml
% echo @MLton --
@MLton --
- -show-basis file
- چاپ ساختاریافته و خوانای (pretty print) پایه تعریفشده توسط برنامه ورودی در file.
- -show-def-use file
- خروجی دادن اطلاعات تعریف-استفاده (def-use) در file. هر شناسه تعریفشده در یک خط ظاهر میشود، و در خطوط بعدی موقعیت هر بار استفاده از آن میآید.
- -stop {f|g|o|tc}
- مشخص کردن
زمان توقف.
f فهرست فایلها روی خروجی استاندارد (تنها زمانی معنادار است که ورودی foo.mlb باشد)
g فایلهای تولیدشده .c و .s
o فایلهای شیء (.o)
tc پس از بررسی نوع (type checking)
اگر با -stop g یا -stop o کامپایل کنید، میتوانید کامپایل را با اجرای MLton روی فایلهای تولیدشده .c و .s یا .o از سر بگیرید. - -target {self|...}
- تولید یک فایل اجرایی که روی بستر مشخصشده اجرا میشود. مقدار پیشفرض self است، به این معنی که برای همان ماشینی که MLton روی آن در حال اجرا است کامپایل کند. برای استفاده از هر هدف دیگری، ابتدا باید یک کامپایلر چندسکویی (cross compiler) نصب کنید. برای جزئیات به راهنمای MLton مراجعه کنید.
- -target-as-opt target option
- مشابه -as-opt، این گزینه option را هنگام اسمبلی به gcc ارسال میکند، با این تفاوت که تنها زمانی option را ارسال میکند که معماری یا سیستمعامل مقصد، target باشد.
- -target-cc-opt target option
- مشابه -cc-opt، این گزینه option را هنگام کامپایل کردن کد C به gcc ارسال میکند، با این تفاوت که تنها زمانی option را ارسال میکند که معماری یا سیستمعامل مقصد، target باشد.
- -target-link-opt target option
- مشابه -link-opt، این گزینه option را هنگام پیوند زدن به gcc ارسال میکند، با این تفاوت که تنها زمانی option را ارسال میکند که معماری یا سیستمعامل مقصد، target باشد.
- -verbose {0|1|2|3}
- میزان
پرگویی
درباره
گذرهایی که
در حال اجرا
هستند.
پیشفرض 0
است.
0 بدون خروجی (ساکت)
1 فراخوانیهای کامپایلر، اسمبلر و پیونددهنده
2 1، به همراه گذرهای میانی کامپایلر
3 2، به همراه اندازه برخی از ساختارهای داده
گزینههای سیستم زمان اجرا (Runtime system options)
فایلهای
اجرایی
تولیدشده
توسط MLton
آرگومانهای
خط فرمانی
را
میپذیرند
که سیستم
زمان اجرا
را کنترل
میکنند.
این
آرگومانها
اختیاری
هستند و پیش
از
آرگومانهای
معمول فایل
اجرایی
میآیند.
برای
استفاده از
این
گزینهها،
نخستین
آرگومان
فایل
اجرایی
باید @MLton
باشد. سپس
آرگومانهای
اختیاری به
دنبال آن
میآیند،
باید با --
خاتمه
یابند، و به
دنبال
آنها هر
آرگومانی
برای
برنامه
قرار
میگیرد.
آرگومانهای
اختیاری از
طریق CommandLine.arguments
در دسترس
برنامه SML
قرار
نمیگیرند.
برای مثال،
یک
فراخوانی
معتبر برای
hello-world به این
صورت است:
hello-world @MLton gc-summary fixed-heap 10k -- a b c
در مثال فوق:
CommandLine.arguments () = ["a", "b",
"c"].
وجود
توالیای
از
آرگومانهای
@MLton مجاز
است، مانند:
hello-world @MLton gc-summary -- @MLton fixed-heap 10k -- a b c
گزینههای
زمان اجرا
همچنین
میتوانند
MLton را کنترل
کنند،
مانند:
mlton @MLton fixed-heap 0.5g -- foo.sml
- fixed-heap x{k|K|m|M|g|G}
- استفاده از
هیپ (heap) با
اندازه
ثابت به
مقدار x، که
در آن x یک
عدد حقیقی
است و حرف
انتهایی
واحد آن را
نشان
میدهد.
k یا K 1024
m یا M 1,048,576
g یا G 1,073,741,824
مقدار 0 به معنای استفاده از تقریباً تمام RAM موجود روی دستگاه است.اندازه هیپ استفادهشده توسط fixed-heap شامل تمام حافظه تخصیصیافته توسط کد SML است، از جمله حافظه برای پشته (یا پشتهها، در صورت وجود چندین ریسه). با این حال، شامل هیچ حافظهای که برای خود کد یا حافظه استفادهشده توسط متغیرهای سراسری C، پشته C یا malloc به کار رفته است نمیشود.
- gc-messages
- چاپ پیام در شروع و پایان هر دوره جمعآوری زباله (garbage collection).
- gc-summary
- چاپ خلاصهای از آمارهای جمعآوری زباله پس از پایان برنامه.
- gc-summary-file file
- چاپ خلاصهای از آمارهای جمعآوری زباله پس از پایان برنامه در فایل مشخصشده توسط file.
- load-world world
- راهاندازی مجدد محاسبات با فایل مشخصشده توسط world، که باید از طریق فراخوانی MLton.World.save توسط همان فایل اجرایی ایجاد شده باشد. برای جزئیات به راهنمای MLton مراجعه کنید.
- max-heap x{k|K|m|M|g|G}
- اجرای محاسبات با هیپی که اندازه آن بهطور خودکار تغییر میکند و هرگز بزرگتر از x نمیشود؛ که در آن x یک عدد حقیقی است و حرف انتهایی مانند fixed-heap واحد را نشان میدهد. اندازه هیپ برای max-heap نیز مانند fixed-heap محاسبه میشود.
- may-page-heap {false|true}
- فعالسازی صفحهبندی هیپ روی دیسک در صورت ناتوانی در افزایش اندازه هیپ به مقدار دلخواه.
- no-load-world
- غیرفعالسازی load-world. این گزینه میتواند از طریق -runtime no-load-world به عنوان آرگومانی به کامپایلر ارسال شود تا فایلهای اجرایی تولید کند که world را بارگیری نخواهند کرد. این ویژگی ممکن است برای اطمینان از اینکه فایلهای اجرایی با بیت set-uid یک world نامشخص را بارگیری نمیکنند مفید باشد.
- ram-slop x
- ضرب کردن x در مقدار حافظه RAM دستگاه برای به دست آوردن مقداری از RAM که سیستم زمان اجرا مجاز به استفاده از آن میداند. بهطور معمول x کمتر از 1 است و برای در نظر گرفتن فضای اشغالشده توسط سایر برنامههای در حال اجرا روی همان دستگاه استفاده میشود.
- stop
- باعث میشود سیستم زمان اجرا به محض رسیدن به -- بعدی، پردازش آرگومانهای @MLton را متوقف کند. این گزینه میتواند از طریق -runtime stop به عنوان آرگومانی به کامپایلر ارسال شود تا فایلهای اجرایی بسازد که هیچ آرگومان @MLton را پردازش نکنند.
عیبیابی (DIAGNOSTICS)
پیامهای خطای نوع در MLton در قالبی مناسب برای پردازش توسط Emacs نیستند. برای جزئیات درباره نحوه رفع این مورد، پیوند زیر را ببینید: http://mlton.org/Emacs
همچنین ببینید (SEE ALSO)
mlprof(1) و راهنمای MLton.
| December 30, 2024 |