این دستور stalin است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.
برنامه:
نام
stalin - یک کامپایلر بهینه سازی جهانی برای Scheme
خلاصه
استالین [-version]
[-I شامل-دایرکتوری]*
[[-s|-x|-q|-t]]
[[-با همه نمادها به عنوان خارجی رفتار کنید|
-با-همه-نمادها-به عنوان-خارجی- رفتار نکنید]]
[[-index-allocated-string-types-by-expression|
-do-not-index-allocated-string-types-by-expression]]
[[-شاخص-ثابت-ساختار-انواع-به-اسلات-انواع|
-انواع-انواع-ساختار-ثابت-براسل-انواع-شاخه-نماسازی نکنید]]
[[-Index-constant-structure-types-by-expression|
-نوع-انواع-ساختار-با-شاخص-ثابت-نماسازی نکنید]]
[[-شاخص-تخصیص-ساختار-انواع-به-اسلات-انواع|
-نوع-انواع-شاخص-شاخص-تخصیص-سازه-به-اسلات-انواع]]
[[-شاخص-تخصیص-ساختار-انواع-بر- بیان|
-نوع-انواع-شاخص-شاخص-تخصیص-ساختار-به-واسطه-نشود]]
[[-شاخص-ثابت-سر-بردار-انواع-بردار-نوع|
-بردار-انواع-بردار-نوع-هد-هد-ثابت-نمایه نکنید-نوع-المان-]]
[[-شاخص-ثابت-سر-بردار-انواع-توسط بیان|
-انواع-بردار-بردار-سرعت-ثابت-شاخص-با-شاخص-نباید]]
[[-شاخص-تخصیص-سرفصل-بردار-انواع-به-نوع عنصر|
-نوع-انواع-بردار-بردار-نا-شاخص-تخصیص-تخصیص-سرفصل-بردار-به-نوع]]
[[-شاخص-تخصیص-سرفصل-بردار-انواع-توسط بیان|
-نوع-بردار-بردار-انواع-شاخص-تخصیص-سرفصل-بردار-برابر-شاخص]]
[[-index-constant-nonheaded-vector-types-by-element-types|
-نوع-بردار-نوع-بردار-نوع-بردار-ثابت-غیر-هدف-ایندکس نکنید]]
[[-index-constant-nonheaded-vector-types-by-expression|
-نوع-بردار-نوع-بردار-ثابت-بدون سر-بردار-شاخص-نخ]]
[[-شاخص-تخصیص-بدون سر-بردار-انواع-به-نوع عنصر|
-نوع-بردار-نوع-بردار-نا-شاخص-تخصیص-بدون سر]]
[[-شاخص-تخصیص-بدون سر-بردار-انواع-توسط بیان|
-نوع-بردار-نوع-بردار-شاخص-تخصیص-بی سر]]
[[-بدون-کلون-اندازه-محدودیت|
-clone-size-limit تعداد عبارات]]
[-تقسیم-حتی-اگر-بدون گشاد شدن]
[[-تبدیل کامل به CPS|
-بدون فرار-ادامه]]
[-دو]
[-Ob] [اوم] [-بر] [-یا] [-اوت]
[-d0] [-d1] [-d2] [-d3] [-d4] [-d5] [-d6] [-d7]
[-بسته شدن-تبدیل-آمار]
[دی سی] [-dC] [-dh] [-dg] [- dh]
[-d]
[-معماری نام]
[[-خط پایه|
-مرسوم|
-سبک وزن]]
[[-فوری-مسطح|
-غیر مستقیم - مسطح|
-نمایش فوری|
-نمایش غیر مستقیم|
-مرتبط]]
[[-تراز کردن رشته ها|رشته ها -do-not-align]]
[-نه] [-df] [-dG] [-du] [-dI] [-درد] [-dP]
[-ds] [-dS] [-Tmk]
[-بهینه سازی بدون دم تماس]
[-db] [-c] [-k]
[-سی سی کامپایلر سی]
[-پلیس C-compiler-گزینه]*
[نام خانوادگی]
فایل منبع Scheme را کامپایل می کند نام خانوادگی.sc ابتدا در یک فایل C نام خانوادگی.c و سپس به
یک تصویر اجرایی نام خانوادگی. همچنین یک فایل پایگاه داده تولید می کند نام خانوادگی.db. در نام خانوادگی
استدلال مورد نیاز است مگر اینکه -version مشخص شده است.
شرح
استالین یک کامپایلر بسیار کارآمد برای Scheme است. این طراحی شده است که از آن استفاده نمی شود
ابزار توسعه بلکه به عنوان وسیله ای برای تولید تصاویر اجرایی کارآمد یا برای
تحویل برنامه یا برای اجرای تحقیقات تولید. برخلاف طرح سنتی
استالین یک کامپایلر حالت دسته ای است. هیچ READ-EVAL-PRINT تعاملی وجود ندارد
حلقه استالین یک فایل منبع Scheme را در یک تصویر اجرایی (غیر مستقیم
از طریق C). اجرای آن تصویر معنایی معادل بارگیری فایل منبع Scheme دارد
به یک مفسر Virgin Scheme و سپس پایان دادن به اجرای آن. محدودیت اصلی
این است که بارگذاری یا EVAL عبارات جدید یا تعاریف رویه در a امکان پذیر نیست
اجرای برنامه بعد از کامپایل در ازای این محدودیت، استالین کارهای قابل توجهی انجام می دهد
تجزیه و تحلیل جهانی زمان کامپایل برنامه منبع تحت این فرض جهان بسته و
تصاویر اجرایی کوچک، مستقل و سریع تولید می کند.
استالین استراتژی های متعددی را برای تولید کد کارآمد ترکیب می کند. از جمله استالین
تجزیه و تحلیل نوع استاتیک جهانی را با استفاده از یک سیستم نوع نرم که از اتحاد بازگشتی پشتیبانی می کند، انجام می دهد
انواع استالین می تواند برای هر کد منبع یک نوع باریک یا حتی تک شکلی تعیین کند
بیان در برنامه های Scheme دلخواه بدون اعلان نوع. این به استالین اجازه می دهد
کنترل و ارسال نوع زمان اجرا را کاهش دهید یا اغلب حذف کنید. استالین نیز کم کار می کند
انتخاب نمایش سطح بر اساس هر بیان. این امکان استفاده از جعبه گشایی را فراهم می کند
نمایش داده های ماشین پایه برای همه انواع تک شکلی که منجر به بسیار بالا می شود
کد عددی عملکرد استالین همچنین تجزیه و تحلیل جهانی زمان حیات ثابت را برای همه انجام می دهد
داده های اختصاص داده شده این اجازه می دهد تا مقدار زیادی از ذخیره سازی اختصاص داده شده را بدون نیاز به بازیابی مجدد
مجموعه زباله. در نهایت، استالین استراتژی های بسیار کارآمدی برای تدوین بسته ها دارد.
با هم، این تکنیک های کامپایل به طور هم افزایی کد شی کارآمد را به دست می دهند.
علاوه بر این، تصاویر اجرایی ایجاد شده توسط استالین حاوی (تعریف شده توسط کاربر یا
کتابخانه) رویه هایی که فراخوانی نمی شوند، متغیرها و پارامترهایی که استفاده نمی شوند و
عباراتی که نمی توان به آنها رسید این یک سبک برنامه نویسی را تشویق می کند که به موجب آن یکی
رویه های کتابخانه ای بسیار کلی را ایجاد و استفاده می کند بدون ترس از اینکه تصاویر اجرایی این کار را انجام دهند
از نفخ کد رنج می برند.
OPTIONS
-version
نسخه استالین را چاپ می کند و بلافاصله خارج می شود.
گزینه های زیر پیش پردازش را کنترل می کنند:
-I دایرکتوری هایی را برای جستجوی Scheme include file مشخص می کند. این گزینه می تواند باشد
برای تعیین چندین دایرکتوری تکرار می شود. استالین ابتدا فایل های شامل را جستجو می کند
در دایرکتوری فعلی، سپس هر یک از دایرکتوری های مشخص شده در دستور
خط، و در نهایت در نصب پیش فرض شامل دایرکتوری.
-s شامل ماکروهای کتابخانه سازگاری Scheme->C است. در حال حاضر، این
نحو WHEN و UNLESS را تعریف می کند.
-x شامل ماکروهای کتابخانه Xlib و GL است. در حال حاضر، این تعریف می کند
نحو FOREIGN-FUNCTION و FOREIGN-DEFINE. این دلالت می کنه که -s.
-q شامل ماکروهای کتابخانه QobiScheme است. در حال حاضر، این تعریف می کند
DEFINE-STRUCTURE syntax، در میان چیزهای دیگر. این دلالت می کنه که -x.
-t شامل ماکروهای مورد نیاز برای کامپایل استالین با خودش است. این دلالت می کنه که -q.
گزینه های زیر دقت تحلیل جریان را کنترل می کنند:
-با همه نمادها به عنوان خارجی رفتار کنید
در طول تجزیه و تحلیل جریان، یک نماد خارجی انتزاعی ایجاد کنید که به اشتراک گذاشته می شود
در میان همه نمادها
-با-همه-نمادها-به عنوان-خارجی- رفتار نکنید
در طول تجزیه و تحلیل جریان، هنگام پردازش عبارات ثابت که حاوی نمادها هستند،
یک نماد داخلی انتزاعی جدید برای هر ثابت نماد متمایز در آن ایجاد کنید
برنامه این پیش فرض است.
-index-allocated-string-types-by-expression
در طول تجزیه و تحلیل جریان، هنگام پردازش رویه، عباراتی را فراخوانی کنید که می توانند تخصیص دهند
رشته ها، یک رشته انتزاعی جدید برای هر عبارتی ایجاد کنید. این است
به طور پیش فرض
-do-not-index-allocated-string-types-by-expression
در طول تجزیه و تحلیل جریان، هنگام پردازش رویه، عباراتی را فراخوانی کنید که می توانند تخصیص دهند
رشته ها، یک رشته انتزاعی منفرد ایجاد می کنند که بین همه این رشته ها مشترک است
اصطلاحات.
توجه داشته باشید که هیچ نسخه ای از گزینه های بالا برای نوع عنصر وجود ندارد زیرا عنصر
نوع رشته همیشه char است. علاوه بر این، هیچ نسخه ای از گزینه های بالا وجود ندارد
برای عبارات ثابت زیرا همیشه فقط یک رشته ثابت انتزاعی وجود دارد.
-شاخص-ثابت-ساختار-انواع-به-اسلات-انواع
در طول تجزیه و تحلیل جریان، هنگام پردازش عبارات ثابت که شامل ساختارها هستند،
یک ساختار انتزاعی جدید برای هر مجموعه ای از انواع اسلات بالقوه برای آن ایجاد کنید
ساختار.
-انواع-انواع-ساختار-ثابت-براسل-انواع-شاخه-نماسازی نکنید
در طول تجزیه و تحلیل جریان، هنگام پردازش عبارات ثابت که شامل ساختارها هستند،
یک ساختار انتزاعی واحد ایجاد می کند که در بین تمام مجموعه های پتانسیل مشترک است
انواع اسلات برای آن ساختار. این پیش فرض است.
-Index-constant-structure-types-by-expression
در طول تجزیه و تحلیل جریان، هنگام پردازش عبارت ثابت که شامل ساختارها است،
یک ساختار انتزاعی جدید برای هر عبارتی ایجاد می کند. این پیش فرض است.
-نوع-انواع-ساختار-با-شاخص-ثابت-نماسازی نکنید
در طول تجزیه و تحلیل جریان، هنگام پردازش عبارات ثابت که شامل ساختارها هستند،
یک ساختار انتزاعی واحد ایجاد می کند که در بین همه این عبارات مشترک است.
-شاخص-تخصیص-ساختار-انواع-به-اسلات-انواع
در طول تجزیه و تحلیل جریان، هنگام پردازش رویه، عباراتی را فراخوانی کنید که می توانند تخصیص دهند
ساختارها، یک ساختار انتزاعی جدید برای هر مجموعه ای از انواع اسلات بالقوه ایجاد می کنند
برای آن ساختار
-نوع-انواع-شاخص-شاخص-تخصیص-سازه-به-اسلات-انواع
در طول تجزیه و تحلیل جریان، هنگام پردازش رویه، عباراتی را فراخوانی کنید که می توانند تخصیص دهند
ساختارها، یک ساختار انتزاعی واحد ایجاد می کنند که در بین همه مجموعه ها مشترک است
انواع اسلات بالقوه برای آن ساختار. این پیش فرض است.
-شاخص-تخصیص-ساختار-انواع-بر- بیان
در طول تجزیه و تحلیل جریان، هنگام پردازش رویه، عباراتی را فراخوانی کنید که می توانند تخصیص دهند
ساختارها، یک ساختار انتزاعی جدید برای هر عبارت ایجاد می کنند. این هست
پیشفرض.
-نوع-انواع-شاخص-شاخص-تخصیص-ساختار-به-واسطه-نشود
در طول تجزیه و تحلیل جریان، هنگام پردازش رویه، عباراتی را فراخوانی کنید که می توانند تخصیص دهند
ساختارها، یک ساختار انتزاعی واحد ایجاد می کنند که در بین تمام این ساختارها مشترک است
اصطلاحات.
توجه داشته باشید که در حال حاضر، جفت ها تنها نوع ساختاری هستند که می توانند به صورت ثابت ظاهر شوند
اصطلاحات. این ممکن است در آینده تغییر کند، اگر خواننده برای حمایت از دیگران گسترش یابد
انواع سازه ها
-شاخص-ثابت-سر-بردار-انواع-بردار-نوع
در طول تجزیه و تحلیل جریان، هنگام پردازش عبارات ثابت که حاوی headed هستند
بردارها، یک بردار سرفصل انتزاعی جدید برای هر نوع عنصر بالقوه برای ایجاد می کنند
که بردار سر
-بردار-انواع-بردار-نوع-هد-هد-ثابت-نمایه نکنید-نوع-المان-
در طول تجزیه و تحلیل جریان، هنگام پردازش عبارات ثابت که حاوی headed هستند
بردارها، یک بردار انتزاعی منفرد ایجاد می کنند که بین همه مشترک است
انواع عنصر بالقوه برای آن بردار سرصفحه. این پیش فرض است.
-شاخص-ثابت-سر-بردار-انواع-توسط بیان
در طول تجزیه و تحلیل جریان، هنگام پردازش عبارات ثابت که حاوی headed هستند
بردارها، یک بردار سرفصل انتزاعی جدید برای هر عبارت ایجاد می کنند. این هست
پیشفرض.
-انواع-بردار-بردار-سرعت-ثابت-شاخص-با-شاخص-نباید
در طول تجزیه و تحلیل جریان، هنگام پردازش عبارات ثابت که حاوی headed هستند
بردارها، یک بردار انتزاعی منفرد ایجاد می کنند که بین همه آنها مشترک است
اصطلاحات.
-شاخص-تخصیص-سرفصل-بردار-انواع-به-نوع عنصر
در طول تجزیه و تحلیل جریان، هنگام پردازش رویه، عباراتی را فراخوانی کنید که می توانند تخصیص دهند
بردارهای headed، برای هر عنصر بالقوه یک بردار سرفصل انتزاعی جدید ایجاد کنید
برای آن بردار سرفصل تایپ کنید.
-نوع-انواع-بردار-بردار-نا-شاخص-تخصیص-تخصیص-سرفصل-بردار-به-نوع
در طول تجزیه و تحلیل جریان، هنگام پردازش رویه، عباراتی را فراخوانی کنید که می توانند تخصیص دهند
بردارهای headed، یک بردار انتزاعی ایجاد می کنند که بین همه مشترک است
انواع عنصر بالقوه برای آن بردار سرصفحه. این پیش فرض است.
-شاخص-تخصیص-سرفصل-بردار-انواع-توسط بیان
در طول تجزیه و تحلیل جریان، هنگام پردازش رویه، عباراتی را فراخوانی کنید که می توانند تخصیص دهند
بردارهای headed، یک بردار سرفصل انتزاعی جدید برای هر عبارت ایجاد کنید.
این پیش فرض است.
-نوع-بردار-بردار-انواع-شاخص-تخصیص-سرفصل-بردار-برابر-شاخص
در طول تجزیه و تحلیل جریان، هنگام پردازش رویه، عباراتی را فراخوانی کنید که می توانند تخصیص دهند
بردارهای headed، یک بردار انتزاعی ایجاد می کنند که بین همه مشترک است
چنین عباراتی
-index-constant-nonheaded-vector-types-by-element-types
در طول تجزیه و تحلیل جریان، هنگام پردازش عبارات ثابت که حاوی nonheaded هستند
بردارها، یک بردار انتزاعی جدید برای هر نوع عنصر بالقوه ایجاد می کنند
برای آن بردار بدون سر
-نوع-بردار-نوع-بردار-نوع-بردار-ثابت-غیر-هدف-ایندکس نکنید
در طول تجزیه و تحلیل جریان، هنگام پردازش عبارات ثابت که حاوی nonheaded هستند
بردارها، یک بردار انتزاعی بدون سر ایجاد می کنند که بین همه مشترک است
انواع عنصر بالقوه برای آن بردار بدون سر این پیش فرض است.
-index-constant-nonheaded-vector-types-by-expression
در طول تجزیه و تحلیل جریان، هنگام پردازش عبارات ثابت که حاوی nonheaded هستند
بردارها، یک بردار انتزاعی جدید برای هر عبارتی تولید می کنند. این
پیش فرض است.
-نوع-بردار-نوع-بردار-ثابت-بدون سر-بردار-شاخص-نخ
در طول تجزیه و تحلیل جریان، هنگام پردازش عبارات ثابت که حاوی nonheaded هستند
بردارها، یک بردار انتزاعی بدون سر ایجاد می کنند که بین همه آنها مشترک است
اصطلاحات.
-شاخص-تخصیص-بدون سر-بردار-انواع-به-نوع عنصر
در طول تجزیه و تحلیل جریان، هنگام پردازش رویه، عباراتی را فراخوانی کنید که می توانند تخصیص دهند
بردارهای بدون سر، برای هر پتانسیل یک بردار بدون سر انتزاعی جدید ایجاد کنید
نوع عنصر برای آن بردار بدون سر.
-نوع-بردار-نوع-بردار-نا-شاخص-تخصیص-بدون سر
در طول تجزیه و تحلیل جریان، هنگام پردازش رویه، عباراتی را فراخوانی کنید که می توانند تخصیص دهند
بردارهای بدون سر، یک بردار بدون سر انتزاعی ایجاد می کنند که بین آنها مشترک است
همه انواع عناصر بالقوه برای آن بردار بدون سر. این پیش فرض است.
-شاخص-تخصیص-بدون سر-بردار-انواع-توسط بیان
در طول تجزیه و تحلیل جریان، هنگام پردازش رویه، عباراتی را فراخوانی کنید که می توانند تخصیص دهند
بردارهای بدون سر، برای هر یک از این بردارها یک بردار انتزاعی جدید ایجاد کنید
اصطلاح. این پیش فرض است.
-نوع-بردار-نوع-بردار-شاخص-تخصیص-بی سر
در طول تجزیه و تحلیل جریان، هنگام پردازش رویه، عباراتی را فراخوانی کنید که می توانند تخصیص دهند
بردارهای بدون سر، یک بردار بدون سر انتزاعی ایجاد می کنند که بین آنها مشترک است
همه این عبارات
توجه داشته باشید که در حال حاضر، عبارات ثابت نمی توانند شامل بردارهای بدون سر و بدون سر باشند
بردارها هرگز با هیچ عبارت فراخوانی رویه ای تخصیص نمی یابند. ARGV تنها بدون سر است
بردار این گزینهها فقط برای کامل بودن و در صورت تمدیدهای بعدی گنجانده شدهاند
زبان اجازه می دهد تا ثابت های بردار غیر سر و رویه هایی را که بدون سر تخصیص می دهند
بردارها
-بدون-کلون-اندازه-محدودیت
چند واریانس نامحدود را مجاز کنید، یعنی از رویه ها با هر اندازه کپی تهیه کنید.
-clone-size-limit
حد چند واریانس را مشخص کنید، یعنی از رویه هایی کپی کنید که کمتر از آن هستند
این عبارات زیاد باید یک عدد صحیح غیر منفی باشد. پیشفرض 80 است. 0 را مشخص کنید
برای غیرفعال کردن چند واریانس
-تقسیم-حتی-اگر-بدون گشاد شدن
به طور معمول، چند واریانس تنها در صورتی از یک رویه کپی می کند که با آن فراخوانی شود
استدلال از انواع مختلف این گزینه را برای کپی کردن رویه ها مشخص کنید
حتی زمانی که با آرگومان هایی از یک نوع فراخوانی می شوند. این به آنها این امکان را می دهد
در خط باشد
-تبدیل کامل به CPS
به طور معمول، تبدیل سبک وزن CPS اعمال می شود و فقط آن عبارات را تبدیل می کند
و رویه های مورد نیاز برای حمایت از ادامه فرار. وقتی این گزینه است
مشخص شده است، برنامه به طور کامل به CPS تبدیل شده است.
-بدون فرار-ادامه
به طور معمول، ادامه کامل پشتیبانی می شود. وقتی این گزینه مشخص شد،
تنها ادامههایی هستند که پشتیبانی میشوند آنهایی هستند که نمیتوان آنها را پس از آن فراخوانی کرد
رویه ای که ادامه را ایجاد کرده بود بازگشته است.
-دو به طور معمول، پس از تجزیه و تحلیل جریان، استالین هر مجموعه ای را مجبور می کند که حداکثر یکی را داشته باشد
عضو نوع ساختار یک نام معین، حداکثر یک عضو از نوع بردار سر، و
حداکثر یک عضو از نوع بردار بدون سر. این گزینه این را غیرفعال می کند و تایپ را مجاز می کند
مجموعه ای برای داشتن چندین عضو از نوع ساختار یک نام معین، چند سر-
اعضای نوع برداری، و چندین عضو از نوع بردار غیر سر. گاهی بازدهی می دهد
کد کارآمدتر و گاهی کد کارآمد کمتری به دست می دهد.
گزینه های زیر مقدار کد بررسی خطای زمان اجرا تولید شده را کنترل می کنند. توجه داشته باشید
که مستقل از تنظیمات این گزینهها، استالین همیشه کدی را تولید میکند
برای برنامه های صحیح از معنای زبان Scheme تبعیت می کند. فقط این گزینه ها
سطح ایمنی را کنترل کنید، یعنی میزان بررسی خطای زمان اجرا برای نادرست بودن
برنامه ها.
-Ob مشخص می کند که کدی برای بررسی بردارهای خارج از کران یا زیرنویس های رشته ای باید باشد
سرکوب. اگر مشخص نشده باشد، یک خطای زمان اجرا صادر می شود اگر بردار یا
زیرنویس رشته خارج از محدوده است. اگر مشخص شود، رفتار برنامه هایی که
دارای یک بردار خارج از کران یا زیرنویس رشته ای تعریف نشده است.
اوم مشخص می کند که کد برای بررسی خطاهای خارج از حافظه باید سرکوب شود. اگر نه
مشخص شده، اگر حافظه کافی وجود نداشته باشد، خطای زمان اجرا صادر می شود
اختصاص داده شده است. اگر مشخص شده باشد، رفتار برنامه هایی که حافظه آنها تمام می شود است
تعریف نشده
-بر مشخص می کند که کد برای بررسی سرریز دقیق عدد صحیح باید سرکوب شود. اگر
مشخص نشده است، یک خطای زمان اجرا در سرریز دقیق عدد صحیح صادر می شود. اگر
مشخص شده است، رفتار برنامه هایی که باعث سرریز دقیق عدد صحیح می شوند، تعریف نشده است.
در حال حاضر، استالین نمی داند چگونه کد بررسی سرریز را ایجاد کند، بنابراین این
گزینه باید مشخص شود
-یا مشخص می کند که کدی برای بررسی خطاهای سیستم فایل زمان اجرا مختلف باید باشد
سرکوب. اگر مشخص نشده باشد، در صورت ناموفق بودن یک خطای زمان اجرا صادر می شود
تلاش برای باز کردن یا بستن یک فایل انجام می شود. اگر مشخص شود، رفتار برنامه ها
که چنین تلاش های ناموفقی برای دسترسی به فایل تعریف نشده است.
-اوت آن کد را مشخص میکند تا بررسی کند که رویههای ابتدایی آرگومانهای ارسال شده هستند
نوع صحیح سرکوب شده است. اگر مشخص نشده باشد، خطای زمان اجرا صادر خواهد شد اگر a
رویه اولیه با آرگومان هایی از نوع اشتباه فراخوانی می شود. در صورت مشخص شدن،
رفتار برنامه هایی که یک رویه اولیه را با داده هایی از نوع اشتباه فراخوانی می کنند
تعریف نشده
گزینه های زیر پرحرفی کامپایلر را کنترل می کنند:
-d0 بر اساس یک خطای کامپایلر یک بک ردیابی زمان کامپایل تولید می کند.
-d1 در حین کامپایل، تفسیری تولید می کند و آنچه را که کامپایلر انجام می دهد، توصیف می کند.
-d2 پس از تجزیه و تحلیل جریان، فهرستی تزئین شده از برنامه منبع تولید می کند.
-d3 یک لیست تزئین شده از برنامه منبع را پس از انواع مشابه ایجاد می کند
ادغام شد.
-d4 یک نمودار فراخوانی از برنامه منبع تولید می کند.
-d5 شرحی از همه رویههای بومی غیر پیش پا افتاده تولید شده را ارائه میکند.
-d6 فهرستی از تمام عبارات و بستههایی که فضای ذخیرهسازی را به همراه a اختصاص میدهند تولید میکند
شرح محل تخصیص آن ذخیره سازی
-d7 اثری از فرآیند بسته شدن-تبدیل سبک وزن ایجاد می کند.
-بسته شدن-تبدیل-آمار
خلاصه ای از آمار بسته شدن-تبدیل را تولید می کند. اینها به صورت خودکار هستند
پردازش شده توسط برنامه bcl-to-latex.sc که توسط bcl-معیار خط
(هر دو در /usr/local/stalin/benchmarks فهرست) برای تولید جداول II، III و
IV، از مقاله جریان هدایت شده سبک وزن بسته شدن تبدیل.
گزینه های زیر استراتژی مدیریت ذخیره سازی مورد استفاده توسط کد کامپایل شده را کنترل می کنند:
دی سی استفاده از تخصیص(3). به طور معمول، کامپایلر استفاده خواهد کرد تخصیص(3) به
در صورت امکان روی پشته تماس تخصیص دهید.
-dC استفاده از زباله جمع کن محافظه کار Boehm را غیرفعال می کند. به طور معمول،
کامپایلر از کلکتور Boehm برای تخصیص داده هایی که طول عمر آنها مشخص نیست استفاده می کند
کوتاه بودن توجه داشته باشید که کامپایلر همچنان از کلکتور Boehm برای برخی استفاده خواهد کرد
داده اگر نتواند آن داده ها را در پشته یا منطقه تخصیص دهد.
-dh استفاده از مناطق را برای تخصیص داده غیرفعال می کند.
-dg ایجاد کد برای تولید پیام های تشخیصی هنگام تخصیص بخش های منطقه و
آزاد شد.
- dh استفاده از مناطق قابل گسترش را غیرفعال می کند و به جای آن از مناطق با اندازه ثابت استفاده می کند.
گزینه های زیر تولید کد را کنترل می کنند:
-d مشخص می کند که واقعی های غیر دقیق به صورت دو برابر C نمایش داده می شوند. به طور معمول، واقعی غیر دقیق
به صورت شناورهای C نشان داده می شوند.
-معماری
معماری که برای آن کد تولید می شود را مشخص کنید. پیش فرض تولید است
کد برای هر معماری که کامپایلر روی آن اجرا می شود. در حال حاضر، شناخته شده است
معماری ها عبارتند از IA32، IA32-align-double، SPARC، SPARCv9، SPARC64، MIPS، Alpha،
ARM، M68K، PowerPC و S390.
-خط پایه
تبدیل بسته شدن سبک وزن را انجام ندهید. تعطیلی برای همه ایجاد شده است
رویه ها کاربر معمولاً این گزینه را مشخص نمی کند. فقط در نظر گرفته شده است
برای اندازه گیری اثربخشی تبدیل بسته شدن سبک وزن. مورد استفاده قرار می گیرد
bcl-معیار اسکریپت (در /usr/local/stalin/benchmarks دایرکتوری) برای تولید
جداول II، III و IV مقاله جریان هدایت شده سبک وزن بسته شدن تبدیل.
-مرسوم
یک نسخه ساده شده از تبدیل بسته شدن سبک وزن را انجام دهید که متکی نیست
در تحلیل بین رویه ای تلاش برای تقلید کاری که کامپایلرهای «معمولی» انجام می دهند
(هر چه که باشد). کاربر معمولاً این گزینه را مشخص نمی کند. فقط هست
در نظر گرفته شده برای اندازه گیری اثربخشی تبدیل بسته شدن سبک وزن. این است
استفاده شده توسط bcl-معیار اسکریپت (در /usr/local/stalin/benchmarks دایرکتوری) به
جداول II، III و IV مقاله را تهیه کنید جریان هدایت شده سبک وزن بسته شدن
تبدیل.
-سبک وزن
تبدیل بسته شدن سبک وزن را انجام دهید. این پیش فرض است.
-فوری-مسطح
کد را با استفاده از بسته شدن مسطح فوری ایجاد کنید. این (هنوز) اجرا نشده است.
-غیر مستقیم - مسطح
کد را با استفاده از بسته های مسطح غیر مستقیم ایجاد کنید. این (هنوز) اجرا نشده است.
-نمایش فوری
با استفاده از بسته شدن فوری نمایشگر کد تولید کنید.
-نمایش غیر مستقیم
کد را با استفاده از بسته شدن نمایشگر غیر مستقیم ایجاد کنید. این (هنوز) اجرا نشده است.
-مرتبط
کد را با استفاده از بسته های پیوندی ایجاد کنید. این پیش فرض است.
-تراز کردن رشته ها
همه رشته ها را با تراز فیکسنوم تراز کنید. وقتی رشته ها هستند این کار نمی کند
با رویههای خارجی که با همترازی فیکسنوم همسو نیستند، بازگردانده میشوند. خواهد شد
همچنین هنگام استفاده از ARGV کار نمی کند، زیرا آن رشته ها نیز با fixnum تراز نیستند
هم ترازی. این پیش فرض است.
رشته ها -do-not-align
رشته ها را با تراز فیکسنوم تراز نکنید. این باید هنگام رشته ها مشخص شود
بازگردانده شده توسط روش های خارجی با تراز فیکسنوم مطابقت ندارند.
-نه بهینه سازی کامپایلر معروف به EQ را فعال می کند؟ جعل گاهی بازده بیشتری می دهد
کد کارآمد و گاهی کد کارآمد کمتری به دست می دهد.
-df بهینه سازی کامپایلر معروف به جعل را غیرفعال می کند.
-dG در صورت امکان، آرگومان ها را با استفاده از متغیرهای سراسری به جای پارامترها ارسال کنید.
-du به جای عبارت switch برای ارسال، دستور if را ایجاد کنید.
-dI امکان استفاده از ساختارهای فوری را فراهم می کند.
-درد ارتقای نمایندگی را فعال می کند. برخی از مجموعههای نوع را از فشرده به ارتقا میدهد
در صورتی که این مقدار زمان اجرا را کاهش دهد، له شده یا به حالت عمومی له می شود
انشعاب یا اعزام اجبار نمایندگی. گاهی اوقات کارآمدتر است
کد و گاهی اوقات کد کارآمد کمتری به دست می دهد.
-dP انتشار کپی را فعال می کند. گاهی اوقات کد کارآمدتری ارائه می دهد و گاهی اوقات
کد کارآمد کمتری تولید می کند.
-ds بهینه سازی کامپایلر معروف به فشردن را غیرفعال می کند.
-dS بهینه سازی کامپایلر معروف به squishing را غیرفعال می کند.
-Tmk تولید کدی را فعال می کند که با Treadmarks distributed-shared-memory کار می کند
بسته بندی در حال حاضر این گزینه به طور کامل اجرا نشده است و مشخص نیست که کار کند.
-بهینه سازی بدون دم تماس
استالین اکنون کدی را تولید میکند که بهطور پیشفرض، در همه موارد بهطور صحیح بازگشتی است
نادرترین شرایط و می توان آن را وادار کرد تا به درستی دم تولید کند
کد بازگشتی در همه شرایط توسط گزینه های مناسب. برخی از دم بازگشتی
تماسها، آنهایی که سایت تماس در هدف قرار دارد، به عنوان C ترجمه میشوند
دستورات goto و همیشه منجر به کد tail-recursive مناسب می شود. بقیه هستند
به عنوان فراخوانی تابع C در موقعیت دم ترجمه شده است. این به کامپایلر C متکی است
انجام بهینه سازی tail-call. gcc(1) نسخه های 2.96 و 3.0.2 (و شاید دیگر
نسخهها) بهینهسازی tail-call را در IA32 (و شاید معماریهای دیگر) انجام میدهند.
چه زمانی -بهینه سازی تماس های خواهر و برادر مشخص شده است. (-O2 دلالت دارد -بهینه سازی-خواهر و برادر-
تماس.) gcc(1) فقط در موارد خاص بهینه سازی tail-call را روی IA32 انجام می دهد
موقعیت. ابتدا هدف و سایت تماس باید سازگار باشند
امضاها برای تضمین امضاهای سازگار، استالین پارامترها را به C منتقل می کند
توابعی که بخشی از حلقه های بازگشتی دنباله در متغیرهای سراسری هستند. دوم،
هدف نباید اعلام شود __صفت__ ((بدون بازگشت)). بنابراین استالین این کار را نخواهد کرد
تولید یک __صفت__ ((بدون بازگشت)) اعلان تابعی که بخشی از a است
حلقه بازگشتی دم حتی اگر استالین بداند که هرگز باز نمی گردد. سوم،
تابع حاوی سایت تماس نمی تواند تماس بگیرد تخصیص(3). gcc(1) جریان ندارد
تحلیل و بررسی. هر تماسی به تخصیص(3) در تابع حاوی سایت تماس، شماره
مهم نیست که داده های تخصیص داده شده فرار کنند، بهینه سازی tail-call غیرفعال می شود.
بنابراین استالین تخصیص پشته دادهها را در هر رویهای که در الف است غیرفعال میکند
رویه ای که بخشی از یک حلقه بازگشتی دنباله است. در نهایت، سایت تماس نمی تواند
شامل یک منطقه مجدداً وارد شوند زیرا مناطق ورودی مجدد پس از خروج از رویه آزاد می شوند
و یک دم فراخوان نیاز به احیای منطقه مداخله ای دارد. بنابراین استالین
تخصیص داده ها را در یک منطقه ورودی مجدد در هر رویه ای که بخشی از آن است غیرفعال می کند
یک حلقه بازگشتی دنباله. غیرفعال کردن این بهینهسازیها هزینهای را به همراه دارد
دستیابی به بهینه سازی tail-call. اگر کامپایلر C شما tail-call را انجام نمی دهد
بهینه سازی پس ممکن است بخواهید هزینه را پرداخت نکنید. در -بهینه سازی بدون دم تماس
این گزینه باعث می شود که استالین این چهار اقدام بالا را برای تولید کد روی آن انجام ندهد
که gcc(1) بهینه سازی tail-call را انجام می دهد. حتی زمانی که این را مشخص می کنید
گزینه، استالین هنوز تماسها را ترجمه میکند، جایی که سایت تماس درون خطی قرار دارد
هدف، همانطور که C گفتو بیان می کند. سه موقعیت نادر وجود دارد که هنوز می تواند فویل شود
بازگشت دم مناسب اولا اگر مشخص کنید -dC ممکن است استالین را مجبور به استفاده از پشته کنید
یا تخصیص منطقه حتی در یک چرخه تماس دم. شما می توانید از این امر اجتناب کنید
مشخص کردن -dC. دومین، gcc(1) زمانی که بهینه سازی tail-call را انجام نمی دهد
تابع حاوی سایت فراخوانی unary & برای یک متغیر محلی اعمال می شود. gcc(1) میکند
بدون تجزیه و تحلیل جریان هر کاربرد unary & برای متغیر محلی در تابع
حاوی سایت تماس، مهم نیست که نشانگر فرار کند، tail- را غیرفعال می کند
بهینه سازی تماس استالین می تواند چنین استفاده هایی را از unary & هنگامی که شما مشخص کنید ایجاد کند -نه
یا مشخص نکنید -df. با ذکر این موارد می توانید از چنین مواردی جلوگیری کنید -df و نه
مشخص کردن -نه. سرانجام، gcc(1) زمانی که بهینه سازی tail-call را انجام نمی دهد
تابعی که شامل تماس های سایت تماس است setjmp(3). gcc(1) آنالیز جریان ندارد
هر تماسی به setjmp(3) در تابع حاوی سایت تماس، مهم نیست که آیا
la jmp_buf فرار می کند، بهینه سازی tail-call را غیرفعال می کند. استالین ترجمه می کند
تماس های خاص به تماس با جریان-ادامه به عنوان تماس به setjmp(3). شما می توانید
با مشخص کردن استالین را مجبور به انجام این کار نکنید -تبدیل کامل به CPS. استالین خواهد کرد
در حالت اول و سوم، یعنی هنگام فراخوانی، هشدار ایجاد کنید
بهینه سازی با تخصیص مجدد منطقه یا فراخوانی به منطقه خنثی می شود تخصیص(3) or
setjmp(3). بنابراین می توانید از تعیین آن خودداری کنید -تبدیل کامل به CPS یا خودداری از
مشخص کردن -dC تا زمانی که چنین هشدارهایی را مشاهده نکنید. با این حال، چنین هشداری ایجاد نمی شود،
هنگامی که از بهینه سازی دم فراخوانی unary و foil استفاده می شود. بنابراین شما ممکن است بخواهید همیشه
مشخص كردن -df و از مشخص کردن خودداری کنید -نه اگر می خواهید برنامه های شما باشد
به درستی بازگشتی دم
گزینه های زیر مرحله C-compilation را کنترل می کنند:
-db تولید یک فایل پایگاه داده را غیرفعال می کند.
-c مشخص می کند که کامپایلر C پس از تولید کد C نباید فراخوانی شود.
به طور معمول، کامپایلر C پس از تولید کد C برای تولید یک فراخوانی می شود
تصویر اجرایی این دلالت می کنه که -k.
-k مشخص می کند که فایل C تولید شده حذف نشود. به طور معمول، تولید شده است
فایل C پس از کامپایل شدن حذف می شود.
-سی سی کامپایلر C را برای استفاده مشخص می کند. پیش فرض به gcc(1).
-پلیس گزینه هایی را که قرار است کامپایلر C با آنها فراخوانی شود را مشخص می کند. به طور معمول C
کامپایلر بدون هیچ گزینه ای فراخوانی می شود. این گزینه می تواند تکرار شود تا اجازه داده شود
ارسال چندین گزینه به کامپایلر C.
با استفاده از خدمات onworks.net از استالین آنلاین استفاده کنید