هذا هو الأمر g ++ الذي يمكن تشغيله في مزود الاستضافة المجانية OnWorks باستخدام إحدى محطات العمل المجانية المتعددة عبر الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت
برنامج:
اسم
مترجم gcc - GNU project C and C ++ compiler
موجز
مجلس التعاون الخليجي [-c|-S|-E] [-std =معيار]
[-g] [-ص] [-Oمستوى]
[-Wحذر...] [-بيدانتيك]
[-Iدير...] [-Lدير...]
[-Dالماكرو[=ديفين] ...] [-Uالماكرو]
[-fخيار...] [-mآلة الخيار...]
[-o ملف] [@ملف] شرير
يتم سرد الخيارات الأكثر فائدة فقط هنا ؛ انظر أدناه للباقي. ز ++ يقبل
في الغالب نفس الخيارات مثل دول مجلس التعاون الخليجي.
الوصف
عند استدعاء GCC ، فإنه عادةً ما يقوم بالمعالجة المسبقة والتجميع والتجميع والربط.
تسمح لك "الخيارات العامة" بإيقاف هذه العملية في مرحلة وسيطة. ل
مثال -c الخيار يقول عدم تشغيل الرابط. ثم يتكون الناتج من الكائن
إخراج الملفات بواسطة المجمع.
يتم تمرير الخيارات الأخرى إلى مرحلة واحدة من المعالجة. تتحكم بعض الخيارات في
المعالج المسبق والآخرين المترجم نفسه. ومع ذلك ، هناك خيارات أخرى تتحكم في المجمع و
رابط. لم يتم توثيق معظمها هنا ، نظرًا لأنك نادرًا ما تحتاج إلى استخدام أي منها.
معظم خيارات سطر الأوامر التي يمكنك استخدامها مع GCC مفيدة لبرامج C ؛ متي
الخيار مفيد فقط مع لغة أخرى (عادةً C ++) ، كما يقول الشرح
صراحة. إذا كان وصف خيار معين لا يذكر المصدر
اللغة ، يمكنك استخدام هذا الخيار مع جميع اللغات المدعومة.
تشير دول مجلس التعاون الخليجي يقبل البرنامج الخيارات وأسماء الملفات كمعامل. العديد من الخيارات متعددة
أسماء الحروف لذلك قد خيارات متعددة من حرف واحد ليس يتم تجميعها: -دف جدا
مختلفة من -d -v.
يمكنك مزج الخيارات والحجج الأخرى. بالنسبة للجزء الأكبر ، الترتيب الذي تستخدمه لا يفعل ذلك
شيء. لا يهم الأمر عند استخدام عدة خيارات من نفس النوع ؛ على سبيل المثال ، إذا
تحدده -L أكثر من مرة ، يتم البحث في الدلائل بالترتيب المحدد. أيضا،
وضع -l الخيار مهم.
العديد من الخيارات لها أسماء طويلة تبدأ بـ -f أو مع -W---على سبيل المثال،
-ثوابت حلقة -fmove, -Wformat وما إلى ذلك وهلم جرا. معظم هؤلاء لديهم كلا من الإيجابية والسلبية
نماذج؛ الشكل السلبي لـ -ffoo is -فنو-فو. يوثق هذا الدليل واحدًا فقط من هؤلاء
شكلين ، أيهما ليس هو الافتراضي.
OPTIONS
خيار الملخص
فيما يلي ملخص لجميع الخيارات ، مجمعة حسب النوع. التفسيرات في ما يلي
أقسام.
أوفرول مزيد من الخيارات
-c -S -E -o ملف - لا - البادئات المتعارف عليها -يضخ -مرور-خروج-رموز -x لغة -v
- ### --مساعدة[=فئة[، ...]] --تهدف المساعدة --الإصدار -غلاف @ملف -فلوجين =ملف
-fplugin- أرج-الاسم=الأرجنتين -fdump-ada-spec[-معتدل البنيه] - فادا - المواصفات - الأصل =وحدة
-fdump-go-spec =ملف
C اللغة مزيد من الخيارات
-انسى -std =معيار -fgnu89- مضمنة -معلومات اسم الملف
-السقط- الدوال- المتغيرة- المتغيرة -fno- asm -fno- بنيت -fno- المدمج-وظيفة
استضافت -تقرير -فوبيناك -fopenmp -فوبينب سيمد -fms- ملحقات
-fplan9- ملحقات -الخط -تقليدي -التقليدية- CPP - سقوط واحد - الدقة
- عدم تطابق -بلاكس-ناقل-التحويلات -موقع-bitfields توقيع شار
-ممتاز-bitfields -ممتعة-شار
C + + اللغة مزيد من الخيارات
-fabi- النسخة =n -fno- التحكم في الوصول -fcheck- جديد -fconstexpr- العمق =n
-حقن صديق -fno- elide- صانعي -fno- فرض- إيه- المواصفات -تقديم النطاق
-fno- للنطاق كلمات مفتاحية -fno-gnu - قوالب - ضمنية
-fno- ضمني-المضمنة-القوالب -fno- تنفيذ- المضمنة -fms- ملحقات
-fno- nonansi- مبني -fnotrow-opt - أسماء المشغلين -fno- اختياري- diags
-فاشية -fno- قوالب-جميلة -فريبو -فنو- rtti -إلغاء تخصيص -fstats
-ftemplate-backtrace-limit =n - عمق القالب =n -fno-Threadafe-statics
-الفتيل- cxa-atexit - ضعيف -نوستدينك ++ -رؤية-مضمنة-مخفية
-fvtable- تحقق =[الأمراض المنقولة جنسيا|بريينت|لا شيء] التهم -fvtv -fvtv- التصحيح -الرؤية- ms- التوافق
-صيغة-رقمية-حرفية -وابي =n -Wabi- الوسم -Wconversion- لاغية -الطبيب- dtor- الخصوصية
-Wdelete-غير الظاهري-dtor لاحقة حرفيّة -مقلق -لا استثناء -غير-افتراضية- dtor
-تسجيل -Weffc ++ -قضاء-باطل-الحارس -Wno- غير- قالب- صديق - أسلوب القفر
-Woverloaded- الظاهري -Wno-pmf- التحويلات -Wsign- الترويجي
الهدف-C الهدف- C ++ اللغة مزيد من الخيارات
-fconstant-string-class =اسم الطبقة -fgnu- وقت التشغيل -وقت التشغيل التالي -fno- لا شيء- المستقبلات
-fobjc-abi-version =n -fobjc-call-cxx-cdtors -fobjc- إرسال مباشر استثناءات fobjc
-fobjc-GC -fobjc-nilcheck -fobjc-std = objc1 -fno-local-ivars
-fivar- الرؤية =[جمهور|محمي|خاص|صفقة] فصول- freeplace-objc
-fzero-link -جن- decls - تعيين - اعتراض -لا بروتوكول -محدد
-Wstrict-selector-match -Wundeclared- محدد
اللغة مستقل مزيد من الخيارات
-طول الرسالة =n -تشخيص-موقع-عرض =[مرة|كل سطر]
-التشخيص-اللون =[السيارات|أبدا|دائما] -fno-التشخيص-تظهر-الخيار
-التشخيص-تظهر-الإقحام
تحذير مزيد من الخيارات
-فس الجملة فقط -fmax-errors =n -بيدانتيك - أخطاء متداخلة -w اكسترا الجدار شاحن
-العنوان -إجمالي-العائد -تحسينات الحلقة الخاطفة - حدود المحارب
حدود المحارب =n -Wbool- قارن -لا-سمات إعادة تعريف -Wno- المدمج- الماكرو
-Wc90-c99-متوافق -Wc99-c11-متوافق -Wc ++ - متوافق -Wc ++ 11-متوافق -Wc ++ 14-متوافق
-محاذاة البث -Wcast-Qual -وشار- المشتركين -Wclobbed - تعليق
- المدعومة بشروط -Wconversion -التغطية-عدم تطابق -تاريخ الوقت
-حذف-غير مكتمل -Wno- CPP -Wno- مهملة - إقرارات - مهملة
-Wno- المعينة- init -Wdisabled- التحسين - مؤهلات Wno-مهملة
-Wno-مهملة-مجموعة- المؤهلات -لا-div-by-صفر - ترقية مزدوجة -جسم فارغ
-وينوم-قارن -لا-نهاية-تسميات -خطأ -خطأ = * - أخطاء فادحة -تعويم-يساوي
-Wformat - التنسيق = 2 -لا-شكل-يحتوي-نول -لا تنسيق- إضافي- أرجس
- صيغة غير حرفية -Wformat- الأمن - التنسيق - التوقيع -Wformat-y2k
-Wframe أكبر من =ليون -لا خالية- nonheap- كائن -القفز-يخطئ-الحرف الأول
- التصفيات المؤهلة - أنواع المؤشرات - Wincomp Compatible - ضبابي
- إعلان ضعيف عن الوظيفة -Wimplicit- كثافة العمليات -نفس الذات -وينلاين
-Wno- Int- التحويل -Wno-int-to-pointer-cast -Wno- غير صالح- offsetof -Winvalid-pch
- أكبر من =ليون - تحسينات حلقة غير آمنة -Wlogical- المرجع -الأقواس المنطقية
-طويلة الأمد -ماين - ربما - غير مهيأ -Wmemset-transposition-args -فاقد-الأقواس
-ضياع-الحقل-التهيئة -مفقود-يشمل-dirs -ونو- multichar -غير مجهولة
غير طبيعي =[لا شيء|id|NFC|نفكك]
-ورد -لا تجاوز -Wopenmp-simd -الطول-الاوتار -معبأة
-Wpacked-bitfield- متوافق - مبطن أقواس -Wpanticantic-ms-format
-Wno- المتحذلق- ms- شكل -Wpointer- أريث -لا مؤشر إلى int-cast - زائدة - decls
-لا عودة-المحلية-addr - نوع الإرجاع نقطة العواقب -ظلال -لا-ظل-ايفار
-Wshift- العد سلبي -Wshift العد الفائض -Wsign- قارن -Wsign- التحويل
-الطفو- التحويل -حجم المؤشر-memaccess -Wsizeof- مصفوفة-وسيطة
- حامي Wstack -Wstack- استخدام =ليون -Wstrict- التعرج -Wstrict-aliasing = n
-Wstrict- تجاوز -Wstrict- تجاوز =n -Wsuggest-سمة =[نقي|CONST|لا رجوع|شكل]
-Wsuggest- أنواع نهائية طرق -Wsuggest-final -Wsuggest- تجاوز
السمة-تنسيق-مفقود -سويتش - مفتاح التبديل الافتراضي -سويتش-تعداد -سويتش- منطقية
-Wsync- ناند -Wsystem- رؤوس -وترامبولين -كتابات حدود نوع - وندف
غير مهيأ -براغمات غير معروفة -لا-براغماس - الثوابت غير الثابتة
-مذهل وظيفة غير مألوفة -تسمية غير مألوفة -غير المستخدمة-المحلية-typedefs -غير مألوف- المعلمة
-لا-نتائج-غير مستخدمة -قيمة غير مألوفة - متغير غير مألوف -غير مستغلة-لكن-ضبط-المعلمة
- غير مألوف - ولكن - مجموعة - متغير يلقي بلا فائدة -Wvariadic- وحدات الماكرو
-Wvector-عملية-الأداء -فلا -تقلب- تسجيل- فار -الكتابة-السلاسل
-Wzero-as-null-pointer-ثابت
C الهدف- C فقط تحذير مزيد من الخيارات
-باد-وظيفة-يلقي - الإقرارات الناقصة -Wmissing- نوع المعلمة
-النماذج الأولية المفقودة -الخارج الغربية - إعلان على الطراز القديم - تعريف الطراز القديم
-نماذج Wstrict -تقليدي - تحويل تقليدي
- إعلان بعد بيان -Wpointer- تسجيل
التصحيح مزيد من الخيارات
-dحروف -مكبات آلة التفريغ - تفريغ - التفسير =نمط -التسريح-التعافي
- التعافي - التعافي =نمط -حسن-الظل-الإزاحة =عدد
-تحقق-غير معرف-فخ-على-خطأ -تحقق-مؤشر-حدود -fchkp-check -غير-type
-fchkp- الحقل الأول- له حدود خاصة -fchkp- الضيق الحدود
-fchkp- الضيق إلى الأعمق- المصفوفة -fchkp- الأمثل -fchkp-use-fast-string-المهام
-fchkp-use-nochk-string-function -fchkp- استخدام-ثابت-حدود
-fchkp-استخدام-ثابت-حدود -fchkp-علاج-صفري-ديناميكي-حجم-لانهائي
-fchkp- تحقق- قراءة -fchkp- تحقق- قراءة -fchkp- الاختيار-الكتابة -fchkp-store-bounds
-fchkp- صك- مكالمات -fchkp- صك- ملحوظ فقط أغلفة -fchkp-use-use
-fdbg-cnt- قائمة -fdbg-cnt =قائمة القيمة المضادة -fdisable- ipa-اسم_مرور
-fdisable- rtl-اسم_مرور -fdisable- rtl-اسم المرور=قائمة النطاق -fdisable- شجرة-اسم_مرور
-fdisable- شجرة-اسم المرور=قائمة النطاق -fdump-noaddr -fdump-غير مرقمة
-fdump-وصلات غير مرقمة - تفريغ - وحدة الترجمة[-n] -fdump- فئة- التسلسل الهرمي[-n]
-fdump-ipa- الكل -fdump-ipa-cgraph -fdump- ipa- مضمنة -fdump- يمر -fdump-Statistics
-fdump-tree-all -fdump-tree-original[-n] -fdump- شجرة الأمثل[-n] -fdump- شجرة- cfg
-fdump-الاسم المستعار للشجرة -fdump-الشجرة الفصل -fdump- شجرة- ssa[-n] -fdump-tree-pre[-n]
-fdump- شجرة- ccp[-n] -fdump-شجرة-dce[-n] - تفريغ - شجرة - مثقوبة[-الخام] تفريغ شجرة دوم[-n]
-fdump-tree-dse[-n] - تفريغ - شجرة - بيبروب[-n] -fdump- شجرة- phiopt[-n]
-fdump- شجرة- forwprop[-n] -fdump-tree-copyrename[-n] -fdump- شجرة- nrv -fdump- شجرة- vect
-مغسلة-تفريغ-شجرة-بالوعة -fdump-شجرة-sra[-n] -fdump- شجرة- forwprop[-n] - تفريغ - شجرة - فري[-n]
-fdump- شجرة- vtable- تحقق -fdump- شجرة- vrp[-n] -fdump-tree-storeccp[-n]
-fdump-final-insns =ملف -fcompare-debug[=الأراضي الفلسطينية المحتلة] -fcompare-debug- Second
-تقزم-قزم 2-دوبس - أنواع - إزالة - غير المستخدمة - التصحيح
-تصحيح-غير مستخدمة-رموز تصحيح -نسبه-فئة-التصحيح-دائما -يمكن-نوع-pass
-يمكن-نوع-pass =قائمة النطاق - قسم أنواع الشوائب -fmem- تقرير- wpa تقرير fmem
-fpre-IPA-MEM-تقرير -fpost-ipa-mem-report -fprofile- أقواس -fopt- معلومات
-fopt- معلومات-الخيارات[=ملف] -بذور عشوائية =عدد -fsched- مطول =n -الجدولة- مطوّل
-الجدولة- التفريغ- CFG -الجدولة- الانابيب- مطوّل -fstack-الاستخدام -تغطية -ftest
-تقرير الوقت -fvar- تتبع -fvar- تتبع- التخصيصات
-fvar- تتبع- تعيينات- تبديل -g -gمستوى -gtoggle -كوف -قزم-الإصدار -ggdb
-جريكورد- مفاتيح دول مجلس التعاون الخليجي -Gno- سجل- مفاتيح دول مجلس التعاون الخليجي -جستابس -غستابس + -القزم الصارم
- صارم - قزم -gvms -gxcoff -gxcoff + -gz[=نوع] سلاسل -fno-merge-debug-strings
-fno-dwarf2-cfi-asm -fdebug- بادئة خريطة =قديم=جديد -نسبه-هيكل-تصحيح-أساس فقط
-نسبه-بناء-التصحيح-المخفّضة -نسبه- هيكل- تصحيح- مفصل[=قائمة المواصفات] -p -ص
-طباعة-اسم الملف =مكتبة -طباعة- libgcc- اسم الملف -طباعة- دليل متعدد
-طباعة-متعدد-ليب -طباعة-متعدد-دليل-نظام التشغيل -طباعة-اسم البرنامج =برنامج
-طباعة-البحث-dirs -Q -طباعة- sysroot -طباعة- sysroot- رؤوس- لاحقة حفظ مؤقت
-حفظ- temps = cwd -حفظ- temps = obj -زمن[=ملف]
التحسين مزيد من الخيارات
- تحسينات الحلقة الخاطئة وظائف المحاذاة [=n] - يقفز المحاذاة [=n]
-ملصقات-المحاذاة [=n] حلقات المحاذاة [=n] -الرياضيات -فاوتو الملف الشخصي
-فاوتو-الملف الشخصي [=مسار] -فاوتو- المؤتمر الوطني العراقي -احتمالات-فرع
-متفروع- الهدف- تحميل- الأمثل -fbranch-target-load-optimize2 -fbtr- ب ب- خاص
-fcaller- يحفظ -فحص-البيانات-الدوائر -مجمع-المكدس-التعديلات -الحفاظ-المكدس
-مقارنة-القضاء سجلات fcprop -القفز المتقاطع القفزات -fcse- متابعة كتل -fcse- تخطي
قواعد فورتران FCX -fcx- محدود المدى أقسام البيانات -fdce - فرع متأخر
-fdelete-null-pointer-check-pointer (تحقق من -fdelete-null-pointer-pointer) - افترض - تخميني - تخميني
-fdevirtualize-at-ltrans -fdse -مضمنة -فيبا-سرا - تحسينات غير مكلفة
-فتات-ليتو الأشياء -فاست-الرياضيات - غير محدد - الرياضيات فقط -متجر طائر
- الدقة الزائدة =نمط - تكاثر -فب-عقد =نمط - أقسام الوظائف
-fgcse -fgcse- بعد إعادة التحميل -fgcse- لاس -fgcse-lm -fgraphite- الهوية -fgcse- sm
- الحمولات المجاورة -fif- التحويل -fif- التحويل 2 - مضمنة غير مباشرة
وظائف الخطوط الدقيقة - وظائف الخط - تسمى مرة واحدة -finline-Limit =n
وظائف صغيرة الحجم -فيبا- CP -فيبا- cp- استنساخ محاذاة -fipa-cp -فيبا- pta
-فيبا الشخصي -فيبا-نقي-كونست -فيبا المرجع -فيبا- ICF خوارزمية فيرا =خوارزمية
منطقة فيرا =منطقة -الرافعة-الضغط - ضغط حلقة فيرا -fno- آيرا- حصة- حفظ- فتحات
فتحات انسكاب الفتحات -فيرا- مطوّل =n عزل المسارات الخاطئة
السمة العزلة-المسارات الخاطئة -خمسة وظائف مضمنة الصيانة
-حفظ-ثابت-ثابته انكماش مدى الحياة - كتلة طيارة - التبادل الطائر
-قريب-شريط-الألغام -تقلب-فتح-والمربى -قلب-عش- الأمثل -قلب-موازاة الكل
-فلرا-ريمات -فلتو - مستوى الضغط - التقسيم - فلو =ALG -التقرير
-Flto-report-wpa - جميع الثوابت الثوابت -fmodulo- جدولة
-fmodulo-Sched-allow-regmoves -ثوابت حلقة -fmove -fno- فرع- عد- ريج
-fno- تأجيل البوب -fno-وظيفة-CSE احتمالية عدم وجود فرع تخمين -fno- مضمنة
-fno-Math-Errno -fno-ثقب الباب -fno-ثقب الباب2 -fno- جدولة- interblock -fno- جدولة المواصفات
-fno- موقعة- الأصفار -fno-أعلى مستوى-إعادة الترتيب - الرياضيات
-fno-صفر-تهيئة-في-bss - مؤشر الإطار -تحسين- مكالمات الأخوة
-تضمين جزئيًا حلقات تقشير - المشتركة التنبؤية -fprefetch- حلقة- صفائف
-fprofile- تقرير -fprofile- تصحيح -fprofile- دير =مسار -fprofile- توليد
-fprofile- تولد =مسار -fprofile- استخدام -fprofile- استخدام =مسار -fprofile- القيم
-fprofile-reorder-وظائف الرياضيات المتبادلة -حر -frename- تسجيلات
كتل -freorder كتل-فريدر-والتقسيم وظائف -freorder
-frerun-cse-بعد الحلقة حلقات مجدولة مجدولة -الرياضيات
-fsched2-استخدام-superblocks ضغط ضغط تحميل المواصفات
-fsched- المواصفات-تحميل خطير -fsched-stalled-insns-dep [=n] -fsched-stalled-insns [=n]
-fsched المجموعة الإرشادية -fsched- المسار الحرج- الكشف عن مجريات الأمور -fsched-spec-insn- ارشادي
-fsched- رتبة- إرشادية -fsched-آخر-insn-الاسترشادي -fsched-dep-count-heuristic
-fschedule-الانصهار -fschedule- insns -fschedule-insns2 -fsection- المراسي
- جدولة انتقائية - جدولة انتقائية 2 -الجدولة- الأنابيب
-الجدولة- الأنابيب- الخارجية- الحلقات - التوسط الدلالي -لف شرينك
-إشارة- nans - ثابت واحد - الدقة -fsplit-ivs-in-unroller
- أنواع الانقسام العريض -فسا- phiopt -حامي-فسك -حامي-فستيك-الكل
- حامي - قوي -فستاك-حامي-صريح -fstdarg- اختيار -تعرج صارم
- تجاوز الحد -الخيط القفزات -ftracer -ftree-بت-ccp -ftree- بنيت- نداء- DCE
-فتري- ccp -فتري- الفصل -ftree-coalesce-inline-vars -ftree-coalesce-vars -ftree- نسخة- الدعامة
-ftree- نسخة -فتري- dce -فتري-المسيطر-الخيارات -فتري- dse -ftree- forwprop
-ftree- فري -ftree- حلقة- إذا- تحويل -ftree- حلقة- إذا- تحويل- مخازن -ftree- حلقة- الدردشة
-فتري-بيبروب -توزيع-حلقة-شجرة -توزيع-حلقة-توزيع-أنماط
-فتري-حلقة- ايفكنون -فتري-حلقة-خطية -ftree- حلقة- الأمثل -ftree- حلقة- vectorize
- الشجرة - موازاة الحلقات =n -ftree- قبل -ftree- جزئية- قبل -فتري- pta -ftree-ressoc
-فتري-بالوعة -فتري- slsr -فتري-سرا -تبديل الشجرة التحويل -ftree- ذيل- دمج
-فتري-تير -ftree-vectorize -ftree-vrp -الوحدة في وقت واحد -funroll- جميع الحلقات
حلقات -funroll -تحسينات غير آمنة- حلقة -ممتعة-الرياضيات-التحسينات
حلقات-funswitch -فيبا را متغير التوسع في unroller -تأثير- نموذج التكلفة -fvpt
-ويب -كل-البرنامج -fwpa -fuse-linker-plugin - معلمة الاسم=قيمنا -O -O0 -O1 -O2
-O3 -أوس -سريع -عوج
قبل المعالج مزيد من الخيارات
-Aسؤال=إجابة -ا-سؤال[=إجابة] -C -د -دي -dM -dN -Dالماكرو[=ديفين] -E -H
- بعد دير -تضمن ملف -يماكروس ملف -iprefix ملف -iwithprefix دير
-iwithprefix قبل ذلك دير -نظام دير -متعدد دير -ايسروت دير -M -MM -مف -مغ
-MP -MQ -MT -نوستدينك -P -fdebug-CPP التوسع الكلي -العمل-الدليل
-Remap -الخط - صندوق -Uالماكرو -Wp ،خيار -المعالج X خيار -لا- متكامل- CPP
المجمع خيار
-وا ،خيار -مجمع اكس خيار
الروابط مزيد من الخيارات
اسم ملف الكائن - الصمامات- ld =وصلات -lمكتبة -نوستارتفيليس -Nodefaultlibs -نوستدليب
-فطيرة -ديناميكي -s -ثابتة -static-libgcc -static-libstdc ++ -استاتيك-ليباسان
-استاتيك-ليبتسان -استاتيك- liblsan -ستاتيك-ليبوبسان -الثابت- libmpx -static-libmpxwrappers
-مشاركة -libgcc المشتركة -رمزي -T سيناريو -Wl ،خيار -إكسلينكر خيار -u رمز -z
الكلمة
الدليل مزيد من الخيارات
-Bبادئة -Iدير -بلوجيندير =دير -انا اقتبسدير -Lدير -النوع =ملف -أنا- - sysroot =دير
--لا sysroot- لاحقة
تشمل تابع مزيد من الخيارات
آرتش64 مزيد من الخيارات -مابي =الاسم -mbig-endian -ملل-endian عام-regs-only
-mcmodel = صغير -mcmodel = صغير -mcmodel = كبير -mstrict- محاذاة -موميت-أوراق-إطار-مؤشر
-رقم-حذف-أوراق-إطار-مؤشر -mtls- لهجة = تنازلي -mtls- اللهجة = التقليدية
-مفيكس قشرة- a53-835769 -منو-فيكس-القشرة-a53-835769 -مفيكس قشرة- a53-843419
-منو-فيكس-القشرة-a53-843419 - مسيرة =الاسم -mcpu =الاسم -mtune =الاسم
ادابتيفا عيد الغطاس مزيد من الخيارات -نصف- ريج- ملف -مبرفر-قصير-insn-regs - تكلفة الامتياز =NUM
-Mcmove -منوبس =NUM -msoft- cmpsf -msplit- لوهي -موقع- المؤتمر الوطني العراقي -تعديل-الشباك
-mstack-offset =NUM -طائرة-أقرب - مكالمات طويلة - مكالمات قصيرة - صغير 16 -mfp- الوضع =طريقة
-مفيكت- مزدوج ماكس- vect- محاذاة =NUM -mplit-vecmove-early -m1reg-ريج
ARC مزيد من الخيارات -برميل-شيفتر -mcpu =وحدة المعالجة المركزية -mA6 مارك 600 -mA7 مارك 700 -mdpfp
-mdpfp- المضغوط -mdpfp- سريع -mno-dpfp-lrsr -مي -منو- mpy -ممول -ممول 64 -غير طبيعي
-mspfp -mspfp- المضغوط -mspfp- سريع -مسمد -مسنة- تعويم -mswap -Mcrc -mdsp-packa -مدفبف
-لوك -mmac-d16 -مماك -24 -Mrtsc -مسواب -الهاتف -مكسي -حجم -منومة-محاذاة
-مارلينكس - marclinux_prof -مبيلوغ- cfi - مكالمات طويلة -المكالمات-المتوسطة -msdata
-Mucb-mcount -متطاير- مخبأ -معاينة-النداء تعديل تلقائي ريج -مبيت-ثقب الباب -منو- brcc
-حقيبة- ناقل- pcrel -حالات مضغوطة -منو كوند-إكسيك -مبكرا- cbranchsi - توسيع - adddi
الأحمال المفكرة -ملرا -mlra- الأولوية- بلا -ملرا- الأولوية- المضغوط mlra الأولوية-
غير مضغوط -mno- ملي كود رمز مختلط فئة-mq -مركق -mRcw -مستوى الحجم =مستوى
-mtune =وحدة المعالجة المركزية -mmultcost =NUM -munalign-prob-threshold =الاحتمالات
ARM مزيد من الخيارات - خرائط - الإطار -منو- apcs- الإطار -مابي =الاسم -mapcs- مكدس الاختيار
-mno-apcs- كومة الاختيار - خرائط - تعويم -منو- apcs- تعويم - خرائط - إعادة الدخول
-منو- apcs-reentrant -مسيد-برولوج -منو-جدولة-برولوج -ملل-endian -mbig-endian
-mfloat-abi =الاسم -نسق mfp16 =الاسم - الإبهام - البيني -mno-الإبهام البيني -mcpu =الاسم
- مسيرة =الاسم -mfpu =الاسم -mtune =الاسم -طباعة- ضبط المعلومات -حجم الهيكل =n
مابورت أون نورترن - مكالمات طويلة - مكالمات طويلة -مفردة الموافقة المسبقة عن علم- قاعدة
-رقم-واحد-قاعدة الموافقة المسبقة عن علم تسجيل -mpic =ريج -منوب-متعة- dllimport -موقع-وظيفة-اسم
الإبهام -الذرة -mtpcs- الإطار -mtpcs- ورقة الإطار -mcaller-التشغيل الفائق
- العمل البيني الفائق -mtp =الاسم -mtls- اللهجة =لهجة - نقل الكلمات
-مفيكس-القشرة- m3-ldrd -موافق-الوصول النيون مقابل 64 بت بيانات فلاش بطيئة
-الصيغة الموحدة مقيد عليه
AVR مزيد من الخيارات -mmcu =MCU -تراكم-أرجس - تكلفة الامتياز =كلف - مقدمات المكالمات النعناع 8
-mn_flash =المقاس -منو المقاطعات -استراحة -مرمو -مستريك- X كومة صغيرة -nodevicelib
-Waddr- مساحة- تحويل
Blackfin مزيد من الخيارات -mcpu =وحدة المعالجة المركزية[-com.sirevision] -مسيم -موميت-أوراق-إطار-مؤشر
-رقم-حذف-أوراق-إطار-مؤشر -mspecld- شذوذ -منو- specld- شذوذ -مزامنة-شذوذ
-منو-سينك-شذوذ -mlow-64 كيلو -منو منخفضة 64 كيلو - مكدس الاختيار L1 -متوسط-المكتبة المشتركة
-رقم-معرف-مكتبة مشتركة -مكتبة-مشاريد =n -mleaf-id-المكتبة المشتركة
-منو ليف- معرف- مكتبة مشتركة -مسبب-البيانات -رقم-سبتمبر-البيانات - مكالمات طويلة - مكالمات طويلة
-سريع- fp مينلاين- PLT -متعدد النواة -مكوريا -موقع ب -msdram -micplb
C6X مزيد من الخيارات -mbig-endian -ملل-endian - مسيرة =وحدة المعالجة المركزية -مسيم -msdata =نوع sdata
CRIS مزيد من الخيارات -mcpu =وحدة المعالجة المركزية - مسيرة =وحدة المعالجة المركزية -mtune =وحدة المعالجة المركزية -mmax-stack-frame =n
-melinux-stacksize =n -متراكس 4 -متراكس 100 -mpdebug -mcc- الحرف الأول - عدم الآثار الجانبية
-مكدس- محاذاة محاذاة البيانات -mconst- محاذاة -m32 بت -m16 بت -m8 بت
-من-مقدمة-الخاتمة -منو-جوتبلت -نفس -ماوت -ميلينوكس -ملينكس -سم -سم 2
-mmul علة الحل -mno-mul-bug-الحل البديل
CR16 مزيد من الخيارات -مماك -mcr16cplus -مكر 16 ج -مسيم النعناع 32 -مبيت العمليات - نموذج البيانات =نموذج
داروين مزيد من الخيارات -جميع_حمولة -العميل المسموح به -قوس - أخطاء_ميتة -أرشيف فقط
-ربط_at_load -حزمة -محمل_حزمة -اسم العميل - التوافق_الإصدار
-النسخة الحالية -تفصل_الخط - ملف الاعتماد -dylib_file -dylinker_install_name
-ديناميكي -ديناميكليب -قائمة_الرموز_المصدرة -قائمة الملفات -flat_namespace
-فرض_cpusubtype_ALL -Force_flat_namespace -headerpad_max_install_names -الإطار
-صورة_قاعدة -فيه -اسم_التثبيت -صيانة_خاصة_الخارج -متعدد الوحدات
-تضاعف_تعرّف -تضاعف_تعرف_غير مستخدمة - noall_load
-لا_قطع_خط_الخطوات_المصطلحات -Nofixprebinding -اسم التعريف -نوبريبيند
-noseglink تصحيح -pagezero_size -الخلاصة -prebind_all_twolevel_modules -حزمة_خاصة
- قراءة_ فقط_المحرر -المستقيم -رموز الكائنات -لماذا -seg1addr - الطائفة
-رموز الكائنات -قطاعية -سجادر -segs_read_only_addr -segs_read_write_addr
-seg_addr_table -seg_addr_table_filename -الرابط -درس -segs_read_only_addr
-segs_read_write_addr -وحدة_وحدة -ثابتة -المكتبة الفرعية -مظلة فرعية
-wolevel_namespace -مظلة -غير معرف -قائمة_الرموز_غير المُصدرة
- ضعف_المرجعية_التطابقات - ما تم تحميله -F -تناول -gfull -mmacosx-version-min =الإصدار
-مكرنيل -عوني-بايت- منطقي
ديسمبر ألفا مزيد من الخيارات -منو- fp- ريجس -مسنة- تعويم -مييي -مي-مع-غير دقيق
-mieee- المطابقة -mfp-trap-mode =طريقة -وضع التقريب mfp =طريقة الدقة - mtrap =طريقة
- بناء الثوابت -mcpu =نوع وحدة المعالجة المركزية -mtune =نوع وحدة المعالجة المركزية -mbwx -ماكس -إصلاح -mcix
- طفو - vax -طوف- ieee -صريحة-ريوكس بيانات صغيرة - بيانات كبيرة نص صغير
-تكبير النص -الذاكرة-الكمون =الوقت
FR30 مزيد من الخيارات نموذج صغير -منو-لسيم
ليف مزيد من الخيارات -mgpr-32 -mgpr-64 -مفبر-32 -مفبر-64 -مشدد-تعويم -مسنة- تعويم
-مولوك- سم مكعب -مثبت- سم مكعب -مدوورد -منو- dword - مزدوج -منو-ضعف الوسائط - وسائل الإعلام
-مولد -منو مولاد -mfdpic مينلاين- PLT -mgprel- رو -متعدد-مكتبة-الموافقة المسبقة عن علم
-مربوطة- fp - مكالمات طويلة -مؤشرات- تسميات -مكتبة- الموافقة المسبقة عن علم -ماك -4 -ماك -8 -حزمة
-لا حزمة -منو- eflags -mcond- الخطوة -منو-كوند-موف - تحسين الغشاء
-من-أمثل-غشاء -mscc -منو- مجلس التعاون الجمركي -mcond-exec -منو كوند-إكسيك -مفلو-فرع
-منو-فليو-فرع -متعدد الشروط التنفيذية -منو متعدد-كوند-إكسيك -مختلط- cond-exec
-رقم-متداخل- cond-exec -mtomcat- احصائيات -mtls -mtls -mcpu =وحدة المعالجة المركزية
جنو / لينكس مزيد من الخيارات -مجليبك -موكليبك -مبيونيك -مندرويد -tno- الروبوت- سم مكعب -tno-android-ld
H8 / 300 مزيد من الخيارات -استراحة -م.ه -الآنسة مين -مكسر -منو exr النعناع 32 -ملاجن -300
HPPA مزيد من الخيارات - مسيرة =نوع العمارة -تعطيل- fpregs -تعطيل-الفهرسة
- مكالمات سريعة - غير مباشرة -مغاس -مجنو- لد -mhp-ld - المدى الثابت =نطاق التسجيل
- القفز في التأخير -mlinker-opt - مكالمات طويلة -متجر تحميل طويل -رقم-تعطيل- fpregs
-رقم تعطيل الفهرسة - مكالمات - سريعة - غير مباشرة -منو-غاز -لا القفز في تأخير
-متجر تحميل طويل وقت التشغيل -من-لينة-تعويم -منو-الفضاء-ريجس
-مسنة- تعويم -مبا-ريسك-1-0 -مبا-ريسك-1-1 -مبا-ريسك-2-0 وقت التشغيل
-جدولة =نوع وحدة المعالجة المركزية -mspace- ريجس -مسيو -موسيو -مونكس =يونكس- الأمراض المنقولة جنسيا -نوليبد -ثابتة
-الخيوط
IA-64 مزيد من الخيارات -mbig-endian -ملل-endian -مجنو- as -مجنو- لد -منو الموافقة المسبقة عن علم
-متطاير- asm- توقف -أسماء-تسجيل -msdata -منو- sdata -مستمر- GP -تلقائي الموافقة المسبقة عن علم
-مفوس-ماد -دقيقة-تعويم-تقسيم-دقيقة-الكمون -minline-float-divide-max-الإنتاجية
-mno-inline-float-divid -minline-int-تقسيم-دقيقة-الكمون
-minline-int-divide-max-الإنتاجية -mno-inline-int-divide -minline-sqrt-min-الكمون
-minline-sqrt-max-الإنتاجية -mno- مضمنة- sqrt -mdwarf2-asm -مبكرا-توقف-بت
- المدى الثابت =نطاق التسجيل -mtls-size =حجم tls -mtune =نوع وحدة المعالجة المركزية -milp32 -mlp64
-msched-br-data-spec -msched-ar-data-spec -مشروع-التحكم-المواصفات -msched-br-in-data-spec
-msched-ar-in-data-spec -مشروع-في-السيطرة-المواصفات -msched- المواصفات- ldc
-msched- المواصفات- السيطرة- ldc -msched-تفضل-غير-مواصفات البيانات-insns
-msched-تفضل-غير-التحكم-المواصفات-insns -msched-stop-bits- بعد-كل-دورة
-msched-count-spec-in -itical-path -msel-Sched-dont-check-control-spec
-msched-fp-mem-deps-صفر التكلفة -msched-max-memory-insns-hard-limit
-msched-max-memory-insns =ماكس إنس
LM32 مزيد من الخيارات -يمكن تحويل برميل تمكين -mdivide -ممكن مضاعفة
-تمكين التمديد - تمكين المستخدم
M32R / د مزيد من الخيارات -m32r2 -m32rx -m32r -mdebug الحلقات الخبيثة حلقات -mno- محاذاة
-معدل المشكلة =عدد - تكلفة الامتياز =عدد -mmodel =حجم الكود نوع النموذج -msdata =سداتا-
نوع -منو-دافق- func -mflush- func =الاسم -منو-دافق- فخ -mflush-trap =عدد -G NUM
M32C مزيد من الخيارات -mcpu =وحدة المعالجة المركزية -مسيم ميمريغس =عدد
M680x0 مزيد من الخيارات - مسيرة =قوس -mcpu =وحدة المعالجة المركزية -mtune =لحن م 68000 م 68020 -م68020-40
-م68020-60 م 68030 م 68040 م 68060 - وحدة المعالجة المركزية 32 م 5200 -m5206e -m528x م 5307 م 5407
-mcfv4e -مبيتفيلد -منو بيتفيلد -مك 68000 -مك 68020 -منوبيتفيلد -مرتد -منو- rtd
-مديف -منو- div -قصير -منو- باختصار -مشدد-تعويم م 68881 -مسنة- تعويم -مبكرل
-ملاين-كثافة العمليات -mstrict- محاذاة -مسبب-البيانات -رقم-سبتمبر-البيانات -مكتبة-مشارد- id = n
-متوسط-المكتبة المشتركة -رقم-معرف-مكتبة مشتركة -mxgot -منو- xgot
مكور مزيد من الخيارات -مهاردليت -منو-هارديليت -مديف -منو- div -استرخاء- فوري
-من-الاسترخاء-الفوري على نطاق واسع bitfields -حقول بت واسعة النطاق وظائف -m4 بايت
وظائف -mno-4 بايت - بيانات الخط - بيانات الخط -مبطء بايت
-mno- بطيئة-بايت -منو-لسيم -ملل-endian -mbig-endian م 210 م 340
زيادة مكدس
MeP مزيد من الخيارات -معبسديف - خيارات صغيرة - متوسط -مستند =n -مبيتوبس -مك =n -مقطع
-mconfig =الاسم -مكوب -مكوب 32 -مكوب 64 -Mivc2 -MDC -مديف -meb -ميل -ميو- متقلبة -مل
-مليدز مم -مينماكس -خلمة -لا خيارات - كرر -الآنسة -مساتور -msdram -مسيم -مسيمنوفيك
-متف - صغير =n
ميكروبليز مزيد من الخيارات -مسنة- تعويم -مشدد-تعويم -msmall- يقسم -mcpu =وحدة المعالجة المركزية -ممبي
-mxl- لينة مول -mxl-soft-div -mxl- برميل-التحول -mxl- مقارنة النمط -mxl- مكدس الاختيار
-مكسل-GP-الاختيار -mno-clearbss -mxl- الضرب العالي -mxl- تعويم- تحويل -mxl- تعويم الجذر التربيعي
-mbig-endian -ملل-endian -mxl- إعادة ترتيب -mxl- وضع-نموذج التطبيق
MIPS مزيد من الخيارات -ال -EB - مسيرة =قوس -mtune =قوس -الرسمات 1 -الرسمات 2 -الرسمات 3 -الرسمات 4
-الرسمات 32 -mips32r2 -mips32r3 -mips32r5 -mips32r6 -الرسمات 64 -mips64r2 -mips64r3
-mips64r5 -mips64r6 -الرسمات 16 -منو- mips16 -مفليب- mips16 -minterlink- مضغوط
-mno-interlink- مضغوط -مينترلينك- mips16 -mno- الربط- mips16 -مابي =أبي
-مبيكلز -منو- abicalls -مشاركة -منو- مشترك -مبلت -منو- PLT -mxgot -منو- xgot
-mgp32 -mgp64 -mfp32 -mfpxx -mfp64 -مشدد-تعويم -مسنة- تعويم -منو-تعويم
- تعويم واحد - تعويم مزدوج -مود-سبريج -منو- غريب- spreg -مابس =طريقة -منان =ترميز
-mdsp -منو- dsp -mdspr2 -منو- dspr2 -ممكو -mmno- mcu ميفا -منو-إيفا -mvirt -منو-الفضيلة
-mxpa -منو- إكسبأ ميكروميبس -mno- ميكروميبس -mfpu =نوع fpu -msmartmips -منو-سمارتميبس
-عجز واحد - زوج واحد -mdmx -منو- mdmx -mips3d -منو- mips3d -ممت
-mno- طن متري -مللسك -منو- ذ -mlong64 -mlong32 -msym32 -منو sym32 -GNUM
-ملل- sdata -mno-local-sdata -الخارج- sdata -mno-sdata الخارجية -Mgpopt -منو- gopt
- البيانات المدمجة -رقم-مضمنة-البيانات - moninit-const-in-rodata
-mno-uninit-const-in-rodata -الرمز المقروء =ضبط -مقسمة-العناوين
-من-تقسيم العناوين -صريحة-ريوكس -منو-صريح-ريلوكس -مراجعة-صفر-القسمة
- رقم الاختيار - صفر - القسمة - الفخاخ -مقسمة-فواصل -ممبي -منو- memcpy
- مكالمات طويلة - مكالمات طويلة -حمد -منو-جنون ميماد -منو-عماد -مفوس-ماد
-منو-تنصهر-ماد -nocpp - إصلاح - 24 كيلو - رقم الإصلاح - 24 كيلو - الإصلاح- r4000 -منو الإصلاح- r4000
- الإصلاح- r4400 -منو الإصلاح- r4400 - الإصلاح- r10000 -منو الإصلاح- r10000 -مفيكس- rm7000 -منو فيكس- rm7000
- الإصلاح- vr4120 -منو الإصلاح- vr4120 - الإصلاح- vr4130 -منو الإصلاح- vr4130 -إصلاح- sb1 -منو الإصلاح- sb1
-mflush- func =ظائفها -منو-دافق- func - تكلفة الامتياز =NUM -من المحتمل
-من-فرع-مرجح -mfp- استثناءات -mno-fp- الاستثناءات -mvr4130- محاذاة -mno- vr4130- محاذاة
-مسينسي -منو- synci - مكالمات -mrelax-pic -منو-الاسترخاء- مكالمات الموافقة المسبقة عن علم -mmcount- را- العنوان
MMIX مزيد من الخيارات - مليبفونكس -منو-ليبفونكس -مبسيلون -منو إبسيلون -مابي = جنو
-مابي = mmixware - تمديد صفري -مكنوتديف رموز -mtoplevel -نفس -متشروع- توقع
-منو- فرع- توقع -عناوين القاعدة -رقم-قاعدة-عناوين -مخرج واحد
-من-خروج واحد
MN10300 مزيد من الخيارات -ممت-علة -من-متعدد-علة -منو- am33 -مام 33 -مام 33-2 -مام 34 -mtune =وحدة المعالجة المركزية-
نوع -الرجوع-المؤشر- على- d0 -منو- crt0 -استراحة -مليو -مستلب
موشي مزيد من الخيارات -meb -ميل -mmul.x -منو- crt0
MSP430 مزيد من الخيارات -مسيم -الصم-عرافة -mmcu = -mcpu = -كبير صغير -استراحة -mhwmult = مينرت
NDS32 مزيد من الخيارات -mbig-endian -ملل-endian -نقص-ريجس -mfull-regs -مكموف -منو سموف
-mperf تحويلة -mno-perf-ext -mv3push -منو- v3push -m16 بت -mno-16 بت حجم متجه مصرNUM
-حجم كتلة-ذاكرة التخزين المؤقت =NUM - مسيرة =قوس -mcmodel =نموذج رمز -ماكتور- dtor -استراحة
NIOS II مزيد من الخيارات -G NUM -Mgpopt =خيار -Mgpopt -mno- gpopt -ميل -meb -رقم-تجاوز-مخبأ
-mbypass- ذاكرة التخزين المؤقت -منو- مخبأ- متقلبة - مخبأة متقلبة -منو سريع- sw-div - سريع- sw-div
-mhw- مول -منو- hw- مول -mhw- مولكس -منو- hw- مولكس -منو- hw-div -mhw-شعبة -مخصص-نزل=N
-منو- مخصص-نزل -مخصص- fpu-cfg =الاسم -مهال -مصغر -msys-crt0 =الاسم -msys-lib =الاسم
NVIDIA PTX مزيد من الخيارات م 32 م 64 -منكيرنيل
PDP-11 مزيد من الخيارات -مفبو -مسنة- تعويم -ماك0 -منو- ac0 م 40 م 45 م 10 -mbcopy
-mbcopy- المدمج النعناع 32 -mno- int16 النعناع 16 -mno- int32 - طفو 32 -منو-فلوت 64
- طفو 64 -منو-فلوت 32 -مبشي -منو-أبشي - باهظة الثمن -رخيصة-فرانش
-مونيكس- asm -Mdec- asm
بيكو تشيب مزيد من الخيارات -ماي =ae_type -mvliw-lookahead =N -msymbol- كعنوان
- تحذيرات غير فعالة
باور مزيد من الخيارات انظر RS / 6000 وخيارات PowerPC.
RL78 مزيد من الخيارات -مسيم -mmul = لا شيء -mmul = g13 -mmul = rl78 -m64bit- يتضاعف -m32bit- يتضاعف
RS / 6000 باور مزيد من الخيارات -mcpu =نوع وحدة المعالجة المركزية -mtune =نوع وحدة المعالجة المركزية -mcmodel =نموذج رمز
-محطة -مالتيفيك -منو-التيفيك -مباويربك- gpopt -mno-powerpc-gpopt
-مباويربك- gfxopt -mno-powerpc-gfxopt -مفكرف -منو- مفكرف -mpopcntb -منو- popcntb
-mpopcntd -mno-popcntd -مفبرند -منو- فبرند -مكمب -منو- cmpb -mmfpgpr -منو- mfpgpr
-محارد- dfp -من الصعب-dfp -mfull-toc - الحد الأدنى - توك -mno-fp-in-toc -من-مجموع-في-توك
م 64 م 32 -mxl- التوافق -mno-xl- متوافق -Mpe -القوة الحميدة -خفيفة-طبيعية
-مسنة- تعويم -مشدد-تعويم - متعدد - متعددة - تعويم واحد - تعويم مزدوج
-بسيط- fpu - الخيط -منو- سلسلة -حديث -رقم التحديث -عناوين مفهرسة
-رقم-تجنب-عناوين مفهرسة -مفوس-ماد -منو-تنصهر-ماد -mbit- محاذاة
-لا بت محاذاة -mstrict- محاذاة -لا صارمة- محاذاة -نقل -منو-ريموكاتابل
-مرحل-ليب -منو-ريلوكاتابل-ليب -mtoc -منو توك -ملي قليلا -ملل-endian
-مكبر -mbig-endian -mdynamic-no-pic -مالتيفيك -مسوديف -مفردة الموافقة المسبقة عن علم- قاعدة
-إعطاء الأولوية- مقيد- insns =الأولوية -msched-cost-dep =نوع_التبعية
-minsert-Sched-nops =مخطط -mcall-sysv -mcall- netbsd -maix- بناء- العودة
-msvr4- هيكلة العودة -مابي =نوع أبي -msecure- PLT -mbss- PLT
-mblock-move-inline-limit =NUM -مزيل -منو-ايزيل -misel = نعم -مزيل = لا -مسب -منو- spe
-mspe = نعم -mspe = لا - معطلة -mgen- الخلية- الرمز الصغير -الرمز الصغير للخلية المحذرة -mvrsave
-منو- فرسافي -ممولهو -منو-مولهو -مدلمذب -منو-دلمزب -mfloat-gprs = نعم -mfloat-gprs = لا
-mfloat-gprs = مفرد -mfloat-gprs = ضعف -مبروتوب -النموذج الأولي -مسيم -mmvme
سادة -ميالنايف -مب -msdata -msdata =اختار -mvxworks -G NUM -الخطأ - رثاء
-mrecip =اختار -منو- المتلقي - الدقة -منو- المتلقي الدقة -mveclibabi =نوع -مفريز
-منو-فريز -مؤشرات- إلى-وظائف متداخلة -رقم-مؤشرات-إلى-دالات متداخلة
-msave-toc- غير مباشر -من-حفظ-توك-غير مباشر -8-الانصهار -mno-mpower8- الانصهار
-قوة 8-ناقلات -mno-power8- ناقلات -مشفرة -رقم التشفير - التحرك المباشر -لا تحرك مباشر
- ذاكرة رباعية -لا ذاكرة رباعية -كواد-ذاكرة-ذرية -رقم-رباعي-ذاكرة-ذرية
-مكومبات-محاذاة-بارم -منو-التوافق- محاذاة- parm -الجمعية- regs-df -منو العلوي- ريجس- مدافع
-الجمعية- regs-sf -من-العلوي-ريجس- سادس -مابر-ريجس -من-العلوي-ريجس
RX مزيد من الخيارات -m64bit- يتضاعف -m32bit- يتضاعف -fpu -نوفبو -mcpu = -mbig-endian-data
-مليلا-endian- البيانات بيانات صغيرة -مسيم -منو سيم -الماس 100- بناء الجملة -mno-as100- بناء الجملة
-استراحة -ماكس-ثابت-الحجم = -تسجيل النعناع = -موقع - عدة مقاطعات سريعة
-msave-acc-in- المقاطعات
S / 390 zSeries مزيد من الخيارات -mtune =نوع وحدة المعالجة المركزية - مسيرة =نوع وحدة المعالجة المركزية -مشدد-تعويم -مسنة- تعويم
-محارد- dfp -من الصعب-dfp -لونغ-ضعف -64 -لونغ-ضعف -128 سلسلة الظهر
-mno- backchain مكدسة مكدسة -mno-معبأة-المكدس -msmall- إكسيك -mno- صغير- exec
-ملفكل -منو- mvcle م 64 م 31 -mdebug -منو التصحيح ميسا -مزارخ -mtpf- تتبع
-mno-tpf- تتبع -مفوس-ماد -منو-تنصهر-ماد -حجم الإطارات - ديناميكي حذر
-حجم الكومة -مكدس-حارس -mhotpatch =نصفي,نصفي
العلامة مزيد من الخيارات -meb -ميل -منهوروب -مولس -مماك -مسكور 5 -مسكور 5 يو -مسكور 7 -مسكور 7 د
SH مزيد من الخيارات م 1 م 2 -m2e -m2a- nofpu -m2a- مفرد فقط -m2a- واحد -m2a م 3 -m3e
-m4-nofpu -m4- مفرد فقط - م 4 واحد م 4 -m4a- nofpu -m4a- مفرد فقط -m4a- واحد
-m4a -m4al -m5-64ميديا -m5-64media- nofpu -m5-32ميديا -m5-32media- nofpu -m5- المدمجة
-m5- المدمجة- nofpu -مب -مل -Mdalign -استراحة -مهم -مفموفد -ميتاتشي -مرينا
-منو-رينيساس -منوماكسيف -مييي -منو-اييي -مبيتوبس -حجم -minline- ic_invalidate
-مباديم -مساحة -مبريفيرجوت -موسمود -Multcost =عدد -mdiv =إستراتيجية
-mdivsi3_libfunc =الاسم - المدى الثابت =نطاق التسجيل -مخاطبة-مخاطبة
-mgettrcost =عدد -مبت- ثابت -تراكم-أرغس الصادرة -الرموز غير الصالحة
-النموذج الذري =النموذج الذري - تكلفة الامتياز =NUM -مزدكبرانش -mno-zdcbranch
-mcbranch- قوة- تأخير- فتحة -مفوس-ماد -منو-تنصهر-ماد -مفسكا -منو- fsca -مفسرا
-منو فسرا - ترجمة - سموف -متاس
سولاريس 2 مزيد من الخيارات -Mclear-hwcap -منو-واضح-hwcap -طبخ-النص -منو- نجس- النص
- الصفحات -الخطأ
SPARC مزيد من الخيارات -mcpu =نوع وحدة المعالجة المركزية -mtune =نوع وحدة المعالجة المركزية -mcmodel =نموذج رمز نموذج الذاكرة =ذاكرة-
نموذج م 32 م 64 -map-regs -mno-app-regs -أسرع الهياكل - أسرع - الهياكل
-مسطحة -منو- شقة -مفبو -منو- fpu -مشدد-تعويم -مسنة- تعويم -محدد-رباعي-تعويم
-يمنة-رباعية-تعويم - التحيز المكدس -لا-كومة-التحيز -متلائم-الزوجي
زوجي غير محاذي - وضع المستخدم -لا-وضع المستخدم -mv8plus -منو- v8plus -مفيس
-منو-فيس -mvis2 -منو- vis2 -mvis3 -منو- vis3 -مكوند -منو- cbcond -مفماف -منو فماف
-mpopc -منو-بوبك - إصلاح- at697f -مفيكس- UT699
SPU مزيد من الخيارات -موارن-ريلوك -الخطأ-نقل -المأمون- dma -Munsafe- دما - تلميحات فرع
-msmall-ميم -كبير-ميم -مستدمين - المدى الثابت =نطاق التسجيل -ميا 32 -ميا 64
- العنوان - تحويل الفضاء -رقم-عنوان-فضاء-تحويل -حجم المخبأ =حجم ذاكرة التخزين المؤقت
-التيارات-التحديثات تحديثات -mno- الذرية
نظام V مزيد من الخيارات -QY -Qn -YP ،مسارات نعم ،دير
بلاط Gx مزيد من الخيارات -mcpu = وحدة المعالجة المركزية م 32 م 64 -mbig-endian -ملل-endian -mcmodel =نموذج رمز
تيليبرو مزيد من الخيارات -mcpu =وحدة المعالجة المركزية م 32
V850 مزيد من الخيارات - مكالمات طويلة - مكالمات طويلة -ميب -منو- الجيش الشعبي وظيفة -mprolog
- وظيفة برولوج -مساحة -متدى =n -مسدا =n -مزدا =n -map-regs -mno-app-regs
-تعطيل- callt -رقم- تعطيل- callt -mv850e2v3 -mv850e2 -mv850e1 -mv850es -mv850e
-mv850 -mv850e3v5 -ملوب -استراحة القفزات الطويلة -مسنة- تعويم -مشدد-تعويم -mgcc- أبي
-mrh850-أبي -مفتاح كبير
VAX مزيد من الخيارات -مغ -مجنو -مونيكس
Visium مزيد من الخيارات -mdebug -مسيم -مفبو -منو- fpu -مشدد-تعويم -مسنة- تعويم -mcpu =نوع وحدة المعالجة المركزية
-mtune =نوع وحدة المعالجة المركزية وضع msv - وضع المستخدم
VMS مزيد من الخيارات رموز العودة mvms -mdebug-main =بادئة -مملوك 64 -مؤشر-حجم =المقاس
VxWorks مزيد من الخيارات -Mrtp -غير ثابت - ثابت -ديناميكية -Xbind-كسول -Xbind- الآن
x86 مزيد من الخيارات -mtune =نوع وحدة المعالجة المركزية - مسيرة =نوع وحدة المعالجة المركزية -mtune- السيطرة =قائمة الميزات
-mdump-ضبط-الميزات -لا-الافتراضي -mfpmath =وحدة -الماس =لهجة -منو-يتوهم-رياضيات -387
-منو- fp- ret-in-387 -مسنة- تعويم -mno- على نطاق واسع- ضرب -مرتد -مزاوجة مزدوجة
-حدود المكدس المُفضَّلة =NUM حدود المكدس الوشيكة =NUM -mcld -مك x16 -مصاحف
-مموفبي -mrc32 - رثاء -mrecip =اختار -mvzerupper -مبرفر- avx128 -ممممكس مس - msse2
- msse3 -مسة 3 - msse4.1 - msse4.2 - msse4 -مافكس -Mavx2 -mavx512f -mavx512pf -mavx512er
-mavx512cd -مشا -مايس -mpclmul -mfsgsbase -مرردند -mf16c -مفما -mprefetchwt1
-mclflushopt -مكسسافيك -mxsaves - msse4a -m3dnow -mpopcnt -مبم -MBMI -mtbm -mfma4 -mxop
-mlzcnt -mbmi2 -mfxsr -mxsave -mxsaveopt -مرتم -mlwp -مبكسل -ممويتكس -ميثريدس
-منو-محاذاة-الأوتار -minline-all-stringops -minline- سترينجوبس-ديناميكي
-استراتيجية -mstringop =ALG -mmemcpy- استراتيجية =إستراتيجية -استراتيجية-mmemset =إستراتيجية
-فرج-أرجس -تراكم-أرغس الصادرة -م 128 بت- طويل- مزدوج -م 96 بت- طويل- مزدوج
-لونغ-ضعف -64 -لونغ-ضعف -80 -لونغ-ضعف -128 -mregparm =NUM -مسرقبارم
-mveclibabi =نوع -mvect8-ret-in-mem -mpc32 -mpc64 -mpc80 -Mstackrealign
-موميت-أوراق-إطار-مؤشر -من-المنطقة الحمراء -رقم- TLS- المباشر- SEG- المراجع -mcmodel =نموذج رمز
-مابي =الاسم -وضع العنوان =طريقة م 32 م 64 -mx32 م 16 - عتبة البيانات الكبيرة =NUM
-msse2avx -بنتري -mrecord-mcount -منوب-ماكونت -m8bit- idiv
-mavx256- تحميل الانقسام غير المحاذاة -mavx256-Split-unal -igned-store البيانات الخبيثة =نوع
- الكومة - واقي - الحرس =الحرس
x86 ويندوز مزيد من الخيارات - وحدة التحكم -مسيجوين -منو-سيغوين -mdll -منوب-متعة- dllimport - الخيط
-مونيكود موين 32 -النوافذ -fno- مجموعة- مكدس قابل للتنفيذ
اكس ستورمي 16 مزيد من الخيارات -مسيم
إكستينسا مزيد من الخيارات -مكونست 16 -منو- const16 -مفوس-ماد -منو-تنصهر-ماد -قوة-لا-الموافقة المسبقة عن علم
- متسلسلة - متقلبة -رقم متسلسل- متقلب - نص - قسم - حرفية
-mno-نص-قسم-الحرف -mtarget- محاذاة -mno- الهدف- محاذاة - مكالمات
-منو- مكالمات طويلة
zSeries مزيد من الخيارات راجع خيارات S / 390 و zSeries.
رمز جيل مزيد من الخيارات
-حفظ المكالمة-ريج -fcall- المستخدمة-ريج -مثبت-ريج - الاستثناءات - عدم الاستثناءات
-fdelete-dead-الاستثناءات طاولات ممتعة -غير متزامن-الاسترخاء-الجداول -fno-gnu- فريد من نوعه
-حجم منع التوجيه - وظائف الصك
-الصك-الدوال-استبعاد-وظيفة-قائمة =SYM,SYM، ...
- وظائف الصك - استبعاد - قائمة الملفات =ملف,ملف، ... -fno- مشترك -fno-id
-fpcc-Struct-return -fpic -fPIC -fpie -fPIE -fno- القفز-الجداول - مفاتيح دول مجلس التعاون الخليجي
-freg- هيكل- العودة - تعداد قصير -مضاعفة قصيرة -قصير- wchar -فطر- asm
-fpack- هيكل [=n] -fstack- الاختيار -fstack-Limit- التسجيل =ريج -fstack-Limit- رمز =SYM
-fno- كومة الحد -fsplit- المكدس - تسطير - عابرة -ftls- نموذج =نموذج
-fstack-reuse =reuse_level -ftrapv -فرابف - التحقق من القيود
- الرؤية =[الافتراضي|داخلي|مخفي|محمي] - bitfields شديدة التقلب
-fsync-libcalls
مزيد من الخيارات السيطرة ال نوع of الناتج
يمكن أن يشمل التجميع ما يصل إلى أربع مراحل: المعالجة المسبقة ، والتجميع المناسب ، والتجميع ، و
ربط ، دائمًا بهذا الترتيب. دول مجلس التعاون الخليجي قادرة على المعالجة المسبقة وتجميع العديد
الملفات إما في عدة ملفات إدخال للمجمع ، أو في ملف إدخال مجمع واحد ؛ من ثم
ينتج كل ملف إدخال للمجمع ملف كائن ، ويجمع الارتباط كل الكائنات
الملفات (تلك التي تم تجميعها حديثًا ، وتلك المحددة كمدخلات) في ملف قابل للتنفيذ.
لأي ملف إدخال محدد ، تحدد لاحقة اسم الملف نوع التجميع
به:
ملف.c
شفرة المصدر C التي يجب معالجتها مسبقًا.
ملف.i
شفرة المصدر C التي لا ينبغي معالجتها مسبقًا.
ملف.ثانيا
كود المصدر C ++ الذي لا ينبغي معالجته مسبقًا.
ملف.m
كود المصدر Objective-C. لاحظ أنه يجب عليك الارتباط بامتداد libobjc مكتبة لجعل
عمل برنامج Objective-C.
ملف.mi
كود مصدر Objective-C لا ينبغي معالجته مسبقًا.
ملف.mm
ملف.M
كود المصدر Objective-C ++. لاحظ أنه يجب عليك الارتباط بامتداد libobjc مكتبة لجعل
عمل برنامج Objective-C ++. لاحظ أن .M يشير إلى حرف كبير م.
ملف.mii
كود المصدر Objective-C ++ الذي لا ينبغي معالجته مسبقًا.
ملف.h
ملف رأس C أو C ++ أو Objective-C أو Objective-C ++ ليتم تحويله إلى ملف مترجم مسبقًا
header (افتراضي) أو ملف رأس C أو C ++ ليتم تحويله إلى مواصفات Ada (عبر امتداد
-fdump-ada-spec تحول).
ملف. سم مكعب
ملف.cp
ملف.cxx
ملف.CPP
ملف.CPP
ملف.c ++
ملف.C
كود مصدر C ++ يجب معالجته مسبقًا. لاحظ أنه في .cxx، آخر حرفين
يجب أن يكون كلاهما حرفيا x. بطريقة مماثلة، .C يشير إلى حرف كبير C.
ملف.mm
ملف.M
كود مصدر Objective-C ++ يجب معالجته مسبقًا.
ملف.mii
كود المصدر Objective-C ++ الذي لا ينبغي معالجته مسبقًا.
ملف.ح ح
ملف.H
ملف.حصان
ملف.hxx
ملف.hpp
ملف.HPP
ملف.h ++
ملف.tcc
ملف رأس C ++ ليتم تحويله إلى رأس مترجم مسبقًا أو مواصفات Ada.
ملف.f
ملف.ل
ملف.ftn
نموذج ثابت لشفرة مصدر فورتران التي لا ينبغي معالجتها مسبقًا.
ملف.F
ملف.ل
ملف.fpp
ملف.FPP
ملف.FTN
كود مصدر فورتران ثابت الشكل الذي يجب معالجته مسبقًا (مع ملف
المعالج).
ملف.f90
ملف.f95
ملف.f03
ملف.f08
كود مصدر فورتران مجاني لا ينبغي معالجته مسبقًا.
ملف.F90
ملف.F95
ملف.F03
ملف.F08
كود مصدر فورتران مجاني يجب معالجته مسبقًا (مع ملفات
المعالج).
ملف.يذهب
اذهب كود المصدر.
ملف.إعلانات
ملف كود مصدر Ada الذي يحتوي على إعلان وحدة مكتبة (إعلان عن ملف
حزمة أو برنامج فرعي أو عام أو مثيل عام) أو وحدة مكتبة
إعلان إعادة التسمية (إعلان إعادة تسمية حزمة أو عام أو برنامج فرعي). مثل
تسمى الملفات أيضًا المواصفات.
ملف.adb
ملف كود مصدر Ada يحتوي على نص وحدة مكتبة (برنامج فرعي أو نص حزمة).
تسمى هذه الملفات أيضًا الهيئات.
ملف.s
كود المجمع.
ملف.S
ملف.sx
رمز المجمع الذي يجب معالجته مسبقًا.
آخر
ملف كائن ليتم تغذيته مباشرة في الارتباط. أي اسم ملف بدون التعرف عليه
يتم التعامل مع اللاحقة بهذه الطريقة.
يمكنك تحديد لغة الإدخال بشكل صريح باستخدام امتداد -x الخيار:
-x لغة
حدد بشكل صريح ملف لغة لملفات الإدخال التالية (بدلاً من السماح بامتداد
يختار المترجم افتراضيًا بناءً على لاحقة اسم الملف). هذا الخيار ينطبق على الجميع
ملفات الإدخال التالية حتى اليوم التالي -x اختيار. القيم الممكنة لـ لغة هي:
c- رأس cpp-الإخراج
c ++ c ++ - رأس c ++ - cpp-output
الهدف- ج الهدف- ج- العنوان الهدف- ج- CPP- الإخراج
الهدف-c ++ الهدف-c ++ - الهدف العنوان- c ++ - cpp-الإخراج
المجمع مع cpp
آدا
f77 f77-cpp-الإدخال f95 f95-cpp-الإدخال
go
جافا
-x لا شيء
قم بإيقاف تشغيل أي مواصفات للغة ، بحيث يتم التعامل مع الملفات اللاحقة
وفقًا لواحق اسم ملفهم (كما هي إذا -x لم يتم استخدامه على الإطلاق).
-مرور-خروج-رموز
عادة دول مجلس التعاون الخليجي البرنامج يخرج مع رمز 1 إذا تم إرجاع أي مرحلة من مراحل المترجم
رمز إرجاع غير ناجح. إذا حددت -مرور-خروج-رموزأطلقت حملة دول مجلس التعاون الخليجي البرنامج بدلا من ذلك
يعود بأكبر خطأ عدديًا ناتجًا عن أي مرحلة تؤدي إلى إرجاع خطأ
دلالة. ترجع الواجهات الأمامية C و C ++ و Fortran 4 في حالة حدوث خطأ داخلي في المترجم
واجه.
إذا كنت تريد فقط بعض مراحل التجميع ، فيمكنك استخدام -x (أو لاحقات اسم الملف)
يخبر دول مجلس التعاون الخليجي من أين تبدأ ، وأحد الخيارات -c, -Sالطرق أو -E ليقول أين دول مجلس التعاون الخليجي هو
قف. لاحظ أن بعض التركيبات (على سبيل المثال ، -x CPP- الإخراج -E) إرشاد دول مجلس التعاون الخليجي أن تفعل
لاشىء على الاطلاق.
-c قم بتجميع أو تجميع الملفات المصدر ، لكن لا تقم بالربط. مرحلة الربط هي ببساطة
لم تفعل. الإخراج النهائي في شكل ملف كائن لكل ملف مصدر.
بشكل افتراضي ، يتم إنشاء اسم ملف الكائن لملف المصدر عن طريق استبدال اللاحقة .c,
.i, .s، وما إلى ذلك ، مع .o.
يتم تجاهل ملفات الإدخال غير المعروفة ، والتي لا تتطلب تجميعًا أو تجميعًا.
-S توقف بعد مرحلة التجميع المناسبة ؛ لا تجمع. الإخراج في ملف
شكل ملف كود المجمع المحدد لكل ملف إدخال غير مجمع.
بشكل افتراضي ، يتم إنشاء اسم ملف المجمع لملف المصدر عن طريق استبدال اللاحقة
.c, .i، وما إلى ذلك ، مع .s.
يتم تجاهل ملفات الإدخال التي لا تتطلب التحويل البرمجي.
-E توقف بعد مرحلة المعالجة المسبقة ؛ لا تقم بتشغيل المترجم المناسب. الإخراج في
شكل كود المصدر المعالج مسبقًا ، والذي يتم إرساله إلى الإخراج القياسي.
يتم تجاهل ملفات الإدخال التي لا تتطلب معالجة مسبقة.
-o ملف
ضع الإخراج في ملف ملف. ينطبق هذا على أي نوع من المخرجات يتم إنتاجها ،
سواء كان ملفًا قابلاً للتنفيذ ، أو ملف كائن ، أو ملف مجمع أو معالج مسبقًا C
رمز.
If -o لم يتم تحديده ، فالافتراضي هو وضع ملف قابل للتنفيذ في أ، الكائن
ملف ل المصدر in المصدر، ملف المجمع الخاص به بتنسيق مصادر، مترجم مسبقًا
ملف الرأس بتنسيق source.suffix.gch، وجميع مصادر C المجهزة مسبقًا على الإخراج القياسي.
-v اطبع (عند إخراج الخطأ القياسي) الأوامر المنفذة لتشغيل مراحل
التحويل البرمجي. قم أيضًا بطباعة رقم إصدار برنامج تشغيل المترجم والملف
المعالج والمترجم المناسب.
- ###
اعجاب -v باستثناء الأوامر لا يتم تنفيذها ويتم اقتباس الوسائط ما لم يتم ذلك
تحتوي فقط على أحرف أبجدية رقمية أو "./-_". هذا مفيد لبرامج shell النصية لـ
التقاط أسطر الأوامر التي يولدها السائق.
-يضخ
استخدم الأنابيب بدلاً من الملفات المؤقتة للاتصال بين مختلف مراحل
التحويل البرمجي. هذا فشل في العمل على بعض الأنظمة حيث المجمّع غير قادر على القراءة
من أنبوب لكن مُجمّع جنو ليس لديه مشكلة.
--مساعدة
اطبع (على الإخراج القياسي) وصفًا لخيارات سطر الأوامر التي يفهمها
دول مجلس التعاون الخليجي. إذا كان -v يتم تحديد الخيار أيضًا بعد ذلك --مساعدة يتم أيضًا نقله إلى المتنوع
العمليات التي استند إليها دول مجلس التعاون الخليجي، حتى يتمكنوا من عرض خيارات سطر الأوامر هم
قبول. إذا كان اكسترا تم أيضًا تحديد الخيار (قبل --مساعدة اختيار)،
ثم خيارات سطر الأوامر التي ليس لها وثائق مرتبطة بها هي أيضًا
عرض.
--تهدف المساعدة
اطبع (على الإخراج القياسي) وصفًا لخيارات سطر الأوامر الخاصة بالهدف
لكل أداة. بالنسبة لبعض الأهداف ، قد تكون المعلومات الإضافية الخاصة بالهدف أيضًا
المطبوعة.
--مساعدة = {فئة|[^]مؤهل}[، ...]
اطبع (على الإخراج القياسي) وصفًا لخيارات سطر الأوامر التي يفهمها
المترجم الذي يلائم جميع الفئات والمؤهلات المحددة. هذه هي
الفئات المدعومة:
محسنون
اعرض جميع خيارات التحسين التي يدعمها المترجم.
تحذيرات
اعرض كل الخيارات التي تتحكم في رسائل التحذير التي ينتجها المترجم.
الهدف
عرض خيارات محددة الهدف. على عكس --تهدف المساعدة الخيار ومع ذلك ، الهدف-
لا يتم عرض خيارات محددة من الرابط والمجمع. هذا بسبب
هذه الأدوات لا تدعم حاليا الموسعة - مساعدة = بناء الجملة.
params
اعرض القيم التي يتعرف عليها ملف - معلمة الخيار.
لغة
اعرض الخيارات المدعومة لـ لغة، حيث لغة هو اسم واحد من
اللغات المدعومة في هذا الإصدار من GCC.
مشترك
اعرض الخيارات العامة لجميع اللغات.
هذه هي المؤهلات المدعومة:
غير موثقة
اعرض فقط الخيارات غير الموثقة.
انضم
عرض الخيارات أخذ وسيطة تظهر بعد علامة التساوي في نفسه
جزء مستمر من النص ، مثل: - التعليمات = الهدف.
مستقل
عرض الخيارات بأخذ وسيطة تظهر ككلمة منفصلة بعد
الخيار الأصلي ، مثل: -o ملف إلاخراج.
وبالتالي ، على سبيل المثال ، لعرض جميع المفاتيح الخاصة بالهدف غير الموثقة التي يدعمها
المترجم ، استخدم:
- help = الهدف ، غير موثق
يمكن عكس الإحساس بالمؤهل عن طريق تسبقه بامتداد ^ الطابع ، لذلك
مثال لعرض جميع خيارات التحذير الثنائية (أي تلك التي تكون إما مفعّلة أو متوقفة عن التشغيل
والتي لا تأخذ حجة) التي لها وصف ، استخدم:
--help = تحذيرات ، ^ انضم ، ^ غير موثق
حجة - مساعدة = لا ينبغي أن تتكون فقط من المؤهلات المقلوبة.
من الممكن الجمع بين عدة فئات ، على الرغم من أن هذا عادة ما يقيد الناتج
لدرجة أنه لا يوجد شيء لعرضه. ومع ذلك ، فإن إحدى الحالات التي تعمل فيها هي متى
أحد الفصول هو الهدف. على سبيل المثال ، لعرض كل الهدف المحدد
خيارات التحسين ، استخدم:
- help = الهدف ، المحسنون
تشير - مساعدة = يمكن تكرار الخيار في سطر الأوامر. يعرض كل استخدام متتالي
فئة الخيارات المطلوبة ، مع تخطي تلك التي تم عرضها بالفعل.
إذا كان -Q يظهر الخيار في سطر الأوامر قبل ملف - مساعدة = الخيار ، ثم
نص وصفي معروض بواسطة - مساعدة = تغير. بدلا من وصف المعروض
الخيارات ، يتم توضيح ما إذا كان الخيار ممكّنًا أو معطلاً أو مضبوطًا
إلى قيمة محددة (على افتراض أن المترجم يعرف ذلك عند النقطة التي يكون فيها
- مساعدة = يستخدم الخيار).
هنا مثال مبتور من منفذ ARM دول مجلس التعاون الخليجي:
٪ gcc -Q -mabi = 2 --help = target -c
الخيارات التالية محددة الهدف:
-مابي = 2
-mabort-on-noreturn [معطل]
-خرائط [معطل]
الإخراج حساس لتأثيرات خيارات سطر الأوامر السابقة ، لذلك
على سبيل المثال ، من الممكن معرفة التحسينات التي تم تمكينها في -O2 باستخدام:
-Q -O2 - Help = محسنون
بدلاً من ذلك ، يمكنك اكتشاف التحسينات الثنائية التي تم تمكينها بواسطة -O3 باستخدام:
gcc -c -Q -O3 --help = Optizers> / tmp / O3-opts
gcc -c -Q -O2 --help = Optizers> / tmp / O2-opts
فرق / tmp / O2-opts / tmp / O3-OPts | تمكين grep
- لا - البادئات المتعارف عليها
لا تقم بتوسيع أي روابط رمزية ، وحل المراجع إلى /../ or /./، أو اصنع المسار
مطلق عند إنشاء بادئة نسبية.
--الإصدار
اعرض رقم الإصدار وحقوق النشر الخاصة بـ GCC الذي تم استدعاؤه.
-غلاف
استدعاء كافة الأوامر الفرعية ضمن برنامج مُجمّع. اسم برنامج التضمين و
يتم تمرير معلماته كقائمة مفصولة بفواصل.
gcc -c tc -wrapper gdb، - args
هذا يستدعي كافة البرامج الفرعية لـ دول مجلس التعاون الخليجي مع جدب --args، وبالتالي فإن الاحتجاج cc1 is
جدب --args cc1 .
-فلوجين =الاسم.وبالتالي
قم بتحميل كود البرنامج المساعد في الملف الاسم. لذلك ، من المفترض أنه كائن مشترك ليتم dlopen'd به
المترجم. يتم استخدام الاسم الأساسي لملف الكائن المشترك لتحديد المكون الإضافي
لأغراض تحليل الحجة (انظر -fplugin- أرج-الاسم-مفتاح=قيمنا أدناه). كل
يجب أن يحدد المكون الإضافي وظائف رد الاتصال المحددة في Plugins API.
-fplugin- أرج-الاسم-مفتاح=قيمنا
تحديد حجة تسمى مفتاح بقيمة قيمنا للمكوِّن الإضافي المسمى الاسم.
-fdump-ada-spec[-معتدل البنيه]
بالنسبة لمصدر C و C ++ وتضمين الملفات ، قم بإنشاء مواصفات Ada المقابلة.
- فادا - المواصفات - الأصل =وحدة
بالتزامن مع -fdump-ada-spec[-معتدل البنيه] أعلاه ، أنشئ مواصفات Ada كوحدات فرعية من
أصل وحدة.
-fdump-go-spec =ملف
بالنسبة لملفات الإدخال بأي لغة ، أنشئ إعلانات Go المقابلة بتنسيق ملف. هذا
يولد إعلانات Go "const" و "type" و "var" و "func" والتي قد تكون طريقة مفيدة
لبدء كتابة واجهة Go للرمز المكتوب بلغة أخرى.
@ملف
قراءة خيارات سطر الأوامر من ملف. يتم إدراج الخيارات المقروءة بدلاً من ملف
أصلي @ملف اختيار. إذا ملف غير موجود ، أو لا يمكن قراءته ، ثم الخيار
سيتم التعامل معها حرفيا ، ولن تتم إزالتها.
خيارات في ملف مفصولة بمسافة بيضاء. قد يتم تضمين حرف مسافة بيضاء
في خيار من خلال إحاطة الخيار بالكامل بعلامات اقتباس مفردة أو مزدوجة. أي
قد يتم تضمين الحرف (بما في ذلك الشرطة المائلة للخلف) عن طريق بادئة الحرف المراد أن يكون
مشمول بشرطة مائلة للخلف. ال ملف قد تحتوي نفسها على @ إضافيةملف والخيارات؛ أي
ستتم معالجة هذه الخيارات بشكل متكرر.
تجميع C + + البرامج
تستخدم ملفات المصدر C ++ بشكل تقليدي إحدى اللواحق .C, . سم مكعب, .CPP, .CPP, .c ++, .cpالطرق أو
.cxx؛ غالبًا ما تستخدم ملفات رأس C ++ .ح ح, .hpp, .H، أو (لرمز القالب المشترك) .tcc، و
تستخدم ملفات C ++ المجهزة مسبقًا اللاحقة .ثانيا. يتعرف GCC على الملفات التي تحمل هذه الأسماء و
يجمعها كبرامج C ++ حتى لو اتصلت بالمترجم بنفس طريقة الترجمة
برامج C (عادةً ما تكون بالاسم دول مجلس التعاون الخليجي).
ومع ذلك ، فإن استخدام دول مجلس التعاون الخليجي لا يضيف مكتبة C ++. ز ++ هو برنامج يستدعي GCC و
يحدد تلقائيًا الارتباط بمكتبة C ++. يعامل .c, .h .i الملفات بتنسيق
ملفات المصدر C ++ بدلاً من ملفات المصدر C إلا إذا كان -x يستخدم. هذا البرنامج مفيد ايضا
عند التحويل البرمجي المسبق لملف رأس C بامتداد .h التمديد للاستخدام في مصنفات C ++. تشغيل
العديد من الأنظمة ، ز ++ يتم أيضًا تثبيت الاسم ج ++.
عندما تقوم بترجمة برامج C ++ ، يمكنك تحديد العديد من نفس خيارات سطر الأوامر التي
تستخدمه لتجميع البرامج بأي لغة ؛ أو خيارات سطر الأوامر ذات المعنى لـ C
واللغات ذات الصلة ؛ أو الخيارات ذات المعنى فقط لبرامج C ++.
مزيد من الخيارات السيطرة C لهجة
تتحكم الخيارات التالية في لهجة C (أو اللغات المشتقة من C ، مثل C ++ ،
Objective-C و Objective-C ++) يقبلها المترجم:
-انسى
في الوضع C ، هذا يعادل -std = c90. في وضع C ++ ، يكون مكافئًا لـ
-std = c ++ 98.
يؤدي هذا إلى إيقاف تشغيل بعض ميزات GCC التي لا تتوافق مع ISO C90 (عندما
ترجمة كود C) ، أو من C ++ القياسي (عند ترجمة كود C ++) ، مثل "asm" و
الكلمات الأساسية "typeof" ووحدات الماكرو المحددة مسبقًا مثل "unix" و "vax" التي تحدد ملف
نوع النظام الذي تستخدمه. كما أنه يمكّن ISO غير المرغوب فيه ونادرًا ما يستخدم
ميزة الرسم البياني. بالنسبة لمترجم C ، فإنه يعطل التعرف على نمط C ++ //
التعليقات وكذلك الكلمة الأساسية "المضمنة".
الكلمات الرئيسية البديلة "__asm__" و "__مدد__" و "__inline__" و "__typeof__"
مواصلة العمل على الرغم من -انسى. لن ترغب في استخدامها في برنامج ISO C ،
بالطبع ، ولكن من المفيد وضعها في ملفات رأس قد يتم تضمينها في
مصنفات باستخدام -انسى. وحدات ماكرو بديلة محددة مسبقًا مثل "__unix__" و
تتوفر أيضًا "__vax__" ، مع أو بدون -انسى.
تشير -انسى لا يتسبب الخيار في رفض البرامج التي لا تتبع ISO بدون مبرر. ل
أن، -بيدانتيك مطلوب بالإضافة إلى -انسى.
يتم تحديد الماكرو "__STRICT_ANSI__" مسبقًا عندما يكون ملف -انسى يستخدم الخيار. بعض الرأس
قد تلاحظ الملفات هذا الماكرو وتمتنع عن التصريح عن وظائف معينة أو تحديد
بعض وحدات الماكرو التي لا يتطلبها معيار ISO ؛ هذا لتجنب التدخل
مع أي برامج قد تستخدم هذه الأسماء لأشياء أخرى.
الوظائف التي يتم تضمينها عادةً ولكن لا تحتوي على دلالات محددة بواسطة ISO C (مثل
كـ "customa" و "ffs") ليست وظائف مضمنة عندما -انسى .
-std =
حدد معيار اللغة. هذا الخيار مدعوم حاليًا فقط عندما
ترجمة C أو C ++.
يمكن للمترجم أن يقبل عدة معايير أساسية ، مثل c90 or سي ++ 98، ولهجات جنو
من تلك المعايير ، مثل غنو 90 or gnu ++ 98. عندما يتم تحديد معيار أساسي ، فإن
يقبل المترجم كل البرامج التي تتبع هذا المعيار بالإضافة إلى تلك التي تستخدم امتدادات جنو
التي لا تتعارض معها. على سبيل المثال، -std = c90 إيقاف بعض ميزات دول مجلس التعاون الخليجي
غير المتوافقة مع ISO C90 ، مثل الكلمتين الأساسيتين "asm" و "typeof" ، ولكنها ليست كذلك
امتدادات GNU الأخرى التي ليس لها معنى في ISO C90 ، مثل حذف ملف
مصطلح متوسط من تعبير "؟:". من ناحية أخرى ، عندما تكون لهجة جنو قياسية
محددًا ، يتم تمكين جميع الميزات التي يدعمها المترجم ، حتى عندما تكون
الميزات تغير معنى المعيار الأساسي. نتيجة لذلك ، بعض المطابقة الصارمة
قد يتم رفض البرامج. المعيار المعين يستخدم من قبل -بيدانتيك لتحديد
أي الميزات هي امتدادات جنو بالنظر إلى هذا الإصدار من المعيار. على سبيل المثال
-std = gnu90 -بيدانتيك يحذر من أسلوب C ++ // من التعليقات ، بينما -std = gnu99 -بيدانتيك
لا.
يجب توفير قيمة لهذا الخيار ؛ القيم الممكنة
c90
c89
iso9899: 1990
دعم جميع برامج ISO C90 (بعض امتدادات GNU التي تتعارض مع ISO C90
يتم تعطيل). مثل -انسى لرمز C.
iso9899: 199409
ISO C90 بصيغته المعدلة في التعديل 1.
c99
c9x
iso9899: 1999
iso9899: 199x
ISO C99. هذا المعيار مدعوم بشكل كامل ، وأخطاء modulo و
مشكلات النقطة العائمة (بشكل أساسي ولكن ليس بالكامل تتعلق بميزات C99 الاختيارية
من الملحق F و G). ارىhttp://gcc.gnu.org/c99status.html> للمزيد
معلومة. الأسماء c9x iso9899: 199x مهملة.
c11
c1x
iso9899: 2011
ISO C11 ، مراجعة 2011 لمعيار ISO C. هذا المعيار هو إلى حد كبير
مدعوم بالكامل ، أخطاء modulo ، مشكلات النقطة العائمة (بشكل أساسي ولكن ليس بالكامل
المتعلقة بالميزات الاختيارية C11 من الملحقين F و G) والمرفقات الاختيارية K.
(واجهات فحص الحدود) و L (قابلية التحليل). الاسم c1x مهمل.
غنو 90
غنو 89
لهجة GNU الخاصة بـ ISO C90 (بما في ذلك بعض ميزات C99).
غنو 99
gnu9x
لهجة جنو ISO C99. الاسم gnu9x مهمل.
غنو 11
gnu1x
لهجة جنو ISO C11. هذا هو الإعداد الافتراضي لرمز C. الاسم gnu1x is
إهمال.
سي ++ 98
سي ++ 03
معيار ISO C ++ لعام 1998 بالإضافة إلى التصويب الفني لعام 2003 وبعض الإضافات
تقارير الخلل. مثل -انسى لرمز C ++.
gnu ++ 98
gnu ++ 03
لهجة جنو -std = c ++ 98. هذا هو الإعداد الافتراضي لرمز C ++.
سي ++ 11
سي ++ 0x
معيار ISO C ++ لعام 2011 بالإضافة إلى التعديلات. الاسم سي ++ 0x مهمل.
gnu ++ 11
gnu ++ 0x
لهجة جنو -std = c ++ 11. الاسم gnu ++ 0x مهمل.
سي ++ 14
c ++ 1y
معيار ISO C ++ لعام 2014 بالإضافة إلى التعديلات. الاسم c ++ 1y مهمل.
gnu ++ 14
gnu ++ 1y
لهجة جنو -std = c ++ 14. الاسم gnu ++ 1y مهمل.
سي ++ 1z
المراجعة التالية لمعيار ISO C ++ ، مخطط لها مبدئيًا لعام 2017. الدعم
تجريبية للغاية ، ومن المؤكد تقريبًا أنها ستتغير بطرق غير متوافقة في
الإصدارات المستقبلية.
gnu ++ 1z
لهجة جنو -std = c ++ 1z. الدعم تجريبي للغاية ، وسوف يكاد يكون
بالتأكيد تتغير بطرق غير متوافقة في الإصدارات المستقبلية.
-fgnu89- مضمنة
الخيار -fgnu89- مضمنة يطلب من مجلس التعاون الخليجي استخدام دلالات غنو التقليدية لكلمة "مضمنة"
يعمل عندما يكون في وضع C99.
يكافئ استخدام هذا الخيار تقريبًا إضافة سمة دالة "gnu_inline"
لجميع الوظائف المضمنة.
الخيار -fno- gnu89- مضمنة يخبر مجلس التعاون الخليجي صراحةً باستخدام دلالات C99 لـ
"مضمنة" عندما تكون في وضع C99 أو gnu99 (أي أنها تحدد السلوك الافتراضي). هذه
الخيار غير مدعوم في -std = c90 or -std = gnu90 واسطة.
يمكن استخدام وحدات الماكرو "__GNUC_GNU_INLINE__" و "__GNUC_STDC_INLINE__"
للتحقق من الدلالات السارية للوظائف "المضمنة".
-معلومات اسم الملف
الإخراج إلى التصريحات النموذجية لاسم الملف المحدد لجميع الوظائف المعلنة و / أو
المحددة في وحدة الترجمة ، بما في ذلك تلك الموجودة في ملفات الرأس. هذا الخيار هو
تم تجاهله بصمت في أي لغة أخرى غير C.
بالإضافة إلى الإعلانات ، يشير الملف ، في التعليقات ، إلى أصل كل إعلان
(ملف وسطر مصدر) ، سواء كان الإعلان ضمنيًا أم نموذجيًا أم
غير نمطي (I, N للجديد أو O لكبار السن ، على التوالي ، في الحرف الأول بعد
رقم السطر والنقطتين) ، وما إذا كان جاء من إعلان أو تعريف
(C or F، على التوالي ، في الحرف التالي). في حالة الوظيفة
التعاريف ، قائمة الحجج على غرار K & R متبوعة بإعلاناتهم هي أيضًا
المقدمة ، داخل التعليقات ، بعد الإعلان.
-السقط- الدوال- المتغيرة- المتغيرة
قبول الدوال المتغيرة بدون معلمات مسماة.
على الرغم من أنه من الممكن تحديد مثل هذه الوظيفة ، إلا أنها ليست مفيدة للغاية كما هي
لا يمكن قراءة الحجج. هذا مدعوم فقط لـ C لأن هذا البناء هو
يسمح بها C ++.
-fno- asm
لا تتعرف على "asm" أو "inline" أو "typeof" ككلمة رئيسية ، بحيث يمكن لهذا الرمز استخدامها
الكلمات كمعرفات. يمكنك استخدام الكلمات الرئيسية "__asm__" و "__inline__" و
"__typeof__" بدلاً من ذلك. -انسى يدل -fno- asm.
في C ++ ، يؤثر رمز التبديل هذا فقط على الكلمة الأساسية "typeof" ، نظرًا لأن "asm" و "inline" هما
الكلمات الرئيسية القياسية. قد ترغب في استخدام كلمات مفتاحية -fno-gnu بدلاً من ذلك ، والذي يحتوي على
نفس التأثير. في وضع C99 (-std = c99 or -std = gnu99) ، فإن هذا التبديل يؤثر فقط على
الكلمات الرئيسية "asm" و "typeof" ، نظرًا لأن "inline" هي كلمة رئيسية قياسية في ISO C99.
-fno- بنيت
-fno- المدمج-وظيفة
لا تتعرف على الوظائف المضمنة التي لا تبدأ بها __مدمج_ كبادئة.
عادةً ما يُنشئ مجلس التعاون الخليجي رمزًا خاصًا للتعامل مع وظائف مضمنة معينة بشكل أكبر
بكفاءة على سبيل المثال ، قد تصبح استدعاءات "التخصيص" تعليمات فردية
ضبط المكدس مباشرة ، وقد تصبح المكالمات إلى "memcpy" حلقات نسخ مضمنة. ال
غالبًا ما يكون الرمز الناتج أصغر وأسرع ، ولكن نظرًا لأن الوظيفة لا تستدعي
لفترة أطول على هذا النحو ، لا يمكنك تعيين نقطة توقف على تلك المكالمات ، ولا يمكنك تغييرها
سلوك الوظائف من خلال الارتباط بمكتبة مختلفة. بالإضافة إلى ذلك ، متى
يتم التعرف على وظيفة كدالة مضمنة ، قد يستخدم GCC معلومات حول ذلك
تعمل على التحذير من المشكلات المتعلقة باستدعاءات تلك الوظيفة ، أو لتوليد المزيد
رمز فعال ، حتى لو كان الرمز الناتج لا يزال يحتوي على استدعاءات لهذه الوظيفة. ل
على سبيل المثال ، يتم إعطاء التحذيرات باستخدام -Wformat للمكالمات السيئة إلى "printf" عندما تكون "printf"
المدمج في ومن المعروف أن "strlen" لا يعدل الذاكرة العالمية.
مع -fno- المدمج-وظيفة خيار فقط وظيفة مدمجة وظيفة معطل.
وظيفة يجب ألا تبدأ بـ __مدمج_. إذا تم تسمية وظيفة غير مضمنة
في هذا الإصدار من GCC ، تم تجاهل هذا الخيار. لا يوجد مقابل
-بويلتين-وظيفة اختيار؛ إذا كنت ترغب في تمكين الوظائف المدمجة بشكل انتقائي عندما
استخدام -fno- بنيت or -تقرير، يمكنك تحديد وحدات الماكرو مثل:
#define abs (n) __builtin_abs ((n))
#define strcpy (d، s) __builtin_strcpy ((d)، (s))
استضافت
أكد أن التجميع يستهدف بيئة مستضافة. هذا يعني -بولينتين. A
البيئة المستضافة هي البيئة التي تتوفر فيها المكتبة القياسية بأكملها ، وفي
التي "main" لها نوع إرجاع "int". الأمثلة هي كل شيء تقريبًا باستثناء ملف
نواة. هذا يعادل - قائمة بذاتها.
-تقرير
أكد أن التجميع يستهدف بيئة قائمة بذاتها. هذا يعني
-fno- بنيت. البيئة القائمة بذاتها هي البيئة التي لا يجوز للمكتبة القياسية فيها
موجودة ، وقد لا يكون بدء تشغيل البرنامج بالضرورة في "main". المثال الأكثر وضوحا
هو نواة نظام التشغيل. هذا يعادل -fno- استضافت.
-فوبيناك
تفعيل معالجة توجيهات OpenACC "#pragma acc" في C / C ++ و "! $ acc" في Fortran.
متى -فوبيناك إذا تم تحديده ، يقوم المترجم بإنشاء تعليمات برمجية متسارعة وفقًا لـ
واجهة برمجة تطبيقات OpenACC v2.0http://www.openacc.org/>. هذا الخيار
يدل -الخطأ، وبالتالي فهو مدعوم فقط على الأهداف التي تحظى بدعم
-الخطأ.
لاحظ أن هذه ميزة تجريبية وغير مكتملة وقابلة للتغيير في المستقبل
إصدارات دول مجلس التعاون الخليجي. ارىhttps://gcc.gnu.org/wiki/OpenACC> لمزيد من المعلومات.
-fopenmp
تفعيل معالجة توجيهات OpenMP "#pragma omp" في C / C ++ و "! $ omp" في Fortran.
متى -fopenmp إذا تم تحديده ، يقوم المترجم بإنشاء رمز موازي وفقًا لـ
واجهة برنامج تطبيق OpenMP v4.0http://www.openmp.org/>. هذا الخيار
يدل -الخطأ، وبالتالي فهو مدعوم فقط على الأهداف التي تحظى بدعم
-الخطأ. -fopenmp يدل -فوبينب سيمد.
-فوبينب سيمد
تفعيل معالجة توجيهات SIMD الخاصة بـ OpenMP باستخدام "#pragma omp" في C / C ++ و "! $ omp" في
فورتران. يتم تجاهل توجيهات OpenMP الأخرى.
-فسيلك بلس
تفعيل استخدام ميزات ملحق لغة Cilk Plus لـ C / C ++. عندما يكون الخيار
-فسيلك بلس تم تحديده ، قم بتمكين استخدام ميزات ملحق لغة Cilk Plus
لـ C / C ++. يتبع التطبيق الحالي الإصدار 1.2 من ABI. هذا
ميزة تجريبية مكتملة جزئيًا فقط ، وقد تتغير واجهتها
في الإصدارات المستقبلية من دول مجلس التعاون الخليجي مع تغير المواصفات الرسمية. حاليا ، كل شيء
الميزات ولكن تم تنفيذ "_Cilk_for".
-فنو- tm
عندما يكون الخيار -فنو- tm إذا تم تحديده ، يقوم المترجم بإنشاء تعليمات برمجية لنظام التشغيل Linux
متغير من مستند مواصفات ABI لذاكرة المعاملات الحالية من Intel (مراجعة
1.1 ، 6 مايو 2009). هذه ميزة تجريبية قد تتغير واجهتها في
الإصدارات المستقبلية من دول مجلس التعاون الخليجي ، مع تغير المواصفات الرسمية. يرجى ملاحظة أن لا
يتم دعم جميع البنيات لهذه الميزة.
لمزيد من المعلومات حول دعم دول مجلس التعاون الخليجي لذاكرة المعاملات ،
لاحظ أن ميزة ذاكرة المعاملات غير مدعومة مع استثناءات عدم الاتصال
(- عدم الاستثناءات).
-fms- ملحقات
اقبل بعض التركيبات غير القياسية المستخدمة في ملفات رأس Microsoft.
في كود C ++ ، يسمح هذا لأسماء الأعضاء في الهياكل بأن تكون مشابهة للأنواع السابقة
إعلانات.
typedef int UOW ؛
بناء ABC {
UOW UOW
};
يتم قبول بعض حالات الحقول غير المسماة في الهياكل والنقابات فقط مع هذا
الخيار.
لاحظ أن هذا الخيار مغلق لجميع الأهداف باستثناء أهداف x86 باستخدام ms-abi.
-fplan9- ملحقات
اقبل بعض التركيبات غير القياسية المستخدمة في كود الخطة 9.
وهذا يتيح -fms- ملحقات، يسمح بتمرير المؤشرات إلى الهياكل مع مجهول
الحقول للوظائف التي تتوقع مؤشرات لعناصر من نوع الحقل ، و
تصاريح تشير إلى الحقول المجهولة المعلنة باستخدام محرف. هذا فقط
مدعوم لـ C وليس C ++.
-الخط
دعم الرسوم البيانية ISO C. ال -انسى الخيار (و -الأمراض المنقولة جنسيا خيارات صارمة ISO C
المطابقة) يعني -الخط.
-تقليدي
-التقليدية- CPP
في السابق ، تسببت هذه الخيارات في محاولة GCC لمحاكاة مترجم C المعياري مسبقًا.
هم الآن مدعومون فقط بامتداد -E تحول. يستمر المعالج المسبق في تقديم الدعم
وضع قياسي مسبق. راجع دليل GNU CPP للحصول على التفاصيل.
- عدم تطابق
اسمح بالتعبيرات الشرطية بأنواع غير متطابقة في الوسيطتين الثانية والثالثة.
قيمة مثل هذا التعبير باطلة. هذا الخيار غير مدعوم لـ C ++.
-بلاكس-ناقل-التحويلات
السماح بالتحويلات الضمنية بين المتجهات مع اختلاف أعداد العناصر و / أو
أنواع العناصر غير المتوافقة. لا ينبغي استخدام هذا الخيار للرمز الجديد.
-ممتعة-شار
اسمح للنوع "char" أن يكون بدون إشارة ، مثل "char غير الموقعة".
كل نوع من الأجهزة لديه الافتراضي لما يجب أن يكون "حرف". إما أنها مثل
"حرف غير موقّع" بشكل افتراضي أو مثل "حرف موقّع" بشكل افتراضي.
من الناحية المثالية ، يجب أن يستخدم البرنامج المحمول "حرف موقّع" أو "حرف غير موقّع" عند استخدامه
يعتمد على توقيع الكائن. لكن تمت كتابة العديد من البرامج للاستخدام
"char" عادي وتوقع أن يتم التوقيع عليه ، أو توقع أن يكون بدون توقيع ، اعتمادًا على
الآلات التي كتبوا من أجلها. يتيح لك هذا الخيار وعكسه إنشاء ملف
برنامج العمل مع الافتراضي المعاكس.
دائمًا ما يكون النوع "char" نوعًا مميزًا عن كل من "الأحرف الموقعة" أو "غير الموقعة
char "، على الرغم من أن سلوكه يشبه دائمًا أحد هذين السلوكين.
توقيع شار
اسمح للنوع "char" بالتوقيع ، مثل "char".
لاحظ أن هذا يعادل -fno- بدون توقيع- شار، وهو الشكل السلبي لـ
-ممتعة-شار. وبالمثل ، فإن الخيار -fno- موقعة- شار ما يعادل
-ممتعة-شار.
-موقع-bitfields
-ممتاز-bitfields
-fno- موقعة- bitfields
-fno- غير موقعة- bitfields
تتحكم هذه الخيارات في ما إذا كان حقل البت موقعًا أم غير موقع ، عند الإعلان
لا تستخدم كلمة "موقَّعة" أو "غير موقعة". بشكل افتراضي ، يتم توقيع حقل البت هذا ،
لأن هذا متسق: أنواع الأعداد الصحيحة الأساسية مثل "int" هي أنواع موقعة.
مزيد من الخيارات السيطرة C + + لهجة
يصف هذا القسم خيارات سطر الأوامر ذات المعنى فقط لبرامج C ++.
يمكنك أيضًا استخدام معظم خيارات مترجم جنو بغض النظر عن لغة برنامجك
في. على سبيل المثال ، يمكنك تجميع ملف FirstClass.C مثله:
g ++ -g -frepo -O -c firstClass.C
في هذا المثال فقط -فريبو هو خيار مخصص فقط لبرامج C ++ ؛ يمكنك استعمال ال
خيارات أخرى بأي لغة يدعمها مجلس التعاون الخليجي.
فيما يلي قائمة بالخيارات المتوفرة فقط لترجمة برامج C ++:
-fabi- النسخة =n
استخدم الإصدار n من C ++ ABI. الافتراضي هو الإصدار 0.
يشير الإصدار 0 إلى الإصدار الأكثر توافقًا مع مواصفات C ++ ABI.
لذلك ، سيتغير ABI الذي تم الحصول عليه باستخدام الإصدار 0 في إصدارات مختلفة من G ++
حيث تم إصلاح أخطاء ABI.
الإصدار 1 هو إصدار C ++ ABI الذي ظهر لأول مرة في G ++ 3.2.
الإصدار 2 هو إصدار C ++ ABI الذي ظهر لأول مرة في G ++ 3.4 ، وكان إصدار
الافتراضي من خلال G ++ 4.9.
الإصدار 3 يصحح خطأ في تغيير عنوان ثابت كوسيطة قالب.
الإصدار 4 ، الذي ظهر لأول مرة في G ++ 4.5 ، يطبق تشويشًا قياسيًا للمتجه
أنواع.
الإصدار 5 ، الذي ظهر لأول مرة في G ++ 4.6 ، يصحح تشويه السمة
const / متقلبة في أنواع مؤشرات الوظائف ، ونوع الانحراف العادي ، واستخدام a
وظيفة المعلمة في إعلان معلمة أخرى.
الإصدار 6 ، الذي ظهر لأول مرة في G ++ 4.7 ، يصحح سلوك الترويج لـ C ++ 11
تعدادات النطاق وتعديل حزم وسائط النموذج ، const / static_cast ، بادئة ++
و - ، ودالة نطاق الفئة المستخدمة كوسيطة قالب.
الإصدار 7 ، الذي ظهر لأول مرة في G ++ 4.8 ، يتعامل مع nullptr_t كنوع مضمن
ويصحح تشويه lambdas في نطاق الوسيطة الافتراضي.
الإصدار 8 ، الذي ظهر لأول مرة في G ++ 4.9 ، يصحح سلوك الاستبدال لـ
أنواع الوظائف مع مؤهلات الوظيفة السيرة الذاتية.
انظر أيضا -وابي.
-fabi- التوافق- الإصدار =n
بالنسبة للأهداف التي تدعم الأسماء المستعارة القوية ، يعمل G ++ حول تغيير التغييرات من خلال إنشاء ملفات
اسم مستعار مع اسم مشوه صحيح عند تحديد رمز غير صحيح
اسم مشوه. يحدد رمز التبديل هذا إصدار ABI الذي سيتم استخدامه للاسم المستعار.
بدافع -fabi- النسخة = 0 (الافتراضي) ، هذا الإعداد الافتراضي هو 2. إذا كان إصدار ABI آخر هو
تم تحديده بشكل صريح ، ويتم تعيين هذا الإعداد الافتراضي على 0.
تم تعيين إصدار التوافق أيضًا بواسطة -وابي =n.
-fno- التحكم في الوصول
قم بإيقاف تشغيل جميع عمليات فحص الوصول. يعد هذا المفتاح مفيدًا بشكل أساسي للعمل على حل الأخطاء في ملفات
رمز التحكم في الوصول.
-fcheck- جديد
تحقق من أن المؤشر الذي تم إرجاعه بواسطة "عامل التشغيل الجديد" ليس فارغًا قبل محاولة ذلك
تعديل التخزين المخصص. عادة ما يكون هذا الفحص غير ضروري لأن لغة C ++
المعيار يحدد أن "عامل التشغيل الجديد" لا يعرض سوى 0 إذا تم الإعلان عنه "رمي ()" ، في
في هذه الحالة ، يتحقق المترجم دائمًا من القيمة المعادة حتى بدون هذا الخيار. في
جميع الحالات الأخرى ، عندما يكون لـ "عامل التشغيل الجديد" مواصفات استثناء غير فارغة ، الذاكرة
تتم الإشارة إلى الإرهاق بإلقاء "الأمراض المنقولة جنسياً :: bad_alloc". أنظر أيضا جديد (لا رمي).
-fconstexpr- العمق =n
عيّن الحد الأقصى لعمق التقييم المتداخل لوظائف constexpr C ++ 11 إلى n. حد
هناك حاجة لاكتشاف العودية التي لا نهاية لها أثناء تقييم التعبير المستمر. ال
الحد الأدنى المحدد بالمعيار هو 512.
-fduce-init-list
تمكين خصم معلمة نوع القالب مثل "std :: initializer_list" من قوس-
قائمة المُهيئ المرفقة ، أي
نموذج إعادة توجيه تلقائي (T t) -> رفض النوع (realfn (t))
{
عودة realfn (t) ؛
}
باطل و ()
{
إلى الأمام ({1,2،XNUMX}) ؛ // دعوة إلى الأمام >
}
تم تنفيذ هذا الخصم كامتداد محتمل للاقتراح الأصلي
دلالات لمعيار C ++ 11 ، لكنها لم تكن جزءًا من المعيار النهائي ، لذلك فهي كذلك
معطل بشكل افتراضي. تم إهمال هذا الخيار ، وقد تتم إزالته في المستقبل
نسخة من G ++.
-حقن صديق
قم بإدخال وظائف الصديق في مساحة الاسم المرفقة ، بحيث تكون مرئية في الخارج
نطاق الفئة التي تم الإعلان عنها فيها. تم توثيق وظائف الأصدقاء
للعمل بهذه الطريقة في الدليل المرجعي القديم C ++ المشروح. ومع ذلك ، في ISO C ++ a
لا يمكن العثور على وظيفة الصديق التي لم يتم التصريح عنها في نطاق مرفق إلا باستخدام
البحث المعتمد على الحجة. دول مجلس التعاون الخليجي الافتراضية للسلوك القياسي.
هذا الخيار مخصص للتوافق ، ويمكن إزالته في إصدار مستقبلي من G ++.
-fno- elide- صانعي
يسمح معيار C ++ للتنفيذ بحذف إنشاء مؤقت فقط
تستخدم لتهيئة كائن آخر من نفس النوع. تحديد هذا الخيار تعطيل
هذا التحسين ، ويجبر G ++ على استدعاء مُنشئ النسخ في جميع الحالات.
-fno- فرض- إيه- المواصفات
لا تقم بإنشاء تعليمات برمجية للتحقق من عدم وجود انتهاك لمواصفات الاستثناءات في وقت التشغيل.
ينتهك هذا الخيار معيار C ++ ، ولكنه قد يكون مفيدًا لتقليل حجم الكود بتنسيق
يبني الإنتاج ، مثل تعريف "NDEBUG". هذا لا يعطي رمز المستخدم
الإذن بطرح استثناءات مخالفة لمواصفات الاستثناء ؛ ال
لا يزال برنامج التحويل البرمجي يحسن بناءً على المواصفات ، لذا فإن طرح ملف
ينتج عن الاستثناء سلوك غير محدد في وقت التشغيل.
-fextern-tls-init
-fno-خارجي-tls-init
تسمح معايير C ++ 11 و OpenMP للمتغيرات "thread_local" و "threadprivate" بـ
لديك تهيئة ديناميكية (وقت التشغيل). لدعم هذا ، أي استخدام لمثل هذا المتغير
يمر عبر وظيفة المجمع التي تقوم بأي تهيئة ضرورية. عندما
استخدام وتعريف المتغير في نفس وحدة الترجمة ، يمكن لهذا الحمل
يتم تحسينها بعيدًا ، ولكن عندما يكون الاستخدام في وحدة ترجمة مختلفة ، فهناك
حمل كبير حتى لو كان المتغير لا يحتاج فعليًا إلى ديناميكية
التهيئة. إذا تمكن المبرمج من التأكد من عدم استخدام المتغير في
يحتاج تعريف TU إلى بدء التهيئة الديناميكية (إما لأن المتغير هو
مهيأ بشكل ثابت ، أو سيتم تنفيذ استخدام المتغير في تعريف TU
قبل أي استخدامات في TU آخر) ، يمكنهم تجنب هذا الحمل الزائد بامتداد
-fno-خارجي-tls-init الخيار.
بالنسبة للأهداف التي تدعم الأسماء المستعارة للرموز ، يكون الإعداد الافتراضي هو -fextern-tls-init. على الأهداف
التي لا تدعم الأسماء المستعارة للرموز ، الافتراضي هو -fno-خارجي-tls-init.
-تقديم النطاق
-fno- للنطاق
If -تقديم النطاق يتم تحديد نطاق المتغيرات المعلنة في أ لبيان الحرف الأول
يقتصر على حلقة "for" نفسها ، كما هو محدد بواسطة معيار C ++. لو
-fno- للنطاق يتم تحديد نطاق المتغيرات المعلنة في أ لبيان الحرف الأول
يمتد إلى نهاية النطاق المرفق ، كما كان الحال في الإصدارات القديمة من G ++ و
تطبيقات أخرى (تقليدية) لـ C ++.
إذا لم يتم إعطاء أي علم ، فإن الافتراضي هو اتباع المعيار ، ولكن للسماح والعطاء
تحذير من التعليمات البرمجية ذات النمط القديم التي قد تكون غير صالحة أو مختلفة
السلوك.
كلمات مفتاحية -fno-gnu
لا تتعرف على "typeof" ككلمة رئيسية ، بحيث يمكن لهذا الرمز استخدام هذه الكلمة كملف
المعرف. يمكنك استخدام الكلمة الأساسية "__typeof__" بدلاً من ذلك. -انسى يدل
كلمات مفتاحية -fno-gnu.
- قوالب - ضمنية
لا ترسل أبدًا تعليمات برمجية للقوالب غير المضمنة التي يتم إنشاء مثيل لها ضمنيًا (على سبيل المثال بواسطة
استعمال)؛ ينبعث رمز فقط من أجل إنشاء مثيل صريح.
-fno- ضمني-المضمنة-القوالب
لا ترسل تعليمات برمجية للتشكيلات الضمنية للقوالب المضمنة أيضًا. الافتراضي
هو التعامل مع الأسطر بشكل مختلف بحيث يتم تجميعها مع وبدون الحاجة إلى التحسين
نفس مجموعة عمليات إنشاء مثيل صريحة.
-fno- تنفيذ- المضمنة
لتوفير مساحة ، لا ترسل نسخًا خارج الخط للوظائف المضمنة التي يتحكم فيها
"تطبيق #pragma". هذا يسبب أخطاء رابط إذا لم تكن هذه الوظائف
مضمنة في كل مكان يتم استدعاؤها.
-fms- ملحقات
قم بتعطيل تحذيرات Wpedantic حول التركيبات المستخدمة في MFC ، مثل int الضمني و
الحصول على مؤشر لوظيفة العضو عبر بناء جملة غير قياسي.
-fno- nonansi- مبني
قم بتعطيل الإعلانات المضمنة للوظائف التي لم يتم تفويضها بواسطة ANSI / ISO C. هذه
تشمل "ffs" و "customa" و "_exit" و "index" و "bzero" و "conjf" وغير ذلك من
الوظائف.
-fnotrow-opt
تعامل مع مواصفة استثناء "رمي ()" كما لو كانت مواصفة "noexcept" لـ
تقليل أو إزالة حجم النص الزائد بالنسبة إلى وظيفة دون استثناء
تخصيص. إذا كانت الوظيفة تحتوي على متغيرات محلية من الأنواع غير التافهة
المدمرات ، فإن مواصفات الاستثناء تجعل الوظيفة أصغر حجمًا لأن
يمكن تحسين عمليات تنظيف EH لتلك المتغيرات بعيدًا. التأثير الدلالي
أن استثناء تم طرحه من دالة ذات مواصفات استثناء كهذه
يؤدي إلى استدعاء "إنهاء" بدلاً من "غير متوقع".
- أسماء المشغلين
لا تتعامل مع الكلمات الأساسية لاسم عامل التشغيل "و" أو "bitand" أو "bitor" أو "compl" أو "not" أو "
و "xor" كمرادفات ككلمات رئيسية.
-fno- اختياري- diags
قم بتعطيل التشخيصات التي يقول المعيار أن المترجم لا يحتاج إلى إصدارها.
حاليًا ، التشخيص الوحيد الذي أصدرته G ++ هو التشخيص الذي يحمل الاسم
معاني متعددة داخل الفصل.
-فاشية
قم بالرجوع إلى إصدار أقدم من بعض التشخيصات حول التعليمات البرمجية غير المتوافقة من الأخطاء إلى التحذيرات. هكذا،
استخدام -فاشية يسمح بترجمة بعض التعليمات البرمجية غير المطابقة.
-fno- قوالب-جميلة
عندما تشير رسالة خطأ إلى تخصص قالب دالة ، المترجم
يطبع عادةً توقيع النموذج متبوعًا بوسائط النموذج و
أي نوع من أنواع الحروف أو أسماء الأنواع في التوقيع (على سبيل المثال ، "void f (T) [with T = int]" بدلاً من ذلك
من "void f (int)") بحيث يكون من الواضح أي نموذج متضمن. عندما يكون هناك خطأ
تشير الرسالة إلى تخصص في قالب فئة ، يحذف المترجم أيًا منها
وسيطات النموذج التي تتطابق مع وسيطات القالب الافتراضية لهذا القالب. لو
يؤدي أي من هذه السلوكيات إلى صعوبة فهم رسالة الخطأ بدلاً من فهمها
أسهل ، يمكنك استخدامها -fno- قوالب-جميلة لتعطيلها.
-فريبو
تفعيل إنشاء مثيل تلقائي للقالب في وقت الارتباط. هذا الخيار يعني أيضا
- قوالب - ضمنية.
-فنو- rtti
تعطيل توليد المعلومات حول كل فئة مع وظائف افتراضية للاستخدام من قبل
ميزات تحديد نوع وقت التشغيل C ++ ("dynamic_cast" و "typeid"). اذا أنت
لا تستخدم تلك الأجزاء من اللغة ، يمكنك توفير بعض المساحة باستخدام هذه العلامة.
لاحظ أن معالجة الاستثناءات تستخدم نفس المعلومات ، لكن G ++ تنشئها كـ
بحاجة. لا يزال من الممكن استخدام عامل التشغيل "dynamic_cast" للطبقات التي لا تتطلب ذلك
معلومات نوع وقت التشغيل ، أي يلقي إلى "باطل *" أو إلى فئات أساسية لا لبس فيها.
-إلغاء تخصيص
تمكين الإعلانات العمومية المضمنة
حذف عامل باطل (void *، std :: size_t) noexcept؛
عامل باطل حذف [] (void *، std :: size_t) noexcept؛
كما تم تقديمه في C ++ 14. هذا مفيد لإلغاء تخصيص الاستبدال المحدد من قبل المستخدم
الوظائف التي ، على سبيل المثال ، تستخدم حجم الكائن لجعل إلغاء التخصيص أسرع.
تم التمكين افتراضيًا ضمن -std = c ++ 14 و ما فوق. العلم -مقاس-إلغاء التخصيص يحذر
حول الأماكن التي قد ترغب في إضافة تعريف.
-fstats
انبعث إحصاءات حول معالجة الواجهة الأمامية في نهاية التجميع. هذه
المعلومات مفيدة بشكل عام فقط لفريق تطوير G ++.
- التعدادات الصارمة
السماح للمترجم بالتحسين باستخدام افتراض أن قيمة من النوع المعدود
يمكن أن تكون واحدة فقط من قيم التعداد (كما هو محدد في معيار C ++ ؛
بشكل أساسي ، قيمة يمكن تمثيلها بالحد الأدنى من وحدات البت المطلوبة
تمثل جميع العدادين). قد لا يكون هذا الافتراض صحيحًا إذا كان البرنامج يستخدم
cast لتحويل قيمة عدد صحيح عشوائي إلى النوع الذي تم تعداده.
-ftemplate-backtrace-limit =n
قم بتعيين الحد الأقصى لعدد ملاحظات إنشاء النموذج لتحذير أو خطأ واحد
إلى n. القيمة الافتراضية هي 10.
- عمق القالب =n
قم بتعيين الحد الأقصى لعمق إنشاء مثيل لفئات القوالب إلى n. حد على
هناك حاجة إلى عمق إنشاء مثيل للقالب لاكتشاف التكرار اللانهائي أثناء النموذج
فئة مثيل. يجب ألا تعتمد البرامج المتوافقة مع ANSI / ISO C ++ على حد أقصى
عمق أكبر من 17 (تم تغييره إلى 1024 في C ++ 11). القيمة الافتراضية هي 900 ، مثل
يمكن أن ينفد المترجم من مساحة المكدس قبل أن يصل إلى 1024 في بعض المواقف.
-fno-Threadafe-statics
لا تصدر الكود الإضافي لاستخدام الإجراءات المحددة في C ++ ABI للخيط-
التهيئة الآمنة للإحصاءات المحلية. يمكنك استخدام هذا الخيار لتقليل حجم الكود
قليلاً في الكود الذي لا يحتاج إلى أن يكون آمنًا.
-الفتيل- cxa-atexit
تسجيل المدمرات للكائنات ذات مدة التخزين الثابتة باستخدام "__cxa_atexit"
تعمل بدلاً من وظيفة "atexit". هذا الخيار مطلوب بالكامل
التعامل مع المعايير المتوافقة مع المدمرات الساكنة ، ولكن لا يعمل إلا إذا كانت مكتبة C.
يدعم "__cxa_atexit".
-fno-use-cxa- الحصول على استثناء- ptr
لا تستخدم روتين وقت التشغيل "__cxa_get_exception_ptr". هذه تسبب
"std :: uncaught_exception" غير صحيح ، لكنه ضروري إذا كان روتين وقت التشغيل
غير متاح.
-رؤية-مضمنة-مخفية
يعلن رمز التبديل هذا أن المستخدم لا يحاول مقارنة المؤشرات بمضمنة
وظائف أو طرق يتم فيها أخذ عناوين الوظيفتين بشكل مختلف
الأشياء المشتركة.
تأثير ذلك هو أن دول مجلس التعاون الخليجي قد ، بشكل فعال ، علامة على الأساليب المضمنة مع
"__ سمة__ ((رؤية (" مخفية ")))" بحيث لا تظهر في التصدير
جدول DSO ولا تتطلب مراوغ PLT عند استخدامها داخل DSO.
تمكين هذا الخيار يمكن أن يكون له تأثير كبير على أوقات التحميل والربط لـ DSO كما هو
يقلل بشكل كبير من حجم جدول التصدير الديناميكي عندما تصبح المكتبة ثقيلة
استخدام القوالب.
سلوك رمز التبديل هذا ليس تمامًا مثل تعليم الطرق على أنها مخفية
بشكل مباشر ، لأنه لا يؤثر على المتغيرات الثابتة المحلية للدالة أو السبب
المترجم لاستنتاج أن الوظيفة معرّفة في كائن مشترك واحد فقط.
يمكنك وضع علامة على طريقة على أنها تتمتع برؤية واضحة لإلغاء تأثير
التبديل لتلك الطريقة. على سبيل المثال ، إذا كنت تريد مقارنة المؤشرات بملف
طريقة مضمنة معينة ، يمكنك وضع علامة عليها على أنها ذات رؤية افتراضية. بمناسبة ال
إن إحاطة الفصل برؤية واضحة ليس له أي تأثير.
الأساليب المضمنة التي تم إنشاء مثيل لها بشكل صريح لا تتأثر بهذا الخيار كربطها
وإلا عبر حدود مكتبة مشتركة.
-الرؤية- ms- التوافق
تحاول هذه العلامة استخدام إعدادات الرؤية لإنشاء نموذج ارتباط C ++ الخاص بـ GCC
متوافق مع Microsoft Visual Studio.
يقوم العلم بإجراء هذه التغييرات على نموذج الربط لدول مجلس التعاون الخليجي:
1. يقوم بتعيين الرؤية الافتراضية على "مخفي" ، مثل -رؤية = مخفي.
2. لا يتم إخفاء الأنواع ، ولكن ليس أعضائها ، بشكل افتراضي.
3. تم تخفيف قاعدة التعريف الواحد للأنواع بدون رؤية واضحة
المواصفات التي تم تحديدها في أكثر من كائن مشترك: تلك التعريفات
مسموح بها إذا كان مسموحًا بها في حالة عدم استخدام هذا الخيار.
في الكود الجديد من الأفضل استخدام -رؤية = مخفي وتصدير تلك الفئات التي
يُقصد به أن يكون مرئيًا من الخارج. لسوء الحظ ، من الممكن أن تعتمد التعليمات البرمجية ،
ربما عن طريق الخطأ ، على سلوك Visual Studio.
من بين عواقب هذه التغييرات أن أعضاء البيانات الثابتة من نفس النوع
بنفس الاسم ولكن يتم تعريفها في كائنات مشتركة مختلفة مختلفة ، لذا فهي متغيرة
واحد لا يغير الآخر. وهذه المؤشرات لأعضاء الوظيفة المحددين في
قد لا تقارن الكائنات المشتركة المختلفة بالتساوي. عندما يتم إعطاء هذه الراية ، فإنها تكون أ
انتهاك ODR لتعريف الأنواع التي تحمل الاسم نفسه بشكل مختلف.
-fvtable- تحقق =[الأمراض المنقولة جنسيا|بريينت|لا شيء]
قم بتشغيل (أو إيقاف تشغيله ، إذا كنت تستخدم -fvtable-check = لا شيء) ميزة الأمان التي تتحقق في
وقت التشغيل ، لكل مكالمة افتراضية ، أن مؤشر vtable الذي يتم من خلاله المكالمة
إجراء صالح لنوع الكائن ، ولم يتم إتلافه أو الكتابة فوقه.
إذا تم اكتشاف مؤشر vtable غير صالح في وقت التشغيل ، فسيتم الإبلاغ عن خطأ و
توقف تنفيذ البرنامج على الفور.
يؤدي هذا الخيار إلى إنشاء هياكل بيانات وقت التشغيل عند بدء تشغيل البرنامج ، وهي
تستخدم للتحقق من مؤشرات vtable. الخيارات الأمراض المنقولة جنسيا بريينت سيطر ال
توقيت بناء هياكل البيانات هذه. في كلتا الحالتين تكون هياكل البيانات
بنيت قبل أن يصل التنفيذ إلى "الرئيسي". استخدام -fvtable- تحقق = الأمراض المنقولة جنسياً يسبب البيانات
الهياكل التي سيتم بناؤها بعد تحميل المكتبات المشتركة وتهيئتها.
-fvtable-check = preinit يتسبب في بنائها قبل إنشاء المكتبات المشتركة
تحميلها وتهيئتها.
إذا ظهر هذا الخيار عدة مرات في سطر الأوامر بقيم مختلفة
محدد، لا شيء يأخذ أولوية قصوى على كليهما الأمراض المنقولة جنسيا بريينت; بريينت يأخذ
الأولوية على الأمراض المنقولة جنسيا.
-fvtv- التصحيح
عندما تستخدم بالتزامن مع -fvtable- تحقق = الأمراض المنقولة جنسياً or -fvtable-check = preinitاسباب
إصدارات تصحيح وظائف وقت التشغيل لميزة التحقق vtable لتكون
مسمى. تؤدي هذه العلامة أيضًا إلى قيام المحول البرمجي بتسجيل معلومات حول أي جدول
المؤشرات التي يعثر عليها لكل فئة. هذه المعلومات مكتوبة في ملف اسمه
vtv_set_ptr_data.log في الدليل المسمى بمتغير البيئة VTV_LOGS_DIR
إذا تم تحديد ذلك أو دليل العمل الحالي خلاف ذلك.
ملاحظة: هذه الميزة يلحق البيانات إلى ملف السجل. إذا كنت تريد ملف سجل جديد ، كن
تأكد من حذف أي واحد موجود.
التهم -fvtv
هذه علامة تصحيح. عندما تستخدم بالتزامن مع -fvtable- تحقق = الأمراض المنقولة جنسياً or
-fvtable-check = preinit، يؤدي هذا إلى قيام المترجم بتتبع العدد الإجمالي لـ
المكالمات الافتراضية التي تواجهها وعدد عمليات التحقق التي تُدخلها. كذلك
تحسب عدد الاستدعاءات لوظائف مكتبة وقت تشغيل معينة تُدرجها و
يسجل هذه المعلومات لكل وحدة ترجمة. المترجم يكتب هذه المعلومات
إلى ملف اسمه vtv_count_data.log في الدليل المسمى بمتغير البيئة
VTV_LOGS_DIR إذا تم تحديد ذلك أو دليل العمل الحالي خلاف ذلك. كذلك
يحسب حجم مجموعات المؤشر vtable لكل فئة ، ويكتب هذه المعلومات
إلى vtv_class_set_sizes.log في نفس الدليل.
ملاحظة: هذه الميزة يلحق البيانات إلى ملفات السجل. للحصول على ملفات سجل حديثة ، تأكد من ذلك
احذف أي منها موجودة.
- ضعيف
لا تستخدم دعم الرمز الضعيف ، حتى لو تم توفيره بواسطة الرابط. بشكل افتراضي ، G ++
يستخدم رموزًا ضعيفة إذا كانت متوفرة. هذا الخيار موجود فقط للاختبار و
لا ينبغي استخدامها من قبل المستخدمين النهائيين ؛ ينتج عنه رمز رديء وليس له أي فوائد.
يمكن إزالة هذا الخيار في إصدار مستقبلي من G ++.
-نوستدينك ++
لا تبحث عن ملفات الرأس في الدلائل القياسية الخاصة بـ C ++ ، ولكن قم بذلك
لا يزال البحث في الدلائل القياسية الأخرى. (يُستخدم هذا الخيار عند إنشاء ملف
مكتبة C ++.)
بالإضافة إلى ذلك ، فإن خيارات إنشاء التحسين والتحذير والتشفير هذه لها معاني فقط
لبرامج C ++:
-وابي (C و Objective-C و C ++ و Objective-C ++ فقط)
عندما صريح -fabi- النسخة =n الخيار المستخدم ، يتسبب في تحذير G ++ عند إنشائه
رمز ربما يكون غير متوافق مع البائع المحايد C ++ ABI. منذ G ++ الآن
التخلف عن -fabi- النسخة = 0, -وابي ليس له أي تأثير إلا إذا كان إصدار ABI أقدم
المختار (مع -fabi- النسخة =n) أو إصدار توافق أقدم (مع
-وابي =n or -fabi- التوافق- الإصدار =n).
على الرغم من الجهود المبذولة للتحذير من جميع هذه الحالات ، فمن المحتمل أن يكون هناك بعض
الحالات التي لم يتم التحذير بشأنها ، على الرغم من أن G ++ تُنشئ رمزًا غير متوافق.
قد تكون هناك أيضًا حالات يتم فيها إرسال التحذيرات على الرغم من وجود الكود
ولدت متوافق.
يجب عليك إعادة كتابة التعليمات البرمجية الخاصة بك لتجنب هذه التحذيرات إذا كنت قلقًا بشأن
حقيقة أن الكود الذي تم إنشاؤه بواسطة G ++ قد لا يكون متوافقًا مع الكود الذي تم إنشاؤه بواسطة
المترجمون الآخرون.
-وابي يمكن أيضًا استخدامها مع رقم إصدار صريح للتحذير من التوافق
مع خاص -fabi- النسخة المستوى ، على سبيل المثال -وابي = 2 للتحذير من التغييرات المتعلقة بـ
-fabi- النسخة = 2. يتم تعيين رقم الإصدار أيضًا -fabi- التوافق- الإصدار =n.
حالات عدم التوافق المعروفة في -fabi- النسخة = 2 (وهو الإعداد الافتراضي من GCC 3.4 إلى
4.9) تشمل:
* تم إفساد قالب مع معلمة قالب غير من النوع لنوع المرجع
بشكل غير صحيح:
خارجي int N ؛
نموذج هيكل S {} ؛
باطل ) {2}
تم إصلاح هذا في -fabi- النسخة = 3.
* أنواع ناقلات SIMD المعلنة باستخدام "__ السمة ((vector_size))" كانت مشوهة في
طريقة غير قياسية لا تسمح بالحمل الزائد على الوظائف التي تأخذ المتجهات
بأحجام مختلفة.
تم تغيير التشويه في -fabi- النسخة = 4.
* تم تشويه "__attribute ((const))" و "noreturn" كمعرفات النوع ، و
تم طي "نوع" التصريح البسيط.
تم إصلاح مشكلات التشويش هذه في -fabi- النسخة = 5.
* يتم ترقية العدادين المقيدين بالنطاق كوسيطات لوظيفة متغيرة مثل
العدادين غير الخاضعين للنطاق ، مما يتسبب في تقديم "va_arg" للشكوى. في معظم الأهداف هذا لا
تؤثر في الواقع على المعامل الذي يمر عبر ABI ، حيث لا توجد طريقة لتمرير الوسيطة
أصغر من "كثافة العمليات".
أيضًا ، قام ABI بتغيير تشويه حزم وسيطات القوالب ، "const_cast" ،
"static_cast" ، زيادة / إنقاص البادئة ، ووظيفة نطاق الفئة المستخدمة كملف
حجة القالب.
تم تصحيح هذه القضايا في -fabi- النسخة = 6.
* تم تشويه Lambdas في نطاق الوسيطة الافتراضي بشكل غير صحيح ، وتغير ABI
تشويه "nullptr_t".
تم تصحيح هذه القضايا في -fabi- النسخة = 7.
* عند تعديل نوع دالة مع مؤهلات وظيفة السيرة الذاتية ، فإن غير مؤهل
تم التعامل مع نوع الوظيفة بشكل غير صحيح على أنه مرشح بديل.
تم إصلاح هذا في -fabi- النسخة = 8.
كما يحذر من التغييرات المتعلقة بـ psABI. يتغير psABI المعروف في هذه المرحلة
تتضمن:
* بالنسبة لـ SysV / x86-64 ، يتم تمرير النقابات ذات الأعضاء "المزدوجة الطويلة" في الذاكرة كـ
المحدد في psABI. على سبيل المثال:
الاتحاد يو {
طويل مزدوج لد ؛
أنا
};
يتم دائمًا تمرير "union U" في الذاكرة.
-Wabi- الوسم (C ++ و Objective-C ++ فقط)
تحذير عند استخدام نوع بعلامة ABI في سياق لا يحتوي على علامة ABI هذه.
يرى C + + السمات لمزيد من المعلومات حول علامات ABI.
-الطبيب- dtor- الخصوصية (C ++ و Objective-C ++ فقط)
تحذير عندما يبدو الفصل غير قابل للاستخدام لأن جميع المنشئين أو المدمرين في ذلك
فئة خاصة ، وليس لديها أصدقاء ولا وظائف عامة ثابتة للأعضاء.
تحذير أيضًا إذا لم تكن هناك طرق غير خاصة ، وكان هناك عضو خاص واحد على الأقل
دالة ليست منشئًا أو مدمرًا.
-Wdelete-غير الظاهري-dtor (C ++ و Objective-C ++ فقط)
تحذير عند استخدام "حذف" لتدمير مثيل لفئة بها افتراضية
الوظائف والمدمِّر غير الظاهري. من غير الآمن حذف مثيل لمشتق
فئة من خلال مؤشر إلى فئة أساسية إذا كانت الفئة الأساسية لا تحتوي على فئة افتراضية
المدمر. تم تمكين هذا التحذير من قبل الجدار شاحن.
لاحقة حرفيّة (C ++ و Objective-C ++ فقط)
تحذير عندما تتبع سلسلة أو حرف حرفي لاحقة ud لا تفعل ذلك
تبدأ بشرطة سفلية. كامتداد مطابق ، يتعامل مجلس التعاون الخليجي مع هذه اللواحق على أنها
منفصلة عن الرموز المميزة للمعالجة المسبقة من أجل الحفاظ على التوافق العكسي مع الكود
يستخدم تنسيق وحدات الماكرو من " ". على سبيل المثال:
#تعريف __STDC_FORMAT_MACROS
#يشمل
#يشمل
انت مين() {
int64_t i64 = 123 ؛
printf ("My int64:٪" PRId64 "\ n"، i64)؛
}
في هذه الحالة ، يتم التعامل مع "PRId64" كرمز منفصل للمعالجة المسبقة.
يتم تمكين هذا التحذير بشكل افتراضي.
-مقلق (C ++ و Objective-C ++ فقط)
تحذير عند حدوث تحويل تضييق محظور بواسطة C ++ 11 داخل { }، على سبيل المثال
int i = {2.2} ؛ // خطأ: التضييق من ضعف إلى كثافة العمليات
يتم تضمين هذا العلم في الجدار شاحن -Wc ++ 11-متوافق.
بدافع -std = c ++ 11, -لا تضيق يمنع التشخيص المطلوب وفقًا للمعيار.
لاحظ أن هذا لا يؤثر على معنى الكود المشكل جيدًا ؛ تضييق التحويلات
لا تزال تعتبر سيئة التشكيل في سياق SFINAE.
-لا استثناء (C ++ و Objective-C ++ فقط)
تحذير عندما يتم تقييم تعبير noexcept إلى false بسبب استدعاء دالة
الذي لا يحتوي على مواصفات استثناء غير رمي (مثل "رمي ()" أو
"noexcept") ولكن من المعروف من قبل المترجم أنه لا يطرح استثناءً أبدًا.
-غير-افتراضية- dtor (C ++ و Objective-C ++ فقط)
تحذير عندما يكون للفصل وظائف افتراضية ومدمر غير افتراضي يمكن الوصول إليه
نفسها أو في فئة أساسية متعددة الأشكال يمكن الوصول إليها ، وفي هذه الحالة يكون ذلك ممكنًا ولكن
غير آمن لحذف مثيل لفئة مشتقة من خلال مؤشر إلى الفئة نفسها
أو الفئة الأساسية. يتم تمكين هذا التحذير تلقائيًا إذا -Weffc ++ محدد.
-تسجيل (C ++ و Objective-C ++ فقط)
تحذير عندما لا يتطابق ترتيب المُهيئين للعضو الوارد في الكود مع الترتيب
التي يجب أن يتم إعدامهم فيها. على سبيل المثال:
هيكل أ {
أنا
الباحث ي
أ (): ي (0) ، أنا (1) {}
};
يقوم المترجم بإعادة ترتيب مُهيِّئات العضو لـ "i" و "j" لمطابقة
أمر إعلان للأعضاء ، مع إصدار تحذير بهذا المعنى. هذا التحذير
مكن من قبل الجدار شاحن.
-صيغة-رقمية-حرفية (C ++ و Objective-C ++ فقط)
اقبل لواحق الأرقام التخيلية أو الثابتة أو المحددة آليًا على أنها GNU
ملحقات. عند إيقاف تشغيل هذا الخيار ، يتم التعامل مع هذه اللواحق على أنها مستخدم C ++ 11-
اللواحق الرقمية المحددة. يتم تشغيل هذا بشكل افتراضي لجميع لهجات ما قبل C ++ 11
وجميع لهجات جنو: -std = c ++ 98, -std = gnu ++ 98, -std = gnu ++ 11, -std = gnu ++ 14. هذا
يكون الخيار معطلاً افتراضيًا بالنسبة لـ ISO C ++ 11 وما بعده (-std = c ++ 11، ...).
ما يلي -W ... الخيارات لا تتأثر الجدار شاحن.
-Weffc ++ (C ++ و Objective-C ++ فقط)
تحذير من انتهاكات إرشادات الأسلوب التالية من Scott Meyers ' الطُرق الفعّالة
C + + سلسلة كتب:
* تحديد مُنشئ نسخة وعامل تخصيص للفئات ذات-
الذاكرة المخصصة.
* تفضيل التهيئة للتعيين في المنشئات.
* اجعل "عامل التشغيل =" إرجاع مرجع إلى * هذا.
* لا تحاول إرجاع مرجع عندما يجب عليك إرجاع كائن.
* يميز بين أشكال البادئة و postfix لمشغلي الزيادة والإنقاص.
* لا تفرط في تحميل "&&" أو "||" أو "،".
يتيح هذا الخيار أيضًا -غير-افتراضية- dtor، والتي تعد أيضًا واحدة من C ++ الفعالة
التوصيات. ومع ذلك ، تم تمديد الفحص للتحذير من عدم وجود افتراضية
المدمر في فئات قواعد غير متعددة الأشكال يمكن الوصول إليها أيضًا.
عند تحديد هذا الخيار ، يجب أن تدرك أن رؤوس المكتبة القياسية لا تخضع للجميع
من هذه المبادئ التوجيهية ؛ استعمال البقرى -v لتصفية تلك التحذيرات.
-قضاء-باطل-الحارس (C ++ و Objective-C ++ فقط)
تحذير من استخدام "NULL" غير مسبوق كحارس. عند التجميع فقط مع GCC
هذا حارس صالح ، حيث يتم تعريف "NULL" بـ "__null". على الرغم من أنها لاغية
ثابت المؤشر بدلاً من المؤشر الفارغ ، فمن المضمون أن يكون من نفس الحجم
كمؤشر. لكن هذا الاستخدام غير قابل للنقل عبر المجمعين المختلفين.
-Wno- غير- قالب- صديق (C ++ و Objective-C ++ فقط)
قم بتعطيل التحذيرات عندما يتم التصريح عن وظائف صديق غير مقولبة داخل قالب.
منذ ظهور دعم مواصفات القالب الصريح في G ++ ، إذا كان اسم ملف
الصديق هو معرف غير مؤهل (على سبيل المثال ، صديق فو (دولي)) ، مواصفات لغة C ++
يطلب من الصديق أن يعلن أو يحدد وظيفة عادية غير نموذجية. (الجزء
14.5.3). قبل تطبيق G ++ لمواصفات صريحة ، يمكن أن تكون المعرفات غير المؤهلة
تُفسر على أنها تخصص معين لوظيفة مقولبة. لأن هذا
لم يعد السلوك غير المطابق هو السلوك الافتراضي لـ G ++ ،
-غير-قالب-صديق يسمح للمترجم بالتحقق من الكود الموجود بحثًا عن مشكلة محتملة
البقع وهو قيد التشغيل بشكل افتراضي. يمكن إيقاف سلوك المترجم الجديد هذا باستخدام
-Wno- غير- قالب- صديق، والذي يحافظ على كود المترجم المطابق لكنه يعطل
تحذير مفيد.
- أسلوب القفر (C ++ و Objective-C ++ فقط)
تحذير إذا تم استخدام النمط القديم (النمط C) المصبوب إلى نوع غير باطل في برنامج C ++.
يلقي النمط الجديد ("dynamic_cast" و "static_cast" و "reinterpret_cast" و
"const_cast") أقل عرضة للتأثيرات غير المقصودة وأسهل بكثير في البحث عنها.
-Woverloaded- الظاهري (C ++ و Objective-C ++ فقط)
تحذير عندما يخفي إعلان دالة وظائف افتراضية من فئة أساسية. ل
على سبيل المثال ، في:
هيكل أ {
الفراغ الظاهري f () ؛
};
هيكل ب: عام أ {
باطل f (int) ؛
};
نسخة الفئة "أ" من "f" مخفية في "ب" ، والرمز مثل:
ب * ب ؛
ب-> و () ؛
فشل في ترجمة.
-Wno-pmf- التحويلات (C ++ و Objective-C ++ فقط)
قم بتعطيل التشخيص لتحويل مؤشر منضم إلى دالة عضو إلى عادي
المؤشر.
-Wsign- الترويجي (C ++ و Objective-C ++ فقط)
تحذير عندما يختار دقة التحميل الزائد ترقية من نوع غير موقعة أو معدود إلى
نوع موقّع ، فوق تحويل إلى نوع غير موقع من نفس الحجم. سابق
حاولت إصدارات G ++ الحفاظ على اللامبالاة ، لكن المعيار الحالي يفرض
السلوك.
مزيد من الخيارات السيطرة الهدف-C الهدف- C ++ اللهجات
(ملاحظة: لا يصف هذا الدليل لغتي Objective-C و Objective-C ++
أنفسهم.
يصف هذا القسم خيارات سطر الأوامر ذات المعنى فقط لـ Objective-C
وبرامج Objective-C ++. يمكنك أيضًا استخدام معظم لغة جنو المستقلة
خيارات المترجم. على سبيل المثال ، يمكنك تجميع ملف some_class.m مثله:
دول مجلس التعاون الخليجي -g -fgnu-runtime -O -c some_class.m
في هذا المثال، -fgnu- وقت التشغيل هو خيار مخصص فقط لـ Objective-C و Objective-C ++
برامج؛ يمكنك استخدام الخيارات الأخرى مع أي لغة تدعمها GCC.
لاحظ أنه نظرًا لأن Objective-C هو امتداد للغة C ، فإن مجموعات Objective-C
قد تستخدم أيضًا خيارات خاصة بالواجهة الأمامية لـ C (على سبيل المثال ، -تقليدي). وبالمثل،
قد تستخدم تصنيفات Objective-C ++ خيارات محددة لـ C ++ (على سبيل المثال ، -وابي).
فيما يلي قائمة بالخيارات المتوفرة فقط لتجميع Objective-C و Objective-C ++
برامج:
-fconstant-string-class =اسم الطبقة
استعمل اسم الطبقة كاسم للفئة المطلوب إنشاء مثيل لها لكل سلسلة حرفية
المحدد بالصيغة "@" ... "". اسم الفئة الافتراضي هو "NXConstantString" إذا
يتم استخدام وقت تشغيل GNU و "NSConstantString" إذا كان وقت تشغيل NeXT
مستخدمة (انظر أدناه). ال -الثابت- cfstrings الخيار ، إذا كان موجودًا أيضًا ، يلغي
-الثبات- سلسلة- فئة وضع وسبب وضع "@" ... "" حرفيًا ثابتًا
سلاسل CoreFoundation.
-fgnu- وقت التشغيل
قم بإنشاء رمز كائن متوافق مع وقت تشغيل GNU Objective-C القياسي. هذا هو
الافتراضي لمعظم أنواع الأنظمة.
-وقت التشغيل التالي
توليد الإخراج المتوافق مع وقت تشغيل NeXT. هذا هو الإعداد الافتراضي للمستندة إلى NeXT
الأنظمة ، بما في ذلك Darwin و Mac OS X. يتم تحديد الماكرو "__NEXT_RUNTIME__" مسبقًا إذا
(وفقط إذا) تم استخدام هذا الخيار.
-fno- لا شيء- المستقبلات
افترض أن جميع رسائل Objective-C ترسل ("[Receiver message: arg]") في هذا
تضمن وحدة الترجمة أن جهاز الاستقبال ليس "لا شيء". هذا يسمح للمزيد
نقاط دخول فعالة في وقت التشغيل لاستخدامها. هذا الخيار متاح فقط في
بالتزامن مع وقت تشغيل NeXT وإصدار ABI 0 أو 1.
-fobjc-abi-version =n
استخدم الإصدار n من Objective-C ABI لوقت التشغيل المحدد. هذا الخيار هو
مدعوم حاليًا فقط لوقت تشغيل NeXT. في هذه الحالة ، الإصدار 0 هو ملف
التقليدية (32 بت) ABI بدون دعم للخصائص وغيرها من Objective-C 2.0
الاضافات. الإصدار 1 هو ABI التقليدي (32 بت) مع دعم للخصائص و
إضافات أخرى من Objective-C 2.0. الإصدار 2 هو ABI الحديث (64 بت). إذا لم يكن هناك شيء
المحدد ، الافتراضي هو الإصدار 0 على الأجهزة المستهدفة 32 بت ، والإصدار 2 على 64 بت
الآلات المستهدفة.
-fobjc-call-cxx-cdtors
لكل فئة Objective-C ، تحقق مما إذا كان أي من متغيرات مثيلها هو كائن C ++
باستخدام مُنشئ افتراضي غير تافه. إذا كان الأمر كذلك ، فجمع "- (معرف) خاص"
.cxx_construct "أسلوب مثيل يقوم بتشغيل أدوات إنشاء افتراضية غير تافهة على أي
مثل متغيرات الحالة بالترتيب ، ثم ترجع "self". وبالمثل ، تحقق من وجود أي
متغير المثيل هو كائن C ++ به مدمر غير تافه ، وإذا كان الأمر كذلك ، فقم بتوليفه
طريقة خاصة "- (باطلة) .cxx_destruct" تعمل على تشغيل جميع أدوات التدمير الافتراضية هذه ، بتنسيق
ترتيب عكسي.
وبالتالي تم إنشاء الطرق "- (id) .cxx_construct" و "- (void) .cxx_destruct" فقط
تعمل على متغيرات الحالة المعلنة في فئة Objective-C الحالية ، وليس تلك
موروثة من superclasses. إنها مسؤولية وقت تشغيل Objective-C لـ
استدعاء كل هذه الأساليب في التسلسل الهرمي لميراث الكائن. تحقيق الشخصية)
يتم استدعاء أساليب .cxx_construct "بواسطة وقت التشغيل مباشرة بعد كائن جديد
يتم تخصيص المثيل ؛ يتم استدعاء الطرق "- (باطل) .cxx_destruct" على الفور
قبل أن يلغي وقت التشغيل تخصيص مثيل كائن.
حتى كتابة هذه السطور ، فقط وقت تشغيل NeXT على نظام التشغيل Mac OS X 10.4 والإصدارات الأحدث لديه دعم لـ
استدعاء أساليب "- (id) .cxx_construct" و "- (void) .cxx_destruct".
-fobjc- إرسال مباشر
السماح بالقفزات السريعة إلى مرسل الرسالة. في داروين يتم تحقيق ذلك عبر
صفحة الاتصالات.
استثناءات fobjc
تمكين الدعم النحوي لمعالجة الاستثناءات المنظمة في Objective-C ، على غرار
ما تقدمه C ++ و Java. هذا الخيار مطلوب لاستخدام Objective-C
الكلمات الأساسيةtry وthrow وcatch و @ أخيرًا وsynchronized. هذا الخيار متاح
مع كل من وقت تشغيل GNU ووقت تشغيل NeXT (ولكن غير متاح بالتزامن مع
وقت تشغيل NeXT في نظام التشغيل Mac OS X 10.2 والإصدارات الأقدم).
-fobjc-GC
تفعيل جمع البيانات المهملة (GC) في برامج Objective-C و Objective-C ++. هذا الخيار
متاح فقط مع وقت تشغيل NeXT ؛ وقت تشغيل جنو يحتوي على نوع مختلف من القمامة
تطبيق مجموعة لا يتطلب إشارات خاصة للمترجم.
-fobjc-nilcheck
لوقت تشغيل NeXT مع الإصدار 2 من ABI ، تحقق من عدم وجود جهاز استقبال في الطريقة
الدعوات قبل إجراء استدعاء الطريقة الفعلية. هذا هو الافتراضي ويمكن أن يكون
باستخدام المعوقين -fno-objc-nilcheck. لا يتم فحص طرق الفصل والمكالمات الفائقة أبدًا
لصفر بهذه الطريقة بغض النظر عن الغرض من هذا العلم. حاليا هذا العلم يفعل
لا شيء عند استخدام وقت تشغيل جنو أو إصدار أقدم من وقت تشغيل NeXT ABI.
-fobjc-std = objc1
تتوافق مع بناء جملة لغة Objective-C 1.0 ، اللغة المعترف بها من قبل GCC 4.0.
يؤثر هذا فقط على إضافات Objective-C إلى لغة C / C ++؛ لا يؤثر
المطابقة لمعايير C / C ++ ، والتي يتم التحكم فيها بواسطة لهجة C / C ++ المنفصلة
أعلام الخيار. عند استخدام هذا الخيار مع Objective-C أو Objective-C ++
المترجم ، يتم رفض أي بناء جملة Objective-C لم يتم التعرف عليه بواسطة GCC 4.0. هذه
مفيد إذا كنت بحاجة إلى التأكد من أنه يمكن تجميع كود Objective-C الخاص بك باستخدام
الإصدارات الأقدم من دول مجلس التعاون الخليجي.
فصول- freeplace-objc
تنبعث تعليمات علامة خاصة ld(1) لا لربط ثابت في الكائن الناتج
ملف والسماح دولد(1) لتحميله في وقت التشغيل بدلاً من ذلك. يستخدم هذا في
بالتزامن مع وضع تصحيح الأخطاء Fix-and-Continue ، حيث يكون ملف الكائن بتنسيق
يمكن إعادة تجميع السؤال وإعادة تحميله ديناميكيًا في سياق البرنامج
التنفيذ ، دون الحاجة إلى إعادة تشغيل البرنامج نفسه. حاليًا ، Fix-and-
لا تتوفر وظيفة المتابعة إلا بالتزامن مع وقت تشغيل NeXT على جهاز Mac
OS X 10.3 والإصدارات الأحدث.
-fzero-link
عند التحويل البرمجي لوقت تشغيل NeXT ، يستبدل المترجم عادةً المكالمات إلى
"objc_getClass (" ... ")" (عندما يكون اسم الفصل معروفًا في وقت الترجمة) باستخدام
مراجع الفئة الثابتة التي تتم تهيئتها في وقت التحميل ، مما يؤدي إلى تحسين وقت التشغيل
أداء. تحديد -fzero-link العلم يمنع هذا السلوك وأسبابه
استدعاء "objc_getClass (" ... ")" ليتم الاحتفاظ بها. هذا مفيد في Zero-Link
وضع التصحيح ، لأنه يسمح بتعديل تطبيقات الفئة الفردية
أثناء تنفيذ البرنامج. وقت تشغيل GNU حاليًا يحتفظ دائمًا بالمكالمات إلى
"objc_get_class (" ... ")" بغض النظر عن خيارات سطر الأوامر.
-fno-local-ivars
يمكن الوصول إلى متغيرات الحالة الافتراضية في Objective-C كما لو كانت محلية
المتغيرات من داخل طرق الفئة التي تم الإعلان عنها فيها. يمكن أن يؤدي ذلك إلى
التظليل بين متغيرات الحالة والمتغيرات الأخرى المعلنة إما محليًا
داخل طريقة فئة أو عالميًا بنفس الاسم. تحديد -fno-local-ivars
تعمل العلامة على تعطيل هذا السلوك وبالتالي تجنب مشكلات التظليل المتغيرة.
-fivar- الرؤية =[جمهور|محمي|خاص|صفقة]
اضبط رؤية متغير المثيل الافتراضي على الخيار المحدد لذلك هذا المثال
تم الإعلان عن المتغيرات خارج نطاق أي توجيهات لمعدِّل الوصول بشكل افتراضي إلى
الرؤية المحددة.
-جن- decls
تفريغ إعلانات واجهة لجميع الفئات التي تظهر في الملف المصدر إلى ملف مسمى
sourcename.decl.
- تعيين - اعتراض (Objective-C و Objective-C ++ فقط)
تحذير عندما يتم اعتراض مهمة Objective-C بواسطة جامع البيانات المهملة.
-لا بروتوكول (Objective-C و Objective-C ++ فقط)
إذا تم الإعلان عن فئة لتنفيذ بروتوكول ، فسيتم إصدار تحذير لكل طريقة
في البروتوكول الذي لم يتم تنفيذه بواسطة الفئة. السلوك الافتراضي هو
إصدار تحذير لكل أسلوب لم يتم تطبيقه صراحة في الفصل ، حتى لو كان
تطبيق الطريقة موروث من الطبقة الفائقة. إذا كنت تستخدم ملف -لا بروتوكول
الخيار ، ثم يتم اعتبار الطرق الموروثة من الطبقة الفائقة مطبقة ،
ولم يصدر تحذير لهم.
-محدد (Objective-C و Objective-C ++ فقط)
تحذير إذا تم العثور على طرق متعددة لأنواع مختلفة لنفس المحدد أثناء
التحويل البرمجي. يتم إجراء الفحص على قائمة الطرق في المرحلة النهائية من
التحويل البرمجي. بالإضافة إلى ذلك ، يتم إجراء فحص لكل محدد يظهر في ملف
تعبير "selector (...)" ، والطريقة المقابلة لذلك المحدد كانت
وجدت أثناء التجميع. لأن هذه الفحوصات تفحص جدول الطريقة فقط في النهاية
من التجميع ، لا يتم إصدار هذه التحذيرات إذا كانت المرحلة الأخيرة من التجميع
لم يتم الوصول إليه ، على سبيل المثال بسبب اكتشاف خطأ أثناء التجميع ، أو بسبب
-فس الجملة فقط يتم استخدام الخيار.
-Wstrict-selector-match (Objective-C و Objective-C ++ فقط)
تحذير إذا تم العثور على طرق متعددة ذات وسيطة مختلفة و / أو أنواع إرجاع لـ a
محدد معين عند محاولة إرسال رسالة باستخدام هذا المحدد إلى مستقبل
اكتب "id" أو "Class". عندما يتم إيقاف تشغيل هذه العلامة (وهو السلوك الافتراضي) ، فإن ملف
يتجاهل المترجم هذه التحذيرات إذا كانت الاختلافات الموجودة تقتصر على الأنواع التي تشارك
نفس الحجم والمحاذاة.
-Wundeclared- محدد (Objective-C و Objective-C ++ فقط)
تحذير إذا تم العثور على تعبير "selector (...)" يشير إلى محدد غير معرّف. أ
يعتبر المحدد غير معرّف إذا لم يتم التصريح عن طريقة بهذا الاسم من قبل
التعبير "selector (...)" ، إما بشكل صريح فيinterface أوprotocol
إعلان ، أو ضمنيًا في قسمimplementation. يعمل هذا الخيار دائمًا
يتحقق منه بمجرد العثور على تعبير "selector (...)" ، بينما -محدد فقط
يقوم بفحصه في المرحلة النهائية من التجميع. هذا أيضا يفرض الترميز
اصطلاح النمط أنه يجب التصريح عن الأساليب والمحددات قبل استخدامها.
-طباعة- objc-runtime-info
قم بإنشاء رأس C الذي يصف أكبر بنية تم تمريرها بالقيمة ، إن وجدت.
مزيد من الخيارات إلى مراقبة تشخيصي الرسائل التنسيق
تقليديا ، تم تنسيق رسائل التشخيص بغض النظر عن جهاز الإخراج
الجانب (على سبيل المثال عرضه ، ...). يمكنك استخدام الخيارات الموضحة أدناه للتحكم في
خوارزمية تنسيق لرسائل التشخيص ، على سبيل المثال عدد الأحرف في كل سطر وكم مرة
يجب الإبلاغ عن معلومات موقع المصدر. لاحظ أن بعض الواجهات الأمامية للغة قد تكون
لا تحترم هذه الخيارات.
-طول الرسالة =n
حاول تنسيق رسائل الخطأ بحيث تناسب سطور حوالي n الشخصيات. لو n is
صفر ، ثم لا يتم التفاف الخط ؛ تظهر كل رسالة خطأ في سطر واحد.
هذا هو الإعداد الافتراضي لجميع الواجهات الأمامية.
-fdiagnostics-show-location = مرة واحدة
ذات مغزى فقط في وضع التفاف الخط. يوجه مراسل رسائل التشخيص إلى
تنبعث منها معلومات موقع المصدر مرة؛ أي في حال كانت الرسالة طويلة جدًا بحيث لا تتناسب مع ذلك
على سطر مادي واحد ويجب تغليفه ، فلن يتم إرسال موقع المصدر
(كبادئة) مرارًا وتكرارًا في سطور المتابعة اللاحقة. هذا ال
السلوك الافتراضي.
-fdiagnostics-show-location = كل سطر
ذات مغزى فقط في وضع التفاف الخط. يوجه مراسل رسائل التشخيص إلى
تصدر معلومات موقع المصدر نفسها (كبادئة) للأسطر المادية الناتجة
من عملية فصل رسالة طويلة جدًا بحيث لا يمكن وضعها في سطر واحد.
-التشخيص-اللون [=متى]
-التشخيص-اللون
استخدم اللون في التشخيص. متى is أبدا, دائماالطرق أو السيارات. الافتراضي يعتمد على كيف
تم تكوين المترجم ، يمكن أن يكون أيًا مما سبق متى خيارات أو أيضا
أبدا if مجلس التعاون الخليجي_COLORS متغير البيئة غير موجود في البيئة ، و السيارات
غير ذلك. السيارات يعني استخدام اللون فقط عندما يكون الخطأ القياسي عبارة عن محطة. ال
أشكال -التشخيص-اللون -التشخيص-اللون هي أسماء مستعارة لـ
-تشخيص-اللون = دائمًا -تشخيص-اللون = أبدا، على التوالي.
يتم تحديد الألوان بواسطة متغير البيئة مجلس التعاون الخليجي_COLORS. قيمته نقطتان-
قائمة منفصلة للإمكانيات وحدد سلاسل فرعية للتسليم الرسومي (SGR). SGR
يتم تفسير الأوامر بواسطة المحطة الطرفية أو المحاكي الطرفي. (انظر القسم في
توثيق محطة النص الخاصة بك للقيم المسموح بها ومعانيها كـ
سمات الأحرف.) قيم السلسلة الفرعية هذه عبارة عن أعداد صحيحة في التمثيل العشري
ويمكن ربطها بفواصل منقوطة. تشمل القيم المشتركة لسلسلة 1 For
بالخط العريض، 4 للتسطير ، 5 لطرفة عين ، 7 للعكس ، 39 للون الأمامي الافتراضي ، 30
إلى 37 للألوان الأمامية ، 90 إلى 97 للألوان الأمامية ذات 16 لونًا ، 38، 5، 0 إلى
38، 5، 255 لأوضاع 88 لونًا و 256 لونًا للألوان الأمامية ، 49 للخلفية الافتراضية
اللون، 40 إلى 47 لألوان الخلفية 100 إلى 107 لألوان الخلفية ذات 16 لونًا ،
48، 5، 0 إلى 48، 5، 255 لألوان الخلفية بأسلوب 88 لونًا و 256 لونًا.
الافتراضي مجلس التعاون الخليجي_COLORS is
error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01
أين 01؛ 31 أحمر غامق ، 01؛ 35 هو أرجواني غامق ، 01؛ 36 غامق سماوي ، 01؛ 32 جريئة
أخضر و 01 جريئة. ضبط مجلس التعاون الخليجي_COLORS إلى سلسلة فارغة يعطل الألوان.
القدرات المدعومة هي كما يلي.
"خطأ ="
سلسلة فرعية SGR للخطأ: العلامات.
"تحذير ="
سلسلة فرعية SGR للتحذير: العلامات.
"ملاحظة ="
سلسلة فرعية SGR للملاحظة: علامات.
علامة الإقحام = "
سلسلة فرعية SGR لخط الإقحام.
"locus ="
سلسلة فرعية SGR لمعلومات الموقع ، ملف: line or ملف: سطر: عمود وما إلى ذلك.
"اقتباس ="
سلسلة فرعية SGR للمعلومات المطبوعة ضمن علامات الاقتباس.
-fno-التشخيص-تظهر-الخيار
بشكل افتراضي ، يتضمن كل تشخيص يصدر نصًا يشير إلى خيار سطر الأوامر
يتحكم بشكل مباشر في التشخيص (إذا كان هذا الخيار معروفًا للتشخيص
الات). تحديد -fno-التشخيص-تظهر-الخيار العلم يقمع ذلك
السلوك.
-التشخيص-تظهر-الإقحام
بشكل افتراضي ، يتضمن كل تشخيص يصدر خط المصدر الأصلي وعلامة الإقحام "^"
مشيرا إلى العمود. هذا الخيار يمنع هذه المعلومات. خط المصدر هو
مقطوع إلى n الأحرف ، إذا كان -طول الرسالة = n يتم إعطاء الخيار. عندما يكون الإخراج
يتم إجراؤه على المحطة ، ويقتصر العرض على العرض المعطى بواسطة الأعمدة
متغير البيئة أو ، إذا لم يتم ضبطه ، على عرض المحطة.
مزيد من الخيارات إلى أطلب or كبح تحذيرات
التحذيرات هي رسائل تشخيصية تُبلغ عن الإنشاءات غير المتأصلة
خاطئة ولكنها محفوفة بالمخاطر أو تشير إلى أنه قد يكون هناك خطأ.
لا تعمل الخيارات المستقلة التالية عن اللغة على تمكين تحذيرات معينة ولكنها تتحكم في
أنواع التشخيص التي تنتجها دول مجلس التعاون الخليجي.
-فس الجملة فقط
تحقق من الشفرة بحثًا عن أخطاء في بناء الجملة ، ولكن لا تفعل أي شيء يتجاوز ذلك.
-fmax-errors =n
يحدد الحد الأقصى لعدد رسائل الخطأ بـ n، عند هذه النقطة تنقذ دول مجلس التعاون الخليجي بدلاً من ذلك
من محاولة متابعة معالجة شفرة المصدر. لو n هو 0 (الافتراضي) ،
لا يوجد حد لعدد رسائل الخطأ المنتجة. لو - أخطاء فادحة هو أيضا
المحدد ، إذن - أخطاء فادحة له الأسبقية على هذا الخيار.
-w منع كافة رسائل التحذير.
-خطأ
تحويل جميع التحذيرات إلى أخطاء.
-خطأ =
جعل التحذير المحدد في خطأ. تم إلحاق محدد التحذير ؛
مثلا -الخطأ = التبديل يتحول التحذيرات التي يتحكم فيها -سويتش في الأخطاء.
يتخذ رمز التبديل هذا شكلاً سالبًا ، ليتم استخدامه للرفض -خطأ لتحذيرات محددة ؛
مثلا -Wno-error = التبديل يجعل -سويتش تحذيرات لا تكون أخطاء ، حتى عندما -خطأ
ساري المفعول.
تتضمن رسالة التحذير لكل تحذير يمكن التحكم فيه الخيار الذي يتحكم
التحذير. يمكن بعد ذلك استخدام هذا الخيار مع -خطأ = -لا خطأ = كما وصفت
فوق. (يمكن تعطيل طباعة الخيار في رسالة التحذير باستخدام ملف
-fno-التشخيص-تظهر-الخيار علم.)
لاحظ أن تحديد -خطأ =فو يعني تلقائيا -Wفو. ومع ذلك، -لا خطأ =فو
لا يعني أي شيء.
- أخطاء فادحة
يؤدي هذا الخيار إلى قيام المترجم بإيقاف التحويل البرمجي عند حدوث الخطأ الأول
بدلاً من محاولة الاستمرار وطباعة المزيد من رسائل الخطأ.
يمكنك طلب العديد من التحذيرات المحددة بخيارات تبدأ بـ -W، على سبيل المثال
- ضبابي لطلب تحذيرات بشأن الإعلانات الضمنية. كل من هذه التحذيرات المحددة
الخيارات لها أيضًا شكل بداية سلبي -لا- لإيقاف التحذيرات ؛ على سبيل المثال،
-لا-ضمني. يسرد هذا الدليل واحدًا فقط من النموذجين ، أيهما ليس الافتراضي.
لمزيد من الخيارات الخاصة باللغة راجع أيضًا C + + لهجة مزيد من الخيارات الهدف-C
الهدف- C ++ لهجة مزيد من الخيارات.
بعض الخيارات ، مثل الجدار شاحن اكسترا، قم بتشغيل الخيارات الأخرى ، مثل -مذهل، التي
قد يقوم بتشغيل المزيد من الخيارات ، مثل -قيمة غير مألوفة. التأثير المشترك للإيجابية و
الأشكال السلبية هي أن الخيارات الأكثر تحديدًا لها الأولوية على الخيارات الأقل تحديدًا ،
بصرف النظر عن موقعهم في سطر الأوامر. للحصول على خيارات من نفس الخصوصية ،
آخر واحد ساري المفعول. تصبح الخيارات التي تم تمكينها أو تعطيلها عبر البرامج سارية المفعول كما لو كانت
ظهر في نهاية سطر الأوامر.
عند طلب خيار تحذير غير معروف (على سبيل المثال ، -تحذير غير معروف) ، دول مجلس التعاون الخليجي ينبعث منها
يشير التشخيص إلى عدم التعرف على الخيار. ومع ذلك ، إذا كان -لا- يستخدم النموذج ،
يختلف السلوك اختلافًا طفيفًا: لا يتم إنتاج تشخيص لـ -لا-غير معروف-تحذير
ما لم يتم إنتاج تشخيصات أخرى. هذا يسمح باستخدام الجديد -لا- الخيارات
مع المترجمين القدامى ، ولكن إذا حدث خطأ ما ، فإن المترجم يحذر من أن ملف
الخيار موجود.
-بيدانتيك
-متحذلق
إصدار جميع التحذيرات التي تتطلبها معايير ISO C و ISO C ++ الصارمة ؛ رفض جميع البرامج التي
استخدام الامتدادات المحظورة ، وبعض البرامج الأخرى التي لا تتبع ISO C و ISO
سي ++. بالنسبة إلى ISO C ، يتبع إصدار معيار ISO C المحدد من قبل أي -الأمراض المنقولة جنسيا
الخيار المستخدم.
يجب ترجمة برامج ISO C و ISO C ++ الصالحة بشكل صحيح باستخدام هذا الخيار أو بدونه
(على الرغم من أن قلة نادرة تتطلب -انسى أو -الأمراض المنقولة جنسيا خيار تحديد الإصدار المطلوب من
ISO ج). ومع ذلك ، بدون هذا الخيار ، بعض امتدادات جنو و C و
يتم دعم ميزات C ++ أيضًا. مع هذا الخيار ، يتم رفضهم.
-بيدانتيك لا يتسبب في رسائل تحذير لاستخدام الكلمات الرئيسية البديلة التي
تبدأ الأسماء وتنتهي بـ __. التحذيرات المتحذلق معطلة أيضا في التعبير
الذي يلي "__التمديد__". ومع ذلك ، يجب أن تستخدم ملفات رأس النظام فقط هذه
طرق الهروب؛ يجب على برامج التطبيق تجنبها.
يحاول بعض المستخدمين استخدام -بيدانتيك للتحقق من البرامج الخاصة بمطابقة ISO C الصارمة. أنهم
سرعان ما اكتشف أنه لا يفعل ما يريدونه تمامًا: فقد اكتشف بعض الممارسات غير التابعة لـ ISO ،
ولكن ليس كل شيء - فقط تلك التي تستخدم ISO C يتطلب للتشخيص ، والبعض الآخر ل
التشخيصات التي تمت إضافتها.
قد تكون ميزة الإبلاغ عن أي فشل في التوافق مع ISO C مفيدة في بعض الحالات ،
ولكنه سيتطلب عملاً إضافيًا كبيرًا وسيكون مختلفًا تمامًا عن
-بيدانتيك. ليس لدينا خطط لدعم مثل هذه الميزة في المستقبل القريب.
حيث المعيار المحدد ب -الأمراض المنقولة جنسيا يمثل لهجة جنو الموسعة للغة C ، مثل
غنو 90 or غنو 99، هناك مقابل قاعدة معيار، إصدار ISO C الذي
لهجة جنو الموسعة قائمة. تحذيرات من -بيدانتيك يتم إعطاؤهم مكان وجودهم
مطلوب من قبل المعيار الأساسي. (ليس من المنطقي إعطاء مثل هذه التحذيرات
فقط للخصائص التي ليست في لهجة جنو سي المحددة ، بما أن جنو بحكم التعريف
تشمل لهجات C جميع الميزات التي يدعمها المترجم مع الخيار المحدد ، و
لن يكون هناك ما يحذر منه.)
- أخطاء متداخلة
تعطي خطأ كلما قاعدة معيار (انظر -بيدانتيك) يتطلب التشخيص ، في
في بعض الحالات حيث يوجد سلوك غير محدد في وقت الترجمة وفي بعض الحالات الأخرى
لا تمنع تجميع البرامج الصالحة وفقًا للمعيار.
هذا لا يعادل -الخطأ = متحذلق، حيث توجد أخطاء تم تمكينها بواسطة هذا
الخيار ولم يتم تمكينه بواسطة الأخير والعكس صحيح.
الجدار شاحن
يتيح ذلك كافة التحذيرات حول الإنشاءات التي يعتبرها بعض المستخدمين
مشكوك فيه ، ويسهل تجنبه (أو تعديله لمنع التحذير) ، حتى في
بالتزامن مع وحدات الماكرو. يتيح هذا أيضًا بعض التحذيرات الخاصة باللغة الموضحة
in C + + لهجة مزيد من الخيارات الهدف-C الهدف- C ++ لهجة مزيد من الخيارات.
الجدار شاحن يقوم بتشغيل أعلام التحذير التالية:
-العنوان حدود المحارب = 1 (فقط مع -O2) -Wc ++ 11-متوافق -Wc ++ 14-متوافق
-وشار- المشتركين -وينوم-قارن (في C / ObjC ؛ يتم تشغيل هذا افتراضيًا في C ++)
-Wimplicit- كثافة العمليات (C و Objective-C فقط) - إعلان ضعيف عن الوظيفة (ج و
الهدف- C فقط) - تعليق -Wformat -ماين (فقط لـ C / ObjC وما لم يكن
-تقرير) - ربما - غير مهيأ -فاقد-الأقواس (فقط لـ C / ObjC) -غير مجهولة
-Wopenmp-simd أقواس -Wpointer- تسجيل -تسجيل - نوع الإرجاع نقطة العواقب
-Wsign- قارن (فقط في C ++) -Wstrict- التعرج - تجاوز الحد = 1 -سويتش
-كتابات غير مهيأ -براغمات غير معروفة وظيفة غير مألوفة -تسمية غير مألوفة
-قيمة غير مألوفة - متغير غير مألوف -تقلب- تسجيل- فار
لاحظ أن بعض علامات التحذير لم يتم تضمينها بواسطة الجدار شاحن. يحذر البعض منهم
التركيبات التي لا يعتبرها المستخدمون مشكوك فيها بشكل عام ، ولكن أي منها
من حين لآخر قد ترغب في التحقق من ؛ يحذر الآخرون من الإنشاءات الموجودة
ضروري أو يصعب تجنبه في بعض الحالات ، ولا توجد طريقة بسيطة لتعديل
رمز لقمع التحذير. يتم تمكين البعض منهم من قبل اكسترا لكن الكثير منهم
يجب تمكينه بشكل فردي.
اكسترا
يتيح ذلك بعض علامات التحذير الإضافية التي لم يتم تمكينها بواسطة الجدار شاحن. (هذا الخيار مستخدم
ليتم استدعاؤها -W. لا يزال الاسم الأقدم مدعومًا ، لكن الاسم الأحدث أكثر
وصفي.)
-Wclobbed -جسم فارغ - التصفيات المؤهلة -ضياع-الحقل-التهيئة
-Wmissing- نوع المعلمة (ج فقط) - إعلان على الطراز القديم (ج فقط) -Woverride-init
-Wsign- قارن حدود نوع غير مهيأ -غير مألوف- المعلمة (فقط مع -مذهل or
الجدار شاحن) -غير مستغلة-لكن-ضبط-المعلمة (فقط مع -مذهل or الجدار شاحن)
الخيار اكسترا كما يطبع رسائل تحذير للحالات التالية:
* تتم مقارنة المؤشر بعدد صحيح صفر بـ "<" أو "<=" أو ">" أو "> =".
* (C ++ فقط) يظهر كل من العداد وغير العداد في شرط
التعبير.
* (C ++ فقط) قواعد افتراضية غامضة.
* (C ++ فقط) تسجيل مصفوفة تم التصريح عنها بأنها "تسجيل".
* (C ++ فقط) أخذ عنوان متغير تم التصريح عنه "تسجيل".
* (C ++ فقط) لم تتم تهيئة الفئة الأساسية في مُنشئ نسخة للفئة المشتقة.
-وشار- المشتركين
تحذير إذا كان نص الصفيف منخفضًا من نوع "char". هذا هو سبب شائع للخطأ ، مثل
غالبًا ما ينسى المبرمجون أن هذا النوع موقّع على بعض الأجهزة. هذا التحذير
مكن من قبل الجدار شاحن.
- تعليق
تحذير عند تسلسل بدء تعليق /* يظهر في /* التعليق ، أو كلما أ
تظهر الشرطة المائلة للخلف - سطر جديد بتنسيق // تعليق. تم تمكين هذا التحذير من قبل الجدار شاحن.
-لا-تغطية-عدم تطابق
تحذير إذا لم تتطابق ملفات تعريف التعليقات عند استخدام ملف -fprofile- استخدام اختيار. اذا كان
يتم تغيير ملف المصدر بين التحويل البرمجي باستخدام -fprofile- الجنرال ومع -fprofile- استخدام,
يمكن أن تفشل الملفات التي تحتوي على ملاحظات ملف التعريف في مطابقة الملف المصدر ولا يمكن لـ GCC
استخدام معلومات ملاحظات الملف الشخصي. بشكل افتراضي ، يتم تمكين هذا التحذير وهو
تعامل على أنها خطأ. -لا-تغطية-عدم تطابق يمكن استخدامها لتعطيل التحذير أو
-Wno-error = التغطية-عدم التطابق يمكن استخدامها لتعطيل الخطأ. تعطيل الخطأ
لهذا التحذير يمكن أن يؤدي إلى رمز محسن بشكل سيئ ويكون مفيدًا فقط في حالة
تغييرات طفيفة جدًا مثل إصلاحات الأخطاء في قاعدة التعليمات البرمجية الحالية. تماما تعطيل
لا ينصح التحذير.
-Wno- CPP
(C و Objective-C و C ++ و Objective-C ++ و Fortran فقط)
قم بإيقاف رسائل التحذير الصادرة عن توجيهات "# warning".
- ترقية مزدوجة (C و C ++ و Objective-C و Objective-C ++ فقط)
قم بإعطاء تحذير عندما يتم ترقية قيمة من النوع "float" ضمنيًا إلى "double". وحدات المعالجة المركزية
باستخدام وحدة فاصلة عائمة "أحادية الدقة" 32 بت تنفذ "تعويم" في الأجهزة ،
ولكن محاكاة "مزدوج" في البرنامج. على مثل هذا الجهاز ، يتم إجراء الحسابات باستخدام
القيم "المزدوجة" أغلى بكثير بسبب الحمل المطلوب للبرامج
محاكاة.
من السهل إجراء عمليات حسابية عن طريق الخطأ باستخدام "double" لأن النقطة العائمة
تكون القيم الحرفية ضمنيًا من النوع "double". على سبيل المثال ، في:
منطقة تعويم (نصف قطر عائم)
{
إرجاع 3.14159 * نصف قطر * نصف قطر ؛
}
يقوم المترجم بإجراء الحساب بالكامل باستخدام "double" لأن النقطة العائمة
الحرفي هو "مزدوج".
-Wformat
-Wformat =n
تحقق من المكالمات إلى "printf" و "scanf" ، وما إلى ذلك ، للتأكد من توفر الوسائط
لها أنواع مناسبة لسلسلة التنسيق المحددة ، وأن التحويلات
المحدد في سلسلة التنسيق منطقي. وهذا يشمل الوظائف القياسية ، و
أخرى محددة بسمات التنسيق ، في "printf" و "scanf" و "strftime" و
عائلات "strfmon" (امتداد X / Open ، وليس في معيار C) (أو هدف آخر-
عائلات معينة). ما هي الوظائف التي تم فحصها بدون سمات التنسيق
المحدد يعتمد على الإصدار القياسي المحدد ، وعمليات التحقق من الوظائف هذه
بدون السمة المحددة معطلة بواسطة -تقرير or -fno- بنيت.
يتم فحص التنسيقات مقابل ميزات التنسيق التي يدعمها الإصدار 2.2 من GNU libc.
يتضمن ذلك جميع ميزات ISO C90 و C99 ، بالإضافة إلى ميزات من Single Unix
المواصفات وبعض امتدادات BSD و GNU. تطبيقات المكتبة الأخرى قد لا
دعم كل هذه الميزات ؛ مجلس التعاون الخليجي لا يدعم التحذير من الميزات التي تتجاوز
قيود مكتبة معينة. ومع ذلك، إذا -بيدانتيك يستخدم مع -Wformat,
يتم إعطاء تحذيرات حول ميزات التنسيق غير الموجودة في الإصدار القياسي المحدد (ولكن ليس
لتنسيقات "strfmon" ، لأن هذه ليست في أي نسخة من معيار C).
- التنسيق = 1
-Wformat
خيار -Wformat ما يعادل - التنسيق = 1و -لا تنسيق ما يعادل
- التنسيق = 0. منذ -Wformat يتحقق أيضًا من وجود وسيطات تنسيق فارغة لعدة
وظائف، -Wformat يعني أيضا -غير مجهولة. بعض جوانب هذا المستوى من التنسيق
يمكن تعطيل التحقق من خلال الخيارات: -لا-شكل-يحتوي-نول,
-لا تنسيق- إضافي- أرجسو -لا تنسيق-صفر-الطول. -Wformat تم تمكينه بواسطة
الجدار شاحن.
-لا-شكل-يحتوي-نول
If -Wformat محددًا ، لا تحذر من سلاسل التنسيق التي تحتوي على وحدات بايت NUL.
-لا تنسيق- إضافي- أرجس
If -Wformat محددًا ، فلا تحذر من الحجج الزائدة إلى "printf" أو
وظيفة تنسيق "scanf". يحدد المعيار C أن هذه الحجج هي
تجاهلها.
حيث تكمن الوسائط غير المستخدمة بين الوسائط المستخدمة المحددة بـ $
مواصفات رقم المعامل ، وعادة ما يتم إعطاء التحذيرات ، منذ
التنفيذ لا يمكنه معرفة نوع تمريره إلى "va_arg" لتخطي غير المستخدم
الحجج. ومع ذلك ، في حالة تنسيقات "scanf" ، يلغي هذا الخيار تنسيق
تحذير إذا كانت الوسائط غير المستخدمة كلها مؤشرات ، منذ يونكس واحد
تقول المواصفات أن مثل هذه الحجج غير المستخدمة مسموح بها.
-لا تنسيق-صفر-الطول
If -Wformat محددًا ، لا تحذر من التنسيقات ذات الطول الصفري. المعيار C.
يحدد أن التنسيقات ذات الطول الصفري مسموح بها.
- التنسيق = 2
تفعيل -Wformat بالإضافة إلى فحوصات التنسيق الإضافية. يعادل حاليا -Wformat
- صيغة غير حرفية -Wformat- الأمن -Wformat-y2k.
- صيغة غير حرفية
If -Wformat محددًا ، حذر أيضًا إذا كانت سلسلة التنسيق ليست سلسلة حرفية
وهكذا لا يمكن التحقق منها ، ما لم تأخذ دالة التنسيق وسيطات التنسيق الخاصة بها على أنها
"va_list".
-Wformat- الأمن
If -Wformat ، حذر أيضًا من استخدامات وظائف التنسيق التي تمثل
مشاكل أمنية محتملة. في الوقت الحالي ، يحذر هذا من المكالمات إلى "printf" و
وظائف "scanf" حيث لا تكون سلسلة التنسيق سلسلة حرفية وليس هناك
وسيطات التنسيق ، مثل "printf (foo) ؛". قد يكون هذا ثغرة أمنية إذا كان
جاءت سلسلة التنسيق من إدخال غير موثوق به وتحتوي على %n. (هذا حاليًا ملف
مجموعة فرعية من ماذا - صيغة غير حرفية يحذر ، ولكن في المستقبل قد تكون التحذيرات
وأضاف لل -Wformat- الأمن التي لم يتم تضمينها في - صيغة غير حرفية.)
- التنسيق - التوقيع
If -Wformat محددًا ، حذر أيضًا إذا كانت سلسلة التنسيق تتطلب عدم توقيع
الحجة والحجة موقعة والعكس صحيح.
ملاحظة: في Ubuntu 8.10 والإصدارات الأحدث ، يتم تمكين هذا الخيار افتراضيًا لـ C ،
C ++ ، ObjC ، ObjC ++. للتعطيل ، استخدم -لا تنسيق- الأمنأو قم بتعطيل كل التنسيقات
مع التحذيرات - التنسيق = 0. لجعل تحذيرات أمان التنسيق فادحة ، حدد
-الخطأ = تنسيق-الأمن.
-Wformat-y2k
If -Wformat ، حذر أيضًا من تنسيقات "strftime" التي قد تنتج فقط ملف
عام من رقمين.
-غير مجهولة
تحذير من تمرير مؤشر فارغ للوسيطات التي تم وضع علامة عليها على أنها تتطلب قيمة غير فارغة
بواسطة سمة دالة "nonnull".
-غير مجهولة تم تضمينه في الجدار شاحن -Wformat. يمكن تعطيله باستخدام -لا-نونول
الخيار.
-نفس الذات (C و C ++ و Objective-C و Objective-C ++ فقط)
تحذير بشأن المتغيرات غير المهيأة التي تمت تهيئتها مع نفسها. لاحظ هذا
يمكن استخدام الخيار فقط مع غير مهيأ الخيار.
على سبيل المثال ، يحذر GCC من عدم تهيئة حرف "i" في المقتطف التالي فقط
متى -نفس الذات تم تحديده:
int و ()
{
int أنا = أنا ؛
العودة أنا ؛
}
تم تمكين هذا التحذير بواسطة الجدار شاحن في C ++.
-Wimplicit- كثافة العمليات (C و Objective-C فقط)
تحذير عندما لا يحدد التصريح نوعًا ما. تم تمكين هذا التحذير من قبل الجدار شاحن.
- إعلان ضعيف عن الوظيفة (C و Objective-C فقط)
أعط تحذيرًا عند استخدام وظيفة قبل الإعلان عنها. في وضع C99
(-std = c99 or -std = gnu99) ، يتم تمكين هذا التحذير افتراضيًا ويتم تحويله إلى ملف
خطأ - أخطاء متداخلة. يتم تمكين هذا التحذير أيضًا بواسطة الجدار شاحن.
- ضبابي (C و Objective-C فقط)
مثل -Wimplicit- كثافة العمليات - إعلان ضعيف عن الوظيفة. تم تمكين هذا التحذير
by الجدار شاحن.
- التصفيات المؤهلة (C و C ++ فقط)
تحذير إذا كان نوع الإرجاع للدالة يحتوي على مؤهل نوع مثل "const". بالنسبة إلى ISO C
هذا النوع من المؤهل ليس له أي تأثير ، لأن القيمة التي ترجعها الدالة ليست
لفالو. بالنسبة لـ C ++ ، يتم إصدار التحذير فقط للأنواع العددية أو "الفراغ". ISO ج
يحظر أنواع الإرجاع "الباطلة" المؤهلة في تعريفات الوظائف ، لذلك مثل هذه الأنواع من الإرجاع
تلقي تحذيرًا دائمًا حتى بدون هذا الخيار.
يتم تمكين هذا التحذير أيضًا بواسطة اكسترا.
-ماين
تحذير إذا كان نوع "رئيسي" مريبًا. يجب أن تكون "main" دالة مع خارجية
linkage ، وإرجاع int ، وأخذ أي من الحجج الصفرية ، أو اثنتين أو ثلاث حجج من
الأنواع المناسبة. يتم تمكين هذا التحذير افتراضيًا في C ++ ويتم تمكينه بواسطة أي منهما
الجدار شاحن or -بيدانتيك.
-فاقد-الأقواس
تحذير إذا لم يتم وضع مُهيئ التجميع أو الاتحاد بشكل كامل بين قوسين. في التالي
على سبيل المثال ، لم يتم وضع مُهيئ "a" بين قوسين بشكل كامل ، ولكن مُهيئ "b" يكون بشكل كامل
بين قوسين. تم تمكين هذا التحذير من قبل الجدار شاحن في C.
int a [2] [2] = {0، 1، 2، 3} ؛
int b [2] [2] = {{0، 1}، {2، 3}} ؛
تم تمكين هذا التحذير بواسطة الجدار شاحن.
-مفقود-يشمل-dirs (C و C ++ و Objective-C و Objective-C ++ فقط)
تحذير إذا كان دليل التضمين الذي يوفره المستخدم غير موجود.
أقواس
تحذير إذا تم حذف الأقواس في سياقات معينة ، مثل عندما يكون هناك امتداد
التخصيص في سياق حيث من المتوقع وجود قيمة حقيقة ، أو عندما تكون العوامل متداخلة
التي غالبًا ما يتم الخلط بين الناس حول أسبقيتها.
تحذير أيضًا إذا ظهرت مقارنة مثل "x <= y <= z" ؛ هذا يعادل "(x <= y؟ 1:
0) <= z "، وهو تفسير مختلف عن تفسير الرياضيات العادية
الرموز.
حذر أيضًا من الإنشاءات حيث قد يكون هناك التباس في عبارة "if"
فرع "آخر" ينتمي. فيما يلي مثال على مثل هذه الحالة:
{
اذا كان)
إذا (ب)
فو () ؛
آخر
شريط ()؛
}
في C / C ++ ، ينتمي كل فرع "آخر" إلى عبارة "if" الأعمق الممكنة ، والتي
في هذا المثال هو "إذا (ب)". غالبًا ما لا يكون هذا ما توقعه المبرمج ، مثل
يتضح في المثال أعلاه من خلال المسافة البادئة التي اختارها المبرمج. عندما يكون هناك
احتمالية حدوث هذا الالتباس ، يصدر GCC تحذيرًا عند تحديد هذه العلامة.
لإزالة التحذير ، قم بإضافة أقواس صريحة حول العبارة الداخلية "if" كذلك
لا توجد طريقة يمكن أن تنتمي "أخرى" إلى الضميمة "if". الكود الناتج يبدو
مثله:
{
اذا كان)
{
إذا (ب)
فو () ؛
آخر
شريط ()؛
}
}
حذر أيضًا من الاستخدامات الخطيرة لامتداد GNU لـ "؟:" مع حذف المعامل الأوسط.
عندما يكون الشرط في "؟": عامل التشغيل تعبيرًا منطقيًا ، تكون القيمة المحذوفة
دائمًا 1. غالبًا ما يتوقع المبرمجون أن تكون قيمة محسوبة داخل الشرط
التعبير بدلا من ذلك.
تم تمكين هذا التحذير بواسطة الجدار شاحن.
نقطة العواقب
تحذير من التعليمات البرمجية التي قد تحتوي على دلالات غير محددة بسبب انتهاكات التسلسل
قواعد النقاط في معايير C و C ++.
تحدد معايير C و C ++ الترتيب الذي تكون به التعبيرات في برنامج C / C ++
تقييمها من حيث تسلسل نقطة، والتي تمثل ترتيبًا جزئيًا بين
تنفيذ أجزاء من البرنامج: تلك التي نفذت قبل نقطة التسلسل ، وتلك
أعدم بعد ذلك. تحدث هذه بعد تقييم التعبير الكامل (واحد الذي
ليس جزءًا من تعبير أكبر) ، بعد تقييم المعامل الأول لـ
عامل التشغيل "&&"، "||"، "؟:" أو "،" (فاصلة) ، قبل استدعاء الوظيفة (ولكن بعد
تقييم الحجج الخاصة بها والتعبير الذي يشير إلى الوظيفة المطلوبة) ، وفي
أماكن أخرى معينة. بخلاف ما يتم التعبير عنه بواسطة قواعد نقطة التسلسل ، الترتيب
لم يتم تحديد تقييم التعبيرات الفرعية للتعبير. كل هذه القواعد
وصف طلبًا جزئيًا فقط وليس طلبًا إجماليًا ، لأنه ، على سبيل المثال ، إذا كان اثنان
يتم استدعاء الدوال ضمن تعبير واحد مع عدم وجود نقطة تسلسل بينهما ، فإن
الترتيب الذي يتم استدعاء الوظائف به غير محدد. ومع ذلك ، فإن المعايير
قررت اللجنة أن استدعاءات الوظائف لا تتداخل.
لم يتم تحديده عند إجراء تعديلات بين نقاط التسلسل على قيم
سارية المفعول. البرامج التي يعتمد سلوكها على ذلك لها سلوك غير محدد ؛
تحدد معايير C و C ++ أن "بين نقطة التسلسل السابقة والتالية أ
الكائن يجب أن يتم تعديل قيمته المخزنة مرة واحدة على الأكثر من خلال تقييم
التعبير. علاوة على ذلك ، يجب قراءة القيمة السابقة فقط لتحديد القيمة
يتم تخزينها ". إذا خالف أحد البرامج هذه القواعد ، فإن النتائج على أي منها
التنفيذ لا يمكن التنبؤ به تمامًا.
أمثلة التعليمات البرمجية ذات السلوك غير المحدد هي "a = a ++؛" و "a [n] = b [n ++]" و "a [i ++] =
ط ؛ ". لا يتم تشخيص بعض الحالات الأكثر تعقيدًا من خلال هذا الخيار ، وقد يؤدي ذلك إلى ظهور
نتيجة إيجابية خاطئة من حين لآخر ، ولكن بشكل عام وجد أنها فعالة إلى حد ما في
الكشف عن هذا النوع من المشاكل في البرامج.
تمت صياغة المعيار بشكل مربك ، لذلك هناك بعض الجدل حول الدقة
معنى قواعد نقطة التسلسل في الحالات الدقيقة. روابط لمناقشات
المشكلة ، بما في ذلك التعريفات الرسمية المقترحة ، يمكن العثور عليها في صفحة قراءات دول مجلس التعاون الخليجي ،
فيhttp://gcc.gnu.org/readings.html>.
تم تمكين هذا التحذير بواسطة الجدار شاحن لـ C و C ++.
-لا عودة-المحلية-addr
لا تحذر من إرجاع مؤشر (أو في C ++ ، مرجع) إلى متغير يذهب
خارج النطاق بعد عودة الوظيفة.
- نوع الإرجاع
تحذير عندما يتم تعريف دالة بنوع إرجاع يكون افتراضيًا على "int". أيضا
التحذير من أي عبارة "إرجاع" بدون قيمة إرجاع في دالة من نوع إرجاعها
ليس "باطلاً" (السقوط من نهاية الوظيفة يعتبر الجسم عائداً
بدون قيمة) ، وحول تعليمة "إرجاع" مع تعبير في دالة
الذي يكون نوع الإرجاع "باطل".
بالنسبة لـ C ++ ، فإن الوظيفة التي لا تحتوي على نوع إرجاع تنتج دائمًا رسالة تشخيص ، حتى
متى - نوع العودة محدد. الاستثناءات الوحيدة هي الوظائف "الرئيسية"
المحددة في رؤوس النظام.
تم تمكين هذا التحذير بواسطة الجدار شاحن.
-Wshift- العد سلبي
تحذير إذا كان عدد المناوبات سالبًا. يتم تمكين هذا التحذير بشكل افتراضي.
-Wshift العد الفائض
تحذير إذا كان عدد الإزاحة> = عرض النوع. يتم تمكين هذا التحذير بشكل افتراضي.
-سويتش
تحذير عندما تحتوي عبارة "switch" على فهرس من النوع الذي تم تعداده ويفتقر إلى "case"
لواحد أو أكثر من الرموز المسماة لهذا التعداد. (وجود علامة "افتراضي"
تمنع التسمية هذا التحذير.) تسميات "الحالة" خارج نطاق التعداد أيضًا
إثارة تحذيرات عند استخدام هذا الخيار (حتى إذا كان هناك تسمية "افتراضية"). هذه
تم تمكين التحذير بواسطة الجدار شاحن.
- مفتاح التبديل الافتراضي
تحذير عندما لا تحتوي عبارة "switch" على حالة "افتراضية".
-سويتش-تعداد
تحذير عندما تحتوي عبارة "switch" على فهرس من النوع الذي تم تعداده ويفتقر إلى "case"
لواحد أو أكثر من الرموز المسماة لهذا التعداد. تسميات "الحالة" خارج
نطاق التعداد يثير أيضًا تحذيرات عند استخدام هذا الخيار. والفرق الوحيد
ما بين -سويتش وهذا الخيار هو أن هذا الخيار يعطي تحذيرًا بشأن حذف
رمز التعداد حتى إذا كان هناك تسمية "افتراضية".
-سويتش- منطقية
تحذير عندما تحتوي عبارة "switch" على فهرس من النوع المنطقي. من الممكن
قم بإيقاف هذا التحذير عن طريق تحويل التعبير المسيطر إلى نوع آخر بخلاف
"منطقي". على سبيل المثال:
التبديل ((int) (أ == 4))
{
}
يتم تمكين هذا التحذير افتراضيًا لبرامج C و C ++.
-Wsync- ناند (C و C ++ فقط)
تحذير عندما تكون الدالات المضمنة "__sync_fetch_and_nand" و "__sync_nand_and_fetch"
تستخدم. غيرت هذه الوظائف الدلالات في دول مجلس التعاون الخليجي 4.4.
-كتابات
تحذير في حالة مواجهة أي رسومات ثلاثية الأبعاد قد تغير معنى البرنامج
(لا يتم تحذير الأشكال الثلاثية في التعليقات). تم تمكين هذا التحذير من قبل الجدار شاحن.
-غير مستغلة-لكن-ضبط-المعلمة
تحذير عندما يتم تعيين معلمة دالة إلى ، ولكن بخلاف ذلك غير مستخدمة (بخلاف
إعلانها).
لمنع هذا التحذير استخدم السمة "غير المستخدمة".
يتم تمكين هذا التحذير أيضًا بواسطة -مذهل مع اكسترا.
- غير مألوف - ولكن - مجموعة - متغير
تحذير عندما يتم تعيين متغير محلي لـ ، ولكنه غير مستخدم بخلاف ذلك (بصرف النظر عن
إعلان). تم تمكين هذا التحذير من قبل الجدار شاحن.
لمنع هذا التحذير استخدم السمة "غير المستخدمة".
يتم تمكين هذا التحذير أيضًا بواسطة -مذهل، والذي يتم تمكينه بواسطة الجدار شاحن.
وظيفة غير مألوفة
تحذير عند الإعلان عن وظيفة ثابتة ولكن لم يتم تعريفها أو عند كونها ثابتة غير مضمنة
الوظيفة غير مستخدمة. تم تمكين هذا التحذير من قبل الجدار شاحن.
-تسمية غير مألوفة
تحذير كلما تم الإعلان عن ملصق ولكن لم يتم استخدامه. تم تمكين هذا التحذير من قبل الجدار شاحن.
لمنع هذا التحذير استخدم السمة "غير المستخدمة".
-غير المستخدمة-المحلية-typedefs (C و Objective-C و C ++ و Objective-C ++ فقط)
تحذير عند عدم استخدام محرف معرف محليًا في دالة. هذا التحذير
مكن من قبل الجدار شاحن.
-غير مألوف- المعلمة
تحذير عند عدم استخدام معلمة دالة بصرف النظر عن إعلانها.
لمنع هذا التحذير استخدم السمة "غير المستخدمة".
-لا-نتائج-غير مستخدمة
لا تحذر إذا قام متصل دالة مميزة بالسمة "warn_unused_result" بذلك
لا تستخدم قيمته المرجعة. الافتراضي هو نتيجة غير مرغوب فيها.
- متغير غير مألوف
تحذير عند عدم استخدام متغير محلي أو متغير ثابت غير ثابت بخلاف
إعلانها. تم تمكين هذا التحذير من قبل الجدار شاحن.
لمنع هذا التحذير استخدم السمة "غير المستخدمة".
-قيمة غير مألوفة
تحذير عندما تقوم عبارة بحساب نتيجة لم يتم استخدامها صراحةً. يقمع
يلقي هذا التحذير التعبير غير المستخدم إلى "باطل". يتضمن هذا تعبير-
العبارة أو الجانب الأيسر من تعبير فاصلة لا يحتوي على أي آثار جانبية.
على سبيل المثال ، يتسبب تعبير مثل "x [i، j]" في تحذير ، بينما "x [(void) i، j]"
لا.
تم تمكين هذا التحذير بواسطة الجدار شاحن.
-مذهل
كل ما سبق -مذهل الخيارات مجتمعة.
للحصول على تحذير بشأن معلمة دالة غير مستخدمة ، يجب عليك إما تحديد
اكسترا -مذهل (لاحظ أن الجدار شاحن يدل -مذهل) ، أو حدد بشكل منفصل
-غير مألوف- المعلمة.
غير مهيأ
تحذير إذا تم استخدام متغير تلقائي دون التهيئة أولاً أو إذا كان متغيرًا
قد يتم ضربه بمكالمة "setjmp". في C ++ ، تحذير إذا كان المرجع غير ثابت أو غير
يظهر العضو "const" الثابت في فئة بدون منشئات.
إذا كنت تريد التحذير من التعليمات البرمجية التي تستخدم القيمة غير المهيأة للمتغير في
المُهيئ الخاص به ، استخدم -نفس الذات الخيار.
تحدث هذه التحذيرات للعناصر الفردية غير المهيأة أو المضطربة للهيكل ،
متغيرات الاتحاد أو المصفوفة وكذلك للمتغيرات غير المهيأة أو المتضخمة
ككل. لا تحدث للمتغيرات أو العناصر التي تم الإعلان عنها بأنها "متقلبة". لأن
تعتمد هذه التحذيرات على التحسين والمتغيرات الدقيقة أو العناصر التي توجد لها
هي تحذيرات تعتمد على خيارات التحسين الدقيقة وإصدار GCC المستخدم.
لاحظ أنه قد لا يكون هناك تحذير بشأن متغير يستخدم فقط لحساب
القيمة التي لا يتم استخدامها في حد ذاتها أبدًا ، لأن مثل هذه الحسابات يمكن حذفها من خلال تدفق البيانات
قبل طباعة التحذيرات.
- ربما - غير مهيأ
بالنسبة للمتغير التلقائي ، إذا كان هناك مسار من إدخال الوظيفة إلى استخدام
المتغير الذي تمت تهيئته ، ولكن توجد بعض المسارات الأخرى التي يمكن لـ
المتغير غير مهيأ ، يرسل المترجم تحذيرًا إذا لم يتمكن من إثبات
لا يتم تنفيذ المسارات غير المهيأة في وقت التشغيل. هذه التحذيرات اختيارية
لأن GCC ليس ذكيًا بما يكفي لمعرفة جميع الأسباب التي قد تجعل الرمز صحيحًا
على الرغم من ظهور خطأ ما. فيما يلي مثال على كيفية حدوث ذلك:
{
int x ؛
التبديل (ص)
{
الحالة 1: س = 1 ؛
كسر؛
الحالة 2: س = 4 ؛
كسر؛
الحالة 3: س = 5 ؛
}
foo (x) ؛
}
إذا كانت قيمة "y" دائمًا 1 أو 2 أو 3 ، فسيتم تهيئة "x" دائمًا ، ولكن GCC
لا يعرف هذا. لإيقاف التحذير ، تحتاج إلى تقديم حالة افتراضية مع
يجزم(0) أو رمز مشابه.
يحذر هذا الخيار أيضًا عندما يمكن تغيير متغير تلقائي غير متغير بواسطة a
استدعاء "longjmp". هذه التحذيرات أيضًا ممكنة فقط في التحسين
التحويل البرمجي.
يرى المترجم فقط المكالمات إلى "setjmp". لا يمكن أن تعرف أين ستكون "longjmp"
مسمى؛ في الواقع ، يمكن لمعالج الإشارة الاتصال بها في أي نقطة في الكود. ك
نتيجة لذلك ، قد تتلقى تحذيرًا حتى في حالة عدم وجود مشكلة في الواقع لأن "longjmp"
في الواقع لا يمكن استدعاؤها في المكان الذي من شأنه أن يسبب مشكلة.
يمكن تجنب بعض التحذيرات الزائفة إذا أعلنت عن جميع الوظائف التي تستخدمها
لا تعود أبدا باسم "نورترن".
تم تمكين هذا التحذير بواسطة الجدار شاحن or اكسترا.
-براغمات غير معروفة
تحذير عند مواجهة أمر "#pragma" لا يفهمه مجلس التعاون الخليجي. لو هذا
يتم استخدام خيار سطر الأوامر ، حتى يتم إصدار تحذيرات لبرامج غير معروفة في النظام
ملفات الرأس. ليس هذا هو الحال إذا تم تمكين التحذيرات فقط بواسطة الجدار شاحن
خيار سطر الأوامر.
-لا-براغماس
لا تحذر من إساءة استخدام البراغمات ، مثل المعامِلات غير الصحيحة أو الصياغة غير الصحيحة أو
الصراعات بين البراغمات. أنظر أيضا -براغمات غير معروفة.
-Wstrict- التعرج
يكون هذا الخيار نشطًا فقط عندما -تعرج صارم نشط. إنه يحذر من أن التعليمات البرمجية
قد يكسر قواعد التعرج الصارمة التي يستخدمها المترجم للتحسين.
لا يشير التحذير إلى جميع الحالات ، ولكنه يحاول التعرف على الحالات الأكثر شيوعًا
المزالق. تم تضمينه في الجدار شاحن. إنه يعادل -Wstrict-Aliasing = 3
-Wstrict-aliasing = n
يكون هذا الخيار نشطًا فقط عندما -تعرج صارم نشط. إنه يحذر من أن التعليمات البرمجية
قد يكسر قواعد التعرج الصارمة التي يستخدمها المترجم للتحسين.
المستويات الأعلى تتوافق مع دقة أعلى (عدد أقل من الإيجابيات الخاطئة). مستويات أعلى
تتوافق أيضًا مع المزيد من الجهد ، على غرار الطريقة -O الأشغال. -Wstrict- التعرج is
أي ما يعادل -Wstrict-Aliasing = 3.
المستوى 1: الأكثر عدوانية ، والأسرع ، والأقل دقة. ربما تكون مفيدة عندما تكون المستويات الأعلى
لا تحذر ولكن -تعرج صارم لا يزال يكسر الكود ، لأنه يحتوي على عدد قليل جدًا من الأخطاء
السلبيات. ومع ذلك ، فإنه يحتوي على العديد من الإيجابيات الخاطئة. يحذر من جميع تحويلات المؤشر
بين الأنواع غير المتوافقة التي قد تكون غير متوافقة ، حتى لو لم يتم الغاء الإشارة إليها. يمتد في المقدمة
النهاية فقط.
المستوى 2: عدواني ، سريع ، غير دقيق للغاية. قد لا يزال لديه العديد من الإيجابيات الخاطئة (لا
ما يصل إلى المستوى 1 مع ذلك) ، وعدد قليل من السلبيات الخاطئة (ولكن ربما أكثر من المستوى 1).
على عكس المستوى 1 ، فإنه يحذر فقط عند أخذ العنوان. يحذر من الأنواع غير المكتملة.
يعمل في الواجهة الأمامية فقط.
المستوى 3 (افتراضي لـ -Wstrict- التعرج): يجب أن يحتوي على عدد قليل جدًا من الإيجابيات الخاطئة وقليلًا
السلبيات الكاذبة. أبطأ قليلاً من المستويات 1 أو 2 عند تمكين التحسين.
يعتني بنمط التورية المشترك + الإسناد في الواجهة الأمامية:
"* (int *) & some_float". إذا تم تمكين التحسين ، فإنه يعمل أيضًا في النهاية الخلفية ، حيث
يتعامل مع حالات بيان متعددة باستخدام نقاط إلى المعلومات الحساسة للتدفق.
يحذر فقط عند إلغاء الإشارة إلى المؤشر المحول. لا تحذر من عدم اكتمال
أنواع.
-Wstrict- تجاوز
-Wstrict- تجاوز =n
يكون هذا الخيار نشطًا فقط عندما - تجاوز الحد نشط. يحذر من القضايا
حيث يقوم المترجم بالتحسين على أساس الافتراض بأن التدفق الموقعة لا يفعل ذلك
تحدث. لاحظ أنه لا يحذر من جميع الحالات التي قد يتجاوز فيها الرمز: إنه
يحذر فقط من الحالات التي يقوم فيها المترجم بتنفيذ بعض التحسين. وهكذا هذا
تحذير يعتمد على مستوى التحسين.
يعد التحسين الذي يفترض عدم حدوث تجاوز الموقع آمنًا تمامًا إذا
قيم المتغيرات المعنية هي أن الفائض لا يحدث أبدًا ، في الواقع ،
تحدث. لذلك يمكن أن يعطي هذا التحذير بسهولة إيجابية خاطئة: تحذير حول الكود
هذه ليست مشكلة في الواقع. للمساعدة في التركيز على القضايا الهامة ، عدة تحذيرات
يتم تحديد المستويات. لم يتم إصدار تحذيرات لاستخدام تجاوز موقعة غير محدد
عند تقدير عدد التكرارات التي تتطلبها الحلقة ، لا سيما عند التحديد
ما إذا كان سيتم تنفيذ حلقة على الإطلاق.
- تجاوز الحد = 1
حذر من الحالات المشكوك فيها والتي يسهل تجنبها. على سبيل المثال ، مع
- تجاوز الحد، يبسط المترجم "x + 1> x" إلى 1. هذا المستوى من
-Wstrict- تجاوز تم تمكينه بواسطة الجدار شاحن؛ المستويات الأعلى ليست كذلك ، ويجب أن تكون كذلك
طلبت صراحة.
- تجاوز الحد = 2
تحذير أيضًا من الحالات الأخرى التي يتم فيها تبسيط المقارنة إلى ثابت. ل
مثال: "abs (x)> = 0". يمكن تبسيط هذا فقط عندما - تجاوز الحد في
التأثير ، لأن "abs (INT_MIN)" يتجاوز إلى "INT_MIN" ، وهو أقل من الصفر.
-Wstrict- تجاوز (بدون مستوى) هو نفسه - تجاوز الحد = 2.
- تجاوز الحد = 3
تحذير أيضًا من الحالات الأخرى التي يتم فيها تبسيط المقارنة. على سبيل المثال: "x + 1
> 1 "تم تبسيطه إلى" x> 0 ".
- تجاوز الحد = 4
حذر أيضًا من التبسيطات الأخرى التي لا تغطيها الحالات المذكورة أعلاه. ل
مثال: تم تبسيط "(x * 10) / 5" إلى "x * 2".
- تجاوز الحد = 5
تحذير أيضًا من الحالات التي يقوم فيها المترجم بتقليل مقدار الثابت
تشارك في المقارنة. على سبيل المثال: تم تبسيط "x + 2> y" إلى "x + 1> = y".
يتم الإبلاغ عن هذا فقط عند أعلى مستوى تحذير بسبب هذا التبسيط
ينطبق على العديد من المقارنات ، لذا فإن مستوى التحذير هذا يعطي عددًا كبيرًا جدًا من
ايجابيات كاذبة.
-Wsuggest-سمة =[نقي|CONST|لا رجوع|شكل]
تحذير من الحالات التي قد تكون فيها إضافة سمة مفيدة. السمات حاليا
المدعومة مذكورة أدناه.
-Wsuggest-attribute = نقي
-Wsuggest-attribute = const
-Wsuggest-attribute = نورتورن
تحذير بشأن الوظائف التي قد تكون مرشحة للسمات "نقية" أو "ثابتة" أو
"لا رجوع". المترجم يحذر فقط من الوظائف المرئية في التجميعات الأخرى
وحدات أو (في حالة "خالص" و "ثابت") إذا كان لا يمكن إثبات أن الوظيفة
يعود بشكل طبيعي. ترجع الدالة بشكل طبيعي إذا لم تحتوي على عدد لانهائي
التكرار أو العودة بشكل غير طبيعي عن طريق الرمي أو استدعاء "إجهاض" أو محاصرة. هذا التحليل
يتطلب الخيار -فيبا-نقي-كونست، والذي يتم تمكينه افتراضيًا في -O وأعلى.
تعمل مستويات التحسين الأعلى على تحسين دقة التحليل.
-Wsuggest-attribute = التنسيق
السمة-تنسيق-مفقود
تحذير حول مؤشرات الوظائف التي قد تكون مرشحة لسمات "التنسيق".
لاحظ أن هؤلاء ليسوا سوى المرشحين المحتملين ، وليسوا المرشحين المطلقين. دول مجلس التعاون الخليجي تخمن ذلك
مؤشرات الوظائف ذات سمات "التنسيق" المستخدمة في التخصيص ،
يجب أن يكون لبيانات التهيئة أو تمرير المعلمة أو الإرجاع المقابل
سمة "format" في النوع الناتج. أي الجانب الأيسر من
التخصيص أو التهيئة ، نوع متغير المعلمة ، أو العائد
يجب أن يكون لنوع الدالة المحتوية على التوالي سمة "format"
لتجنب التحذير.
يحذر مجلس التعاون الخليجي أيضًا من تعريفات الوظائف التي قد تكون مرشحة لـ "التنسيق"
صفات. مرة أخرى ، هؤلاء هم المرشحون المحتملون فقط. يعتقد مجلس التعاون الخليجي أن "التنسيق"
قد تكون السمات مناسبة لأي دالة تستدعي وظيفة مثل
"vprintf" أو "vscanf" ، ولكن قد لا يكون هذا هو الحال دائمًا ، وبعض الوظائف
التي تكون سمات "التنسيق" مناسبة لها قد لا يتم الكشف عنها.
-Wsuggest- أنواع نهائية
تحذير بشأن الأنواع ذات الأساليب الافتراضية حيث يمكن تحسين جودة الكود إذا كان النوع
تم التصريح عنها باستخدام محدد C ++ 11 "نهائي" ، أو ، إن أمكن ، تم الإعلان عنها في ملف
مجهول. وهذا يسمح لدول مجلس التعاون الخليجي بإخراج الصورة المتعددة الأشكال بقوة أكبر
المكالمات. يكون هذا التحذير أكثر فاعلية مع تحسين وقت الارتباط ، حيث يكون ملف
المعلومات حول الرسم البياني للتسلسل الهرمي للفئة أكثر اكتمالا.
طرق -Wsuggest-final
حذر من الأساليب الافتراضية التي يمكن أن تتحسن فيها جودة الكود إذا كانت الطريقة كذلك
تم التصريح عنه باستخدام محدد C ++ 11 "النهائي" ، أو إذا أمكن ، تم التصريح عن نوعه في
مساحة اسم مجهول أو مع محدد "نهائي". هذا التحذير أكثر فعالية
مع تحسين وقت الارتباط ، حيث توجد المعلومات حول الرسم البياني للتسلسل الهرمي للفئة
أكثر اكتمالا. من المستحسن النظر في اقتراحات أولا
-Wsuggest- أنواع نهائية ثم إعادة البناء باستخدام التعليقات التوضيحية الجديدة.
-Wsuggest- تجاوز
تحذير من تجاوز الوظائف الافتراضية التي لم يتم تمييزها بكلمة تجاوز الكلمة الأساسية.
- حدود المحارب
حدود المحارب =n
يكون هذا الخيار نشطًا فقط عندما -ftree-vrp نشط (افتراضي لـ -O2 و ما فوق). هو - هي
يحذر من رموز المصفوفات التي تكون دائمًا خارج الحدود. هذا التحذير
مكن من قبل الجدار شاحن.
حدود المحارب = 1
هذا هو مستوى التحذير من - حدود المحارب ويتم تمكينه بواسطة الجدار شاحن؛ مستويات أعلى
ليست كذلك ، ويجب طلبها صراحةً.
حدود المحارب = 2
يحذر مستوى التحذير هذا أيضًا من الوصول خارج الحدود للمصفوفات في نهاية
بنية وللمصفوفات التي يتم الوصول إليها من خلال المؤشرات. قد يعطي مستوى التحذير هذا قيمة
عدد أكبر من الإيجابيات الكاذبة ويتم إلغاء تنشيطه افتراضيًا.
-Wbool- قارن
تحذير من التعبير المنطقي مقارنة بقيمة عدد صحيح مختلفة عن
"خطأ صحيح". على سبيل المثال ، المقارنة التالية خاطئة دائمًا:
كثافة العمليات ن = 5 ؛
إذا ((ن> 1) == 2) {...}
تم تمكين هذا التحذير بواسطة الجدار شاحن.
- مؤهلات Wno-مهملة (C و Objective-C فقط)
لا تحذر إذا تم تجاهل مؤهلات الكتابة على المؤشرات. عادةً ما يكون ملف
يحذر المترجم إذا تم تمرير متغير "const char *" إلى وظيفة تأخذ الحرف "char
* ". يمكن استخدام هذا الخيار لمنع مثل هذا التحذير.
-Wno-مهملة-مجموعة- المؤهلات (C و Objective-C فقط)
لا تحذر إذا تم تعيين مؤهلات الكتابة على المصفوفات التي تمثل أهدافًا للمؤشر
مهملة. عادةً ما يحذر المترجم إذا تم تمرير متغير "const int (*) []" إلى
دالة تأخذ معلمة "int (*) []". يمكن استخدام هذا الخيار لقمع
مثل هذا التحذير.
- أنواع المؤشر غير المتوافقة (C و Objective-C فقط)
لا تحذر عند وجود تحويل بين المؤشرات التي لها أنواع غير متوافقة.
هذا التحذير للحالات التي لا يغطيها -لا-مؤشر- تسجيل، الذي يحذر من المؤشر
اجتياز الحجة أو التنازل مع توقيع مختلف.
-Wno- Int- التحويل (C و Objective-C فقط)
لا تحذر من عدم توافق عدد صحيح مع المؤشر والمؤشر لتحويلات عدد صحيح.
يتعلق هذا التحذير بالتحويلات الضمنية ؛ للتحويلات الصريحة التحذيرات
-Wno-int-to-pointer-cast -لا مؤشر إلى int-cast يمكن استخدامها.
-لا-div-by-صفر
لا تحذر من قسمة الأعداد الصحيحة في وقت الترجمة على صفر. قسمة الفاصلة العائمة على
لا يتم التحذير بشأن الصفر ، حيث يمكن أن يكون طريقة مشروعة للحصول على ما لا نهاية و
نانس.
-Wsystem- رؤوس
طباعة رسائل تحذير للإنشاءات الموجودة في ملفات رأس النظام. تحذيرات من
عادةً ما يتم منع رؤوس النظام ، على افتراض أنها لا تفعل ذلك عادةً
يشير إلى مشاكل حقيقية وسيؤدي فقط إلى زيادة صعوبة قراءة إخراج المترجم. استخدام
يطلب خيار سطر الأوامر هذا من GCC إرسال تحذيرات من رؤوس النظام كما لو كانت
حدثت في رمز المستخدم. ومع ذلك ، لاحظ أن استخدام الجدار شاحن بالتزامن مع هذا الخيار
هل ليس تحذير من البرامج العملية غير المعروفة في رؤوس النظام --- لذلك ، -براغمات غير معروفة
يجب أيضًا استخدامها.
-وترامبولين
تحذير بشأن الترامبولين الذي تم إنشاؤه للمؤشرات للوظائف المتداخلة. الترامبولين هو أ
قطعة صغيرة من البيانات أو التعليمات البرمجية التي تم إنشاؤها في وقت التشغيل على المكدس عند العنوان
من وظيفة متداخلة ، ويتم استخدامها لاستدعاء الوظيفة المتداخلة بشكل غير مباشر.
بالنسبة لبعض الأهداف ، تتكون من بيانات فقط وبالتالي لا تتطلب معالجة خاصة.
ولكن ، بالنسبة لمعظم الأهداف ، يتكون من رمز وبالتالي يتطلب إنشاء المكدس
قابل للتنفيذ حتى يعمل البرنامج بشكل صحيح.
-تعويم-يساوي
تحذير إذا تم استخدام قيم الفاصلة العائمة في مقارنات المساواة.
الفكرة من وراء ذلك هي أنه في بعض الأحيان يكون مناسبًا (للمبرمج)
اعتبر قيم الفاصلة العائمة تقريبية لأرقام حقيقية دقيقة بشكل لا نهائي.
إذا كنت تفعل هذا ، فأنت بحاجة إلى الحساب (عن طريق تحليل الكود ، أو في بعض
بطريقة أخرى) الحد الأقصى أو الحد الأقصى المحتمل للخطأ الذي يقدمه الحساب ، و
السماح بذلك عند إجراء المقارنات (وعند إنتاج المخرجات ، ولكن هذا هو
مشكلة مختلفة). على وجه الخصوص ، بدلاً من اختبار المساواة ، يجب عليك التحقق
لمعرفة ما إذا كانت القيمتان لهما نطاقات متداخلة ؛ ويتم ذلك باستخدام
العوامل العلائقية ، لذلك من المحتمل أن تكون مقارنات المساواة خاطئة.
-تقليدي (C و Objective-C فقط)
تحذير من بعض التركيبات التي تتصرف بشكل مختلف في المعيار التقليدي و ISO C. أيضًا
تحذير بشأن تركيبات ISO C التي ليس لها مكافئ C تقليدي و / أو إشكالية
بنيات يجب تجنبها.
* معلمات الماكرو التي تظهر داخل سلسلة حرفية في نص الماكرو. في
يحدث الاستبدال الكلي التقليدي للغة C ضمن القيم الحرفية للسلسلة ، ولكن في ISO C
لم يحدث ذلك.
* في لغة C التقليدية ، لم تكن بعض توجيهات المعالج المسبق موجودة. تقليدي
اعتبرت المعالجات المسبقة أن السطر هو توجيه فقط إذا كان # ظهر في العمود
1 على الخط. وبالتالي -تقليدي يحذر من التوجيهات التقليدية C
يفهم لكنه يتجاهل لأن # لا يظهر كأول حرف في
الخط. كما يقترح عليك إخفاء توجيهات مثل "#pragma" غير مفهومة
التقليدية C عن طريق وضع مسافة بادئة لهم. بعض التطبيقات التقليدية لا تفعل ذلك
التعرف على "#elif" ، لذا فإن هذا الخيار يقترح تجنبه تمامًا.
* ماكرو يشبه الوظيفة يظهر بدون وسيطات.
* عامل التشغيل أحادي زائد.
* و U عدد صحيح ثابت لاحقة ، أو F or L اللواحق الثابتة للفاصلة العائمة.
(يدعم C التقليدي تنسيق L لاحقة على ثوابت عدد صحيح.) لاحظ ، هذه
تظهر اللواحق في وحدات الماكرو المحددة في رؤوس النظام لمعظم الأنظمة الحديثة ،
على سبيل المثال ال _دقيقة/_الأعلى وحدات الماكرو في " ". قد يؤدي استخدام وحدات الماكرو هذه في رمز المستخدم
عادة ما تؤدي إلى تحذيرات كاذبة ، ولكن المعالج المسبق في دول مجلس التعاون الخليجي قد فعل ذلك
السياق الكافي لتجنب التحذير في هذه الحالات.
* تم الإعلان عن وظيفة خارجية في كتلة واحدة ثم استخدامها بعد نهاية ملف
منع.
* عبارة "switch" لها معامل من النوع "long".
* إعلان وظيفة غير "ثابت" يتبع واحدًا "ثابتًا". هذا البناء ليس كذلك
مقبولة من قبل بعض مترجمي لغة سي التقليديين.
* نوع ISO لثابت عدد صحيح له عرض أو توقيع مختلف عن نوعه
النوع التقليدي. يتم إصدار هذا التحذير فقط إذا كان أساس الثابت عشرة.
أي القيم السداسية العشرية أو الثماني ، التي تمثل أنماط البت عادة ، ليست كذلك
محذر بشأن.
* تم اكتشاف استخدام تسلسل سلسلة ISO.
* تهيئة المجاميع التلقائية.
* المعرف يتعارض مع التسميات. تفتقر لغة C التقليدية إلى مساحة اسم منفصلة لـ
تسميات.
* بدء النقابات. إذا كانت المُهيئ تساوي صفرًا ، فسيتم حذف التحذير.
يتم ذلك على افتراض ظهور مُهيئ الصفر في كود المستخدم
مشروطة على سبيل المثال "__STDC__" لتجنب فقد تحذيرات المُهيئ والاعتماد عليها
التهيئة الافتراضية إلى الصفر في حالة C التقليدية.
* التحويلات عن طريق النماذج الأولية بين قيم النقطة الثابتة / العائمة والعكس صحيح. ال
عدم وجود هذه النماذج عند التجميع باستخدام لغة C التقليدية يؤدي إلى أسباب خطيرة
مشاكل. هذه مجموعة فرعية من تحذيرات التحويل المحتملة ؛ للمجموعة الكاملة
تستخدم - تحويل تقليدي.
* استخدام تعريفات وظائف نمط ISO C. هذا التحذير عن قصد ليس نشر
للإعلانات النموذجية أو الوظائف المتنوعة لأن ميزات ISO C هذه
تظهر في التعليمات البرمجية الخاصة بك عند استخدام وحدات ماكرو libiberty التقليدية لتوافق C ،
"بارامز" و "فبارامز". يتم أيضًا تجاوز هذا التحذير للوظائف المتداخلة
لأن هذه الميزة هي بالفعل امتداد GCC وبالتالي فهي ليست ذات صلة بـ
التوافق C التقليدي.
- تحويل تقليدي (C و Objective-C فقط)
تحذير إذا تسبب النموذج الأولي في تحويل نوع مختلف عما سيحدث
لنفس الحجة في حالة عدم وجود نموذج أولي. وهذا يشمل تحويلات
النقطة الثابتة إلى العائمة والعكس صحيح ، وتغيير العرض أو التحويل
توقيع وسيطة النقطة الثابتة إلا عندما تكون مماثلة للترقية الافتراضية.
- إعلان بعد بيان (C و Objective-C فقط)
تحذير عند العثور على تصريح بعد بيان في كتلة. هذا البناء معروف
من C ++ ، تم تقديمه مع ISO C99 وهو مسموح به افتراضيًا في دول مجلس التعاون الخليجي. ليس
بدعم من ISO C90.
- وندف
تحذير إذا تم تقييم معرف غير معرف في توجيه "#if".
-لا-نهاية-تسميات
لا تحذر عندما يتبع "# آخر" أو "#endif" بنص.
-ظلال
تحذير عندما يلقي متغير محلي أو إعلان بالظلال على متغير آخر ،
معلمة أو نوع أو فئة عضو (في C ++) أو متغير مثيل (في Objective-C) أو
كلما تم تظليل وظيفة مضمنة. لاحظ أنه في لغة C ++ ، يحذر المترجم من وجود ملف
يقوم المتغير المحلي بتظليل محرف صريح ، ولكن ليس إذا ظلل بنية / فئة / تعدادًا.
-لا-ظل-ايفار (الهدف- C فقط)
لا تحذر عندما يقوم متغير محلي بظلال متغير حالة في Objective-C
الأسلوب.
- أكبر من =ليون
تحذير كلما كان جسم أكبر من ليون يتم تعريف بايت.
-Wframe أكبر من =ليون
تحذير إذا كان حجم إطار الوظيفة أكبر من ليون بايت. تم الحساب
لتحديد حجم إطار المكدس تقريبي وليس متحفظًا. الفعلية
قد تكون المتطلبات أكبر إلى حد ما من ليون حتى لو لم تحصل على تحذير. في
بالإضافة إلى ذلك ، أي مساحة مخصصة عبر "تخصيص" أو مصفوفات متغيرة الطول أو ذات صلة
لا يتم تضمين التركيبات من قبل المترجم عند تحديد ما إذا كان سيصدر أم لا
تحذير.
-لا خالية- nonheap- كائن
لا تحذر عند محاولة تحرير كائن لم يتم تخصيصه في الكومة.
-Wstack- استخدام =ليون
تحذير إذا كان استخدام المكدس لوظيفة ما قد يكون أكبر من ليون بايت. الحساب
تم القيام به لتحديد استخدام المكدس بشكل متحفظ. أي مساحة مخصصة عبر "تخصيص" ،
يتم تضمين المصفوفات متغيرة الطول ، أو التركيبات ذات الصلة من قبل المترجم عندما
تحديد إصدار تحذير أم لا.
الرسالة تتماشى مع إخراج -fstack-الاستخدام.
* إذا كان استخدام المكدس ثابتًا تمامًا ولكنه يتجاوز المقدار المحدد ، فسيكون:
تحذير: استخدام المكدس 1120 بايت
* إذا كان استخدام المكدس ديناميكيًا (جزئيًا) ولكنه محدود ، فهو:
تحذير: قد يكون استخدام المكدس 1648 بايت
* إذا كان استخدام المكدس ديناميكيًا (جزئيًا) وليس مقيدًا ، فهو:
تحذير: قد يكون استخدام المكدس غير مقيد
- تحسينات حلقة غير آمنة
تحذير إذا كانت الحلقة لا يمكن تحسينها لأن المترجم لا يمكنه تحمل أي شيء
حدود مؤشرات الحلقة. مع -تحسينات غير آمنة- حلقة تحذير إذا كان المترجم
يجعل مثل هذه الافتراضات.
-Wno- المتحذلق- ms- شكل (أهداف MinGW فقط)
عندما تستخدم في تركيبة مع -Wformat -متحذلق بدون امتدادات جنو ، هذا
الخيار لتعطيل التحذيرات حول محددات عرض تنسيق "printf" / "scanf" غير ISO
يتم استخدام "I32" و "I64" و "I" على أهداف Windows ، والتي تعتمد على وقت تشغيل MS.
-Wpointer- أريث
تحذير بشأن أي شيء يعتمد على "حجم" نوع الوظيفة أو "الفراغ". جنو سي
يخصص لهذه الأنواع حجمًا 1 ، للملاءمة في العمليات الحسابية مع "باطل *"
المؤشرات والمؤشرات إلى الوظائف. في C ++ ، حذر أيضًا عند إجراء عملية حسابية
يتضمن "NULL". يتم تمكين هذا التحذير أيضًا بواسطة -بيدانتيك.
حدود نوع
تحذير إذا كانت المقارنة صحيحة دائمًا أو خاطئة دائمًا بسبب النطاق المحدود لـ
نوع البيانات ، لكن لا تحذر من التعبيرات الثابتة. على سبيل المثال ، تحذير إذا كان غير موقع
متغير مقابل صفر مع "<" أو "> =". يتم تمكين هذا التحذير أيضًا بواسطة
اكسترا.
-باد-وظيفة-يلقي (C و Objective-C فقط)
تحذير عند توجيه استدعاء دالة إلى نوع غير مطابق. على سبيل المثال ، تحذير عند وجود مكالمة
إلى دالة تعيد نوع عدد صحيح يتم توجيهها إلى نوع المؤشر.
-Wc90-c99-متوافق (C و Objective-C فقط)
تحذير بشأن الميزات غير الموجودة في ISO C90 ، ولكنها موجودة في ISO C99. على سبيل المثال،
تحذير من استخدام المصفوفات ذات الطول المتغير ، النوع "الطويل" ، النوع "المنطقي" ، المركب
الحرفية والمُبدِلات المعينة وما إلى ذلك. هذا الخيار مستقل عن
الوضع القياسي. التحذيرات معطلة في التعبير الذي يلي "__التمديد__".
-Wc99-c11-متوافق (C و Objective-C فقط)
تحذير بشأن الميزات غير الموجودة في ISO C99 ، ولكنها موجودة في ISO C11. على سبيل المثال،
التحذير من استخدام الهياكل والنقابات المجهولة ، مؤهل النوع "_Atomic" ،
محدد فئة التخزين "_Thread_local" ، محدد "_Alignas" ، عامل تشغيل "Alignof" ،
الكلمة الأساسية "_Generic" ، وما إلى ذلك. هذا الخيار مستقل عن الوضع القياسي.
التحذيرات معطلة في التعبير الذي يلي "__التمديد__".
-Wc ++ - متوافق (C و Objective-C فقط)
تحذير بشأن تركيبات ISO C الموجودة خارج المجموعة الفرعية المشتركة لـ ISO C و ISO
C ++ ، على سبيل المثال طلب التحويل الضمني من "void *" إلى مؤشر إلى غير "void"
اكتب.
-Wc ++ 11-متوافق (C ++ و Objective-C ++ فقط)
تحذير بشأن تركيبات C ++ التي يختلف معناها بين ISO C ++ 1998 و ISO C ++ 2011 ،
على سبيل المثال ، المعرفات في ISO C ++ 1998 التي تعتبر كلمات رئيسية في ISO C ++ 2011. هذا التحذير
يشغل -مقلق ويتم تمكينه بواسطة الجدار شاحن.
-Wc ++ 14-متوافق (C ++ و Objective-C ++ فقط)
تحذير بشأن تركيبات C ++ التي يختلف معناها بين ISO C ++ 2011 و ISO C ++ 2014.
تم تمكين هذا التحذير بواسطة الجدار شاحن.
-Wcast-Qual
تحذير كلما تم إلقاء المؤشر لإزالة مؤهل النوع من النوع الهدف.
على سبيل المثال ، حذر من إرسال "const char *" إلى "char *" عادي.
تحذير أيضًا عند عمل فريق عمل يقدم مؤهلًا للنوع بطريقة غير آمنة. ل
على سبيل المثال ، تحويل "char **" إلى "const char **" غير آمن ، كما في هذا المثال:
/ * p هي قيمة char **. * /
const char ** q = (const char **) p ؛
/ * لا بأس من تعيين سلسلة للقراءة فقط إلى حرف ثابت. * /
* q = "سلسلة" ؛
/ * يشير المؤشر الآن char ** إلى ذاكرة القراءة فقط. * /
** ع = 'ب' ؛
-محاذاة البث
تحذير عند إلقاء مؤشر بحيث تكون المحاذاة المطلوبة للهدف
زيادة. على سبيل المثال ، تحذير إذا تم إرسال "char *" إلى "int *" على الأجهزة حيث
يمكن الوصول إلى الأعداد الصحيحة فقط في حدود ثنائية أو أربعة بايت.
-الكتابة-السلاسل
عند ترجمة C ، أعطِ ثوابت السلسلة من النوع "const char [الطول]" بحيث يتم النسخ
عنوان واحد في مؤشر غير "const" "char *" ينتج تحذيرا. هؤلاء
تساعدك التحذيرات في العثور على رمز وقت التجميع الذي يمكنه محاولة الكتابة في سلسلة
ثابت ، ولكن فقط إذا كنت حريصًا جدًا على استخدام "const" في التصريحات
والنماذج. خلاف ذلك ، فهو مجرد مصدر إزعاج. هذا هو السبب في أننا لم نصنع الجدار شاحن
اطلب هذه التحذيرات.
عند تجميع C ++ ، حذر من التحويل المهمل من سلسلة حرفية إلى "char
* ". يتم تمكين هذا التحذير افتراضيًا لبرامج C ++.
-Wclobbed
تحذير من المتغيرات التي يمكن تغييرها بواسطة "longjmp" أو "vfork". هذا التحذير
تم تمكينه أيضًا بواسطة اكسترا.
- المدعومة بشروط (C ++ و Objective-C ++ فقط)
تحذير من التركيبات المدعومة شرطيًا (C ++ 11 [intro.defs]).
-Wconversion
تحذير من التحويلات الضمنية التي قد تغير القيمة. وهذا يشمل التحويلات
بين حقيقي وعدد صحيح ، مثل "abs (x)" عندما تكون "x" هي "double" ؛ بين التحويلات
موقعة وغير موقعة ، مثل "واجهة مستخدم غير موقعة = -1" ؛ والتحويلات إلى أنواع أصغر ، مثل
"sqrtf (M_PI)". لا تحذر من القوالب الصريحة مثل "abs ((int) x)" و "ui =
(بدون علامة) -1 "، أو إذا لم تتغير القيمة بالتحويل كما في" abs (2.0) ".
يمكن تعطيل التحذيرات المتعلقة بالتحويلات بين الأعداد الصحيحة الموقعة وغير الموقعة بواسطة
استخدام -Wno- تسجيل- التحويل.
بالنسبة لـ C ++ ، حذر أيضًا من الخلط بين دقة التحميل الزائد للتحويلات التي يحددها المستخدم ؛ و
التحويلات التي لا تستخدم أبدًا عامل تحويل نوع: التحويلات إلى "باطل" ، نفس الشيء
اكتب أو فئة أساسية أو إشارة إليها. تحذيرات حول التحويلات بين الموقع
ويتم تعطيل الأعداد الصحيحة بدون إشارة افتراضيًا في C ++ ما لم يكن -Wsign- التحويل is
صراحة تمكين.
-Wno- تحويل- خالية (C ++ و Objective-C ++ فقط)
لا تحذر من التحويلات بين أنواع "NULL" وغير المؤشر. -Wconversion- لاغية is
ممكّن افتراضيًا.
-Wzero-as-null-pointer-ثابت (C ++ و Objective-C ++ فقط)
تحذير عند استخدام "0" حرفيًا باعتباره ثابت مؤشر فارغ. يمكن أن يكون هذا مفيدًا لـ
تسهيل التحويل إلى "nullptr" في C ++ 11.
-تاريخ الوقت
تحذير عند مواجهة وحدات الماكرو "__TIME__" أو "__DATE__" أو "__TIMESTAMP__" لأنها
قد يمنع التجميعات القابلة للاستنساخ متطابقة البت.
-حذف-غير مكتمل (C ++ و Objective-C ++ فقط)
تحذير عند حذف مؤشر إلى نوع غير مكتمل ، مما قد يتسبب في سلوك غير محدد في
مدة العرض. يتم تمكين هذا التحذير بشكل افتراضي.
يلقي بلا فائدة (C ++ و Objective-C ++ فقط)
تحذير عند تحويل التعبير إلى نوعه الخاص.
-جسم فارغ
تحذير إذا ظهر نص فارغ في عبارة "if" أو "else" أو "do while". هذا التحذير
يتم تمكينه أيضًا بواسطة اكسترا.
-وينوم-قارن
تحذير من المقارنة بين قيم الأنواع المعدودة المختلفة. في تعداد C ++
يتم أيضًا تشخيص حالات عدم التطابق في التعبيرات الشرطية ويتم تمكين التحذير بواسطة
إفتراضي. في C ، يتم تمكين هذا التحذير بواسطة الجدار شاحن.
-القفز-يخطئ-الحرف الأول (C ، Objective-C فقط)
تحذير إذا قفزت عبارة "goto" أو عبارة "switch" إلى الأمام عبر
تهيئة متغير ، أو يقفز للخلف إلى التسمية بعد أن يكون المتغير
مهيأ. هذا يحذر فقط من المتغيرات التي تمت تهيئتها عندما تكون كذلك
أعلن. هذا التحذير مدعوم فقط لـ C و Objective-C ؛ في C ++ هذا النوع من
فرع هو خطأ في أي حال.
-القفز-يخطئ-الحرف الأول تم تضمينه في -Wc ++ - متوافق. يمكن تعطيله باستخدام
-لا-قفزة-يخطئ-الحرف الأول الخيار.
-Wsign- قارن
تحذير عندما تؤدي المقارنة بين القيم الموقعة وغير الموقعة إلى ظهور خطأ
ينتج عندما يتم تحويل القيمة الموقعة إلى قيمة غير موقعة. هذا التحذير ممكّن أيضًا
by اكسترا؛ للحصول على التحذيرات الأخرى من اكسترا بدون هذا التحذير ، استخدم اكسترا
-لا تسجيل- مقارنة.
-Wsign- التحويل
تحذير من التحويلات الضمنية التي قد تغير علامة قيمة عدد صحيح ، مثل
تخصيص تعبير عدد صحيح بعلامة لمتغير عدد صحيح بدون إشارة. صريح
يلقي الصمت التحذير. في C ، يتم تمكين هذا الخيار أيضًا من خلال -Wconversion.
-الطفو- التحويل
تحذير من التحويلات الضمنية التي تقلل من دقة القيمة الحقيقية. هذه
يتضمن تحويلات من حقيقي إلى عدد صحيح ، ومن دقة أعلى حقيقية إلى أقل
القيم الحقيقية الدقيقة. يتم تمكين هذا الخيار أيضًا بواسطة -Wconversion.
-مقاس-إلغاء التخصيص (C ++ و Objective-C ++ فقط)
تحذير بشأن تعريف وظيفة إلغاء التخصيص غير الحجم
عامل باطل حذف (باطل *) لا استثناء ؛
عامل باطل حذف [] (باطل *) noexcept؛
بدون تعريف دالة إلغاء تخصيص الحجم المقابل
حذف عامل باطل (void *، std :: size_t) noexcept؛
عامل باطل حذف [] (void *، std :: size_t) noexcept؛
أو العكس. تم التمكين بواسطة اكسترا الرائعة بالإضافة إلى -إلغاء تخصيص.
-حجم المؤشر-memaccess
التحذير من معلمات الطول المشبوهة لبعض الوظائف المضمنة في السلاسل والذاكرة
إذا كانت الحجة تستخدم "sizeof". يحذر هذا التحذير على سبيل المثال من "memset (ptr، 0، sizeof
(ptr)) ؛ "إذا لم يكن" ptr "مصفوفة ، ولكنه مؤشر ، ويقترح إصلاحًا محتملاً ، أو
حول "memcpy (& foo، ptr، sizeof (& foo))؛". تم تمكين هذا التحذير من قبل الجدار شاحن.
-Wsizeof- مصفوفة-وسيطة
تحذير عند تطبيق عامل التشغيل "sizeof" على معلمة تم إعلانها كمصفوفة
في تعريف الوظيفة. يتم تمكين هذا التحذير افتراضيًا لبرامج C و C ++.
-Wmemset-transposition-args
تحذير للمكالمات المشبوهة لوظيفة "memset" المضمنة ، إذا كانت الوسيطة الثانية كذلك
ليس صفرًا والوسيطة الثالثة هي صفر. هذا يحذر على سبيل المثال @ من "memset (buf، sizeof
buf، 0) "حيث يُرجح أن" memset (buf، 0، sizeof buf) "كان يُقصد به بدلاً من ذلك.
يتم إصدار التشخيص فقط إذا كانت الوسيطة الثالثة هي صفر حرفي. إذا كان هو بعض
التعبير المطوي إلى الصفر ، أو المصبوب من الصفر إلى نوع ما ، وما إلى ذلك ، فهو أقل بكثير
من المحتمل أن يكون المستخدم قد تبادل الحجج عن طريق الخطأ ولا يتم إصدار أي تحذير.
تم تمكين هذا التحذير بواسطة الجدار شاحن.
-العنوان
تحذير من الاستخدامات المشبوهة لعناوين الذاكرة. وتشمل هذه استخدام عنوان
تعمل في تعبير شرطي ، مثل "void func (void) ؛ if (func)" ، و
مقارنات بعنوان الذاكرة لسلسلة حرفية ، مثل "if (x ==" abc ")".
تشير هذه الاستخدامات عادةً إلى خطأ مبرمج: عنوان الوظيفة دائمًا
بتقييم صحيح ، لذا فإن استخدامها في الشرط عادة ما يشير إلى أن المبرمج
نسيت الأقواس في استدعاء الوظيفة ؛ والمقارنات مع القيم الحرفية
تؤدي إلى سلوك غير محدد وليست محمولة في لغة C ، لذا فهي تشير عادةً
أن المبرمج كان ينوي استخدام "strcmp". تم تمكين هذا التحذير من قبل الجدار شاحن.
-Wlogical- المرجع
تحذير من الاستخدامات المشبوهة للعوامل المنطقية في التعبيرات. وهذا يشمل استخدام ملفات
عوامل التشغيل المنطقية في السياقات التي من المحتمل أن يتوقع فيها وجود عامل قليل الحكمة.
-الأقواس المنطقية
تحذير من عدم استخدام المنطق في معامل الجانب الأيسر للمقارنة. هذه
الخيار لا يحذر إذا كان المعامل RHS من النوع المنطقي. الغرض منه هو
كشف الشفرة المشبوهة مثل ما يلي:
كثافة العمليات
إذا (! a> 1) {...}
من الممكن قمع التحذير بلف LHS بين أقواس:
إذا ((! a)> 1) {...}
تم تمكين هذا التحذير بواسطة الجدار شاحن.
-إجمالي-العائد
تحذير إذا تم تحديد أو استدعاء أي وظائف تعيد الهياكل أو النقابات. (في
اللغات التي يمكنك من خلالها إرجاع مصفوفة ، يؤدي هذا أيضًا إلى تحذير.)
-لا-عدوانية-حلقة-أمثلية
تحذير إذا كان المترجم في حلقة مع عدد ثابت من التكرارات يكتشفها غير معرف
السلوك في بعض العبارات أثناء تكرار واحد أو أكثر.
-لا-سمات
لا تحذر إذا تم استخدام "__ سمة__" غير متوقعة ، مثل السمات غير المعروفة ،
سمات الوظيفة المطبقة على المتغيرات ، إلخ. هذا لا يوقف الأخطاء لـ
استخدام غير صحيح للسمات المدعومة.
إعادة تعريف -Wno- المدمج- الماكرو
لا تحذر إذا تم إعادة تعريف بعض وحدات الماكرو المضمنة. يؤدي هذا إلى منع التحذيرات الخاصة بـ
إعادة تعريف "__TIMESTAMP__" و "__TIME__" و "__DATE__" و "__FILE__" و
"__BASE_FILE__".
-نماذج Wstrict (C و Objective-C فقط)
تحذير إذا تم التصريح عن دالة أو تعريفها بدون تحديد أنواع الوسيطات. (ان
يُسمح بتعريف دالة النمط القديم دون سابق إنذار إذا كان مسبوقًا ب
التصريح الذي يحدد أنواع الوسيطات.)
- إعلان على الطراز القديم (C و Objective-C فقط)
تحذير من الاستخدامات القديمة ، وفقًا لمعيار C ، في إعلان. ل
على سبيل المثال ، حذر من أن محددات فئة التخزين مثل "ثابت" ليست هي الأشياء الأولى في ملف
إعلان. يتم تمكين هذا التحذير أيضًا بواسطة اكسترا.
- تعريف الطراز القديم (C و Objective-C فقط)
تحذير إذا تم استخدام تعريف دالة ذات نمط قديم. يتم إعطاء تحذير حتى لو كان هناك
نموذج أولي سابق.
-Wmissing- نوع المعلمة (C و Objective-C فقط)
يتم الإعلان عن معلمة الوظيفة بدون محدد النوع في وظائف نمط K & R:
فو (شريط) باطل {}
يتم تمكين هذا التحذير أيضًا بواسطة اكسترا.
-النماذج الأولية المفقودة (C و Objective-C فقط)
تحذير إذا تم تعريف دالة عالمية بدون إعلان نموذج أولي سابق. هذه
يتم إصدار تحذير حتى لو كان التعريف نفسه يوفر نموذجًا أوليًا. استخدم هذا الخيار
لاكتشاف الوظائف العامة التي لا تحتوي على إعلان نموذج أولي مطابق في ملف
الملف الاساسي. هذا الخيار غير صالح لـ C ++ لأن كافة تعريفات الوظائف
تقديم نماذج أولية وإعلان عدم المطابقة يعلن وجود حمل زائد بدلاً من
يتعارض مع إعلان سابق. يستخدم - الإقرارات الناقصة للكشف عن المفقودين
الإعلانات في C ++.
- الإقرارات الناقصة
تحذير إذا تم تعريف دالة عالمية بدون تصريح سابق. افعل ذلك حتى لو
يوفر التعريف نفسه نموذجًا أوليًا. استخدم هذا الخيار لاكتشاف العالمية
الوظائف التي لم يتم التصريح عنها في ملفات الرأس. في C ، لم يتم إصدار أي تحذيرات بشأن
الدوال مع الإعلانات السابقة غير النموذجية ؛ استعمال -النماذج الأولية المفقودة للكشف عن
نماذج مفقودة. في C ++ ، لا يتم إصدار تحذيرات لقوالب الوظائف أو من أجل
وظائف مضمنة ، أو وظائف في مساحات أسماء مجهولة.
-ضياع-الحقل-التهيئة
تحذير إذا كانت هناك بعض الحقول المفقودة في مُهيئ البنية. على سبيل المثال ، ما يلي
تسبب الشفرة في مثل هذا التحذير ، لأن "xh" هي صفر ضمنيًا:
هيكل s {int f ، g ، h ؛ } ؛
هيكل sx = {3، 4} ؛
هذا الخيار لا يحذر من التهيئة المعينة ، لذلك التعديل التالي
لا يطلق تحذير:
هيكل s {int f ، g ، h ؛ } ؛
هيكل sx = {.f = 3، .g = 4} ؛
في لغة C ++ ، لا يحذر هذا الخيار من المُهيئ {} الفارغ ، على سبيل المثال:
هيكل s {int f ، g ، h ؛ } ؛
sx = {} ؛
تم تضمين هذا التحذير في اكسترا. للحصول على الآخرين اكسترا تحذيرات بدون هذا ،
تستخدم اكسترا -لا-مفقودة-الحقل-التهيئة.
-ونو- multichar
لا تحذر إذا كان ثابت متعدد الأحرف ('FOOF') يستخدم. عادة ما يشيرون إلى أ
خطأ مطبعي في كود المستخدم ، لأن لديهم قيم محددة من قبل التنفيذ ، ويجب ألا تكون كذلك
المستخدمة في التعليمات البرمجية المحمولة.
- غير طبيعي[=<لا شيء|id|NFC|نفكك>]
في ISO C و ISO C ++ ، يختلف معرفان إذا كانا متتابعين مختلفين من
الشخصيات. ومع ذلك ، في بعض الأحيان عندما تكون الأحرف خارج مجموعة أحرف ASCII الأساسية
تستخدم ، يمكن أن يكون لديك تسلسلين مختلفين للأحرف يبدوان متشابهين. لتجنب
الارتباك ، يحدد معيار ISO 10646 بعضًا التطبيع القواعد والتي عند تطبيقها
تأكد من تحويل تسلسلين متشابهين إلى نفس التسلسل. مجلس التعاون الخليجي
يمكنه تحذيرك إذا كنت تستخدم معرفات لم يتم تطبيعها ؛ هذا الخيار
يتحكم في هذا التحذير.
هناك أربعة مستويات من التحذير مدعومة من قبل دول مجلس التعاون الخليجي. الافتراضي هو غير طبيعي = nfc,
الذي يحذر من أي معرف غير موجود في النموذج القياسي ISO 10646 "C" ،
NFC. NFC هو الشكل الموصى به لمعظم الاستخدامات. إنه يعادل - غير طبيعي.
لسوء الحظ ، هناك بعض الأحرف المسموح بها في المعرفات بواسطة ISO C و ISO C ++
هذا ، عند تحويله إلى NFC ، غير مسموح به في المعرفات. هذا هو ، لا توجد طريقة
لاستخدام هذه الرموز في ISO C أو C ++ المحمولة والحصول على جميع معرفاتك في NFC.
- غير طبيعي = معرف يمنع التحذير لهذه الشخصيات. ومن المؤمل أن المستقبل
إصدارات المعايير المعنية ستصحح هذا ، وهذا هو السبب في أن هذا الخيار ليس كذلك
الافتراضي.
يمكنك إيقاف تشغيل التحذير لجميع الأحرف عن طريق الكتابة - غير طبيعي = لا شيء or
-لا تطبيع. يجب أن تفعل هذا فقط إذا كنت تستخدم بعض التسوية الأخرى
مخطط (مثل "D") ، لأنه بخلاف ذلك يمكنك بسهولة إنشاء أخطاء موجودة حرفيًا
من المستحيل رؤيته.
بعض الأحرف في ISO 10646 لها معاني مميزة ولكنها تبدو متطابقة في بعض الخطوط
أو منهجيات العرض ، خاصة بعد تطبيق التنسيق. على سبيل المثال
يتم عرض "\ u207F" ، "SUPERSCRIPT LATIN SMALL LETTER N" ، تمامًا مثل حرف "n" العادي
تم وضعه في نص مرتفع. تحدد ISO 10646 ملف نفكك مخطط التطبيع ل
قم بتحويل كل هذه إلى نموذج قياسي أيضًا ، ويحذر GCC إذا لم يكن الرمز الخاص بك موجودًا
إذا كنت تستخدم NFKC غير طبيعي = nfkc. هذا التحذير يمكن مقارنته بالتحذير من كل شيء
المعرف الذي يحتوي على الحرف O لأنه قد يتم الخلط بينه وبين الرقم 0 ،
وهكذا ليس الإعداد الافتراضي ، ولكنه قد يكون مفيدًا باعتباره اصطلاحًا ترميزًا محليًا إذا كان
لا يمكن إصلاح بيئة البرمجة لعرض هذه الأحرف بشكل واضح.
-Wno- مهملة
لا تحذر من استخدام الميزات المهملة.
- إقرارات - مهملة
لا تحذر من استخدامات الوظائف ، والمتغيرات ، والأنواع التي تم وضع علامة مهملة بواسطة
باستخدام السمة "مهملة".
-لا تجاوز
لا تحذر من تجاوز وقت الترجمة في التعبيرات الثابتة.
-لا-أودر
تحذير من انتهاكات One Definition Rule أثناء تحسين وقت الارتباط. يتطلب
دمج نوع flto-odr ليتم تمكينها. ممكن بشكل افتراضي.
-Wopenmp-simd
تحذير إذا تجاوز نموذج تكلفة Vectorizer OpenMP أو توجيه Cilk Plus simd
حددها المستخدم. ال -fsimd-cost-model = غير محدود يمكن استخدام الخيار لتخفيف التكلفة
نموذج.
-Woverride-init (C و Objective-C فقط)
تحذير إذا تم تجاوز حقل مهيأ بدون آثار جانبية عند استخدام معين
المبدئ.
تم تضمين هذا التحذير في اكسترا. للحصول على الآخرين اكسترا تحذيرات بدون هذا ،
تستخدم اكسترا -Wno-override-init.
-معبأة
تحذير إذا تم منح البنية السمة المحزمة ، لكن السمة المحزومة لا تحتوي على
تأثير على تخطيط أو حجم الهيكل. قد تكون هذه الهياكل خاطئة ل
فائدة قليلة. على سبيل المثال ، في هذا الرمز ، المتغير "fx" في "شريط البنية" هو
محاذاة بشكل غير صحيح على الرغم من أن "شريط الهيكل" لا يحتوي في حد ذاته على السمة المجمعة:
هيكل فو {
int x ؛
شار أ ، ب ، ج ، د ؛
} __attribute __ ((معبأة)) ؛
شريط البناء {
شار ض ؛
هيكل فو و ؛
};
-Wpacked-bitfield- متوافق
تتجاهل السلاسل 4.1 و 4.2 و 4.3 من GCC السمة "المعبأة" في حقول بت من النوع
"شار". تم إصلاح ذلك في GCC 4.4 ولكن التغيير يمكن أن يؤدي إلى اختلافات في
تخطيط الهيكل. يُعلمك GCC عندما يتم تغيير إزاحة مثل هذا الحقل في GCC
4.4 على سبيل المثال ، لم تعد هناك مساحة 4 بت بين الحقل "أ" و "ب" في هذا
بناء:
هيكل فو
{
شار أ: 4 ؛
شار ب: 8 ؛
} __attribute__ ((معبأة)) ؛
يتم تمكين هذا التحذير بشكل افتراضي. يستخدم -Wno-معبأة-bitfield- متوافق لتعطيل هذا
تحذير.
- مبطن
تحذير إذا تم تضمين الحشو في بنية ، إما لمحاذاة عنصر من
هيكل أو لمحاذاة الهيكل بأكمله. في بعض الأحيان عندما يحدث هذا فمن الممكن
لإعادة ترتيب مجالات الهيكل لتقليل الحشو ، وبالتالي جعل
هيكل أصغر.
- زائدة - decls
تحذير إذا تم الإعلان عن أي شيء أكثر من مرة في نفس النطاق ، حتى في الحالات التي يكون فيها
التصريح المتعدد صالح ولا يغير شيئًا.
-الخارج الغربية (C و Objective-C فقط)
تحذير إذا تمت مصادفة تصريح "خارجي" داخل دالة.
-لا وراثة-varadic-ctor
قم بإلغاء التحذيرات حول استخدام المُنشئات الوراثة لـ C ++ 11 عند الفئة الأساسية
موروث من لديه مُنشئ متغير C ؛ التحذير قيد التشغيل افتراضيًا لأن
علامات الحذف ليست وراثية.
-وينلاين
تحذير إذا كان لا يمكن تضمين دالة تم إعلانها على أنها مضمنة. حتى مع هذا
الخيار ، المترجم لا يحذر من الفشل في الوظائف المضمنة المعلنة في
رؤوس النظام.
يستخدم المترجم مجموعة متنوعة من الأساليب البحثية لتحديد ما إذا كان سيتم تضمين ملف
وظيفة. على سبيل المثال ، يأخذ المترجم في الاعتبار حجم الوظيفة
مضمنة ومقدار التضمين الذي تم إجراؤه بالفعل في الوظيفة الحالية.
لذلك ، يمكن أن تتسبب التغييرات التي تبدو غير مهمة في البرنامج المصدر في حدوث
التحذيرات التي تنتجها -وينلاين لتظهر أو تختفي.
-Wno- غير صالح- offsetof (C ++ و Objective-C ++ فقط)
منع التحذيرات من تطبيق الماكرو "offsetof" على نوع غير POD. وفق
معيار ISO C ++ 2014 ، تطبيق "offsetof" على نوع تخطيط غير قياسي هو
غير معرف. ومع ذلك ، في تطبيقات C ++ الحالية ، يعطي "offsetof" عادةً
نتائج ذات مغزى. هذه العلامة مخصصة للمستخدمين الذين يدركون أنهم يكتبون
رمز غير قابل للنقل والذين اختاروا عمدًا تجاهل التحذير المتعلق به.
قد يتم تخفيف القيود المفروضة على "offsetof" في إصدار مستقبلي من معيار C ++.
-Wno-int-to-pointer-cast
قم بإلغاء التحذيرات من عمليات التحويل إلى نوع المؤشر لعدد صحيح بحجم مختلف. في
C ++ ، يعد الإرسال إلى نوع مؤشر أصغر حجمًا خطأ. وينت إلى-مؤشر يلقي is
ممكّن افتراضيًا.
-لا مؤشر إلى int-cast (C و Objective-C فقط)
قم بإلغاء التحذيرات من عمليات التحويل من مؤشر إلى نوع عدد صحيح بحجم مختلف.
-Winvalid-pch
تحذير إذا تم العثور على رأس مترجم مسبقًا في مسار البحث ولكن لا يمكن استخدامه.
-طويلة الأمد
تحذير في حالة استخدام النوع "الطويل". يتم تمكين هذا من قبل أي منهما -بيدانتيك or
-تقليدي في وضعي ISO C90 و C ++ 98. لمنع رسائل التحذير ، استخدم
- لم يدم طويلا.
-Wvariadic- وحدات الماكرو
تحذير إذا تم استخدام وحدات ماكرو متغيرة في وضع ISO C90 ، أو إذا كانت صيغة GNU البديلة هي
تستخدم في وضع ISO C99. يتم تمكين هذا من قبل أي منهما -بيدانتيك or -تقليدي. إلى
منع رسائل التحذير ، استخدم -لا-varadic- وحدات الماكرو.
-فارجس
تحذير من الاستخدام المشكوك فيه لوحدات الماكرو المستخدمة للتعامل مع الوسائط المتغيرة مثل
"va_start". هذا هو الافتراضي. لمنع رسائل التحذير ، استخدم -لا-فارارجس.
-Wvector-عملية-الأداء
تحذير إذا لم يتم تنفيذ عملية المتجه عبر إمكانيات SIMD للبنية.
مفيد بشكل رئيسي لضبط الأداء. يمكن تنفيذ عملية المتجهات
"متعدد التعريف" ، مما يعني أن العملية العددية يتم تنفيذها على كل متجه
عنصر؛ "بالتوازي" ، مما يعني أن عملية المتجه يتم تنفيذها باستخدام
الحجميات من النوع الأوسع ، والتي عادةً ما تكون أكثر كفاءة في الأداء ؛ و "كفرد واحد
سلمي "، مما يعني أن المتجه يلائم نوعًا عدديًا.
-لا-افتراضية-نقل-تعيين
قم بإلغاء التحذيرات المتعلقة بالوراثة من قاعدة افتراضية بحركة C ++ 11 غير بسيطة
مهمة تشغيل. هذا أمر خطير لأنه إذا كان من الممكن الوصول إلى القاعدة الافتراضية
أكثر من مسار ، يتم تحريكه عدة مرات ، مما قد يعني أن كلا الكائنين ينتهي بهما الأمر
انتقل من الدولة. إذا تمت كتابة عامل تعيين النقل لتجنب الانتقال من
كائن تم نقله من ، يمكن تعطيل هذا التحذير.
-فلا
تحذير إذا تم استخدام مصفوفة متغيرة الطول في الكود. -نو- vla يمنع -بيدانتيك
تحذير من صفيف متغير الطول.
-تقلب- تسجيل- فار
تحذير إذا تم الإعلان عن متغير تسجيل متغير. المعدل المتطاير لا
تمنع كافة التحسينات التي قد تزيل عمليات القراءة و / أو الكتابة للتسجيل
المتغيرات. تم تمكين هذا التحذير من قبل الجدار شاحن.
-Wdisabled- التحسين
تحذير إذا تم تعطيل تصريح التحسين المطلوب. هذا التحذير لا بشكل عام
الإشارة إلى وجود أي خطأ في التعليمات البرمجية الخاصة بك ؛ إنه يشير فقط إلى أن دول مجلس التعاون الخليجي
المحسنون غير قادرين على التعامل مع الكود بشكل فعال. في كثير من الأحيان ، المشكلة هي أن
الكود كبير جدًا أو معقد جدًا ؛ دول مجلس التعاون الخليجي ترفض تحسين البرامج عند التحسين
من المحتمل أن تستغرق وقتًا طويلاً للغاية.
-Wpointer- تسجيل (C و Objective-C فقط)
التحذير من اجتياز حجة المؤشر أو التعيين بمواقع مختلفة. هذه
الخيار مدعوم فقط لـ C و Objective-C. هو ضمني من قبل الجدار شاحن و
-بيدانتيك، والتي يمكن تعطيلها باستخدام -لا-مؤشر- تسجيل.
- حامي Wstack
يكون هذا الخيار نشطًا فقط عندما -حامي-فسك نشط. يحذر من الوظائف
غير محمية ضد تحطيم المكدس.
-الطول-الاوتار
تحذير من ثوابت السلسلة التي تكون أطول من "الحد الأدنى للطول"
المحدد في المعيار C. يسمح المترجمون الحديثون عمومًا بثوابت السلسلة
أطول بكثير من الحد الأدنى للمعيار ، ولكن يجب أن تكون البرامج المحمولة جدًا
تجنب استخدام سلاسل أطول.
ينطبق الحد بعد سلسلة ثابتة ، ولا تحسب الزائدة
نول. في C90 ، كان الحد الأقصى هو 509 حرفًا ؛ في C99 ، تم رفعه إلى 4095. C ++ 98 يفعل
لا تحدد حدًا أدنى معياريًا للحد الأقصى ، لذلك لا نشخص السلاسل ذات الطول المتراكب في
C ++.
هذا الخيار متضمن بواسطة -بيدانتيك، ويمكن تعطيله باستخدام
-لا-طول- سلاسل.
- الثوابت غير الثابتة (C و Objective-C فقط)
إصدار تحذير لأي ثابت عائم لا يحتوي على لاحقة. عند استخدامها
مع -Wsystem- رؤوس يحذر من مثل هذه الثوابت في ملفات رأس النظام.
يمكن أن يكون هذا مفيدًا عند إعداد كود لاستخدامه مع "FLOAT_CONST_DECIMAL64" pragma
من امتداد الفاصلة العشرية العشرية إلى C99.
-Wno- المعينة- init (C و Objective-C فقط)
قم بإلغاء التحذيرات عند استخدام مُهيئ موضعي لتهيئة بنية
تم تمييزه بالسمة "المعينة_المنتهية".
مزيد من الخيارات For التصحيح حل متجر العقارات الشامل الخاص بك في جورجيا البرنامج or الخليج
يوجد في GCC العديد من الخيارات الخاصة التي تُستخدم لتصحيح أخطاء برنامجك أو GCC:
-g إنتاج معلومات تصحيح الأخطاء بالتنسيق الأصلي لنظام التشغيل (الطعنات ، COFF ،
XCOFF أو DWARF 2). يمكن أن يعمل GDB مع معلومات التصحيح هذه.
في معظم الأنظمة التي تستخدم تنسيق Stabs ، -g يتيح استخدام معلومات تصحيح الأخطاء الإضافية
لا يمكن استخدامه إلا GDB ؛ هذه المعلومات الإضافية تجعل تصحيح الأخطاء يعمل بشكل أفضل في GDB ولكن
ربما يجعل مصححات الأخطاء الأخرى تتعطل أو ترفض قراءة البرنامج. إذا أردت أن
السيطرة على وجه التحديد ما إذا كان سيتم إنشاء معلومات إضافية أم لا -غستابس +, -جستابس,
-gxcoff +, -gxcoffالطرق أو -gvms (انظر أدناه).
يسمح لك مجلس التعاون الخليجي باستخدام ملفات -g مع -O. قد الاختصارات المأخوذة عن طريق الكود الأمثل
ينتج أحيانًا نتائج مفاجئة: بعض المتغيرات التي أعلنت عنها قد لا تكون موجودة في
الكل؛ قد يتحرك تدفق السيطرة لفترة وجيزة حيث لم تكن تتوقعه ؛ بعض العبارات قد
لا يتم تنفيذها لأنها تحسب نتائج ثابتة أو أن قيمها موجودة بالفعل
كف؛ قد يتم تنفيذ بعض العبارات في أماكن مختلفة لأنه تم نقلها
من الحلقات.
ومع ذلك ، فإنه يثبت أنه من الممكن تصحيح أخطاء الإخراج المحسن. هذا يجعلها معقولة
لاستخدام المحسن للبرامج التي قد تحتوي على أخطاء.
تكون الخيارات التالية مفيدة عندما يتم إنشاء GCC مع القدرة على المزيد
من تنسيق تصحيح واحد.
-gsplit-قزم
افصل أكبر قدر ممكن من معلومات التصحيح القزم في ملف إخراج منفصل
بالملحق .dwo. يسمح هذا الخيار لنظام الإنشاء بتجنب ربط الملفات
مع معلومات التصحيح. لكي يكون هذا الخيار مفيدًا ، يتطلب مصحح أخطاء قادرًا على
قراءة ملفات .dwo.
-ggdb
إنتاج معلومات تصحيح الأخطاء لاستخدامها بواسطة GDB. هذا يعني استخدام أكثرها تعبيرا
التنسيق المتاح (DWARF 2 ، أو الطعنات ، أو التنسيق الأصلي إذا لم يكن أي منهما متاحًا
مدعوم) ، بما في ذلك امتدادات GDB إذا كان ذلك ممكنًا.
-جيبنامز
إنشاء أقسام dwarf .debug_pubnames و .debug_pubtypes.
-ggnu-أسماء الحانات
قم بإنشاء أقسام .debug_pubnames و .debug_pubtypes بتنسيق مناسب لـ
التحويل إلى فهرس GDB. هذا الخيار مفيد فقط مع رابط يمكنه
إنتاج إصدار فهرس GDB 7.
-جستابس
قم بإنتاج معلومات تصحيح الأخطاء بتنسيق stabs (إذا كان ذلك مدعومًا) ، بدون GDB
ملحقات. هذا هو التنسيق الذي تستخدمه DBX في معظم أنظمة BSD. في MIPS و Alpha و
أنظمة الإصدار 4 من النظام الخامس ينتج هذا الخيار إخراج طعنات لتصحيح الأخطاء غير الموجودة
يفهمها DBX أو SDB. يتطلب هذا الخيار في أنظمة الإصدار 4 من النظام الخامس GNU
المجمع.
-تصحيح-غير مستخدمة-رموز تصحيح
قم بإنتاج معلومات تصحيح الأخطاء بتنسيق stabs (إذا كان ذلك مدعومًا) ، للرموز فقط
التي يتم استخدامها بالفعل.
-نسبه-فئة-التصحيح-دائما
بدلاً من إرسال معلومات تصحيح الأخطاء لفئة C ++ في ملف كائن واحد فقط ،
إرساله في جميع ملفات الكائنات باستخدام الفئة. يجب استخدام هذا الخيار فقط مع
مصححات الأخطاء غير القادرة على التعامل مع الطريقة التي تُصدر بها دول مجلس التعاون الخليجي عادةً معلومات تصحيح الأخطاء
للفئات لأن استخدام هذا الخيار يزيد من حجم معلومات التصحيح بمقدار
بقدر عامل اثنين.
- قسم أنواع الشوائب
عند استخدام DWARF الإصدار 4 أو أعلى ، يمكن وضع أنواع DIE بمفردها
قسم ".debug_types" بدلاً من جعلها جزءًا من قسم ".debug_info". هو - هي
هو أكثر فاعلية لوضعها في أقسام منفصلة من comdat منذ ذلك الحين يمكن للرابط
إزالة التكرارات. ولكن ليس كل مستهلكي DWARF يدعمون أقسام ".debug_types" حتى الآن
وفي بعض الكائنات ، ينتج ".debug_types" حجم أكبر بدلاً من تصحيح الأخطاء الأصغر
معلومات.
-غستابس +
قم بإنتاج معلومات تصحيح الأخطاء بتنسيق stabs (إذا كان ذلك مدعومًا) ، باستخدام GNU
الامتدادات لا يفهمها إلا مصحح أخطاء جنو (GDB). استخدام هذه الامتدادات
من المحتمل أن تتسبب في تحطم مصححات الأخطاء الأخرى أو ترفض قراءة البرنامج.
-كوف
قم بإنتاج معلومات التصحيح بتنسيق COFF (إذا كان ذلك مدعومًا). هذا ال
التنسيق المستخدم بواسطة SDB في معظم أنظمة System V قبل الإصدار 4 من النظام الخامس.
-gxcoff
قم بإنشاء معلومات تصحيح الأخطاء بتنسيق XCOFF (إذا كان ذلك مدعومًا). هذا ال
التنسيق المستخدم بواسطة مصحح أخطاء DBX على أنظمة IBM RS / 6000.
-gxcoff +
قم بإنتاج معلومات تصحيح الأخطاء بتنسيق XCOFF (إذا كان ذلك مدعومًا) ، باستخدام GNU
الامتدادات لا يفهمها إلا مصحح أخطاء جنو (GDB). استخدام هذه الامتدادات
من المحتمل أن تتسبب في تعطل مصححات الأخطاء الأخرى أو ترفض قراءة البرنامج ، وقد يتسبب ذلك
المجمعات الأخرى غير مُجمِّع جنو (GAS) تفشل بسبب خطأ.
-قزم-الإصدار
قم بإنشاء معلومات تصحيح الأخطاء بتنسيق DWARF (إذا كان ذلك مدعومًا). قيمة ال
الإصدار قد يكون إما 2 أو 3 أو 4 أو 5 ؛ الإصدار الافتراضي لمعظم الأهداف هو 4. DWARF
الإصدار 5 تجريبي فقط.
لاحظ أنه مع DWARF الإصدار 2 ، تتطلب بعض المنافذ وتستخدم دائمًا بعض المنافذ غير المتضاربة
ملحقات DWARF 3 في جداول التصفية.
الإصدار 4 قد يتطلب GDB 7.0 و -fvar- تتبع- التخصيصات لتحقيق أقصى فائدة.
-جريكورد- مفاتيح دول مجلس التعاون الخليجي
يؤدي رمز التبديل هذا إلى استخدام خيارات سطر الأوامر لاستدعاء المترجم الذي قد يكون
تؤثر على إنشاء الكود ليتم إلحاقه بسمة DW_AT_producer في DWARF
معلومات التصحيح. الخيارات متسلسلة بمسافات تفصل بينها
بعضها البعض ومن إصدار المترجم. أنظر أيضا - مفاتيح دول مجلس التعاون الخليجي لآخر
طريقة لتخزين خيارات المترجم في ملف الكائن. هذا هو الافتراضي.
-Gno- سجل- مفاتيح دول مجلس التعاون الخليجي
عدم السماح بإلحاق خيارات سطر الأوامر بسمة DW_AT_producer في DWARF
معلومات التصحيح.
-القزم الصارم
عدم السماح باستخدام امتدادات لإصدار DWARF القياسي الأحدث من المحدد مع
-قزم-الإصدار. على معظم الأهداف باستخدام امتدادات DWARF غير المتضاربة من وقت لاحق
الإصدارات القياسية مسموح بها.
- صارم - قزم
السماح باستخدام امتدادات لإصدار DWARF القياسي الأحدث من المحدد مع
-قزم-الإصدار.
-gz[=نوع]
قم بإنشاء أقسام تصحيح أخطاء مضغوطة بتنسيق DWARF ، إذا كان ذلك مدعومًا. لو نوع is
لم يتم إعطاء النوع الافتراضي يعتمد على قدرات المجمّع والرابط
مستخدم. نوع قد تكون واحدة من لا شيء (لا تضغط أقسام التصحيح) ، زليب (استخدم zlib
ضغط بتنسيق ELF gABI) ، أو زليب-جنو (استخدم ضغط zlib في GNU التقليدي
صيغة). إذا كان الرابط لا يدعم كتابة أقسام تصحيح الأخطاء المضغوطة ، فإن الخيار
مرفوض. خلاف ذلك ، إذا كان المجمع لا يدعمهم ، -gz بصمت
تجاهله عند إنتاج ملفات الكائن.
-gvms
قم بإنشاء معلومات تصحيح الأخطاء بتنسيق تصحيح أخطاء Alpha / VMS (إذا كان ذلك مدعومًا). هذه
هو التنسيق الذي تستخدمه DEBUG في أنظمة Alpha / VMS.
-gمستوى
-ggdbمستوى
-جستابسمستوى
-كوفمستوى
-gxcoffمستوى
-gvmsمستوى
اطلب معلومات التصحيح واستخدمها أيضًا مستوى لتحديد مقدار المعلومات. ال
المستوى الافتراضي هو 2.
لا ينتج المستوى 0 أي معلومات تصحيح على الإطلاق. هكذا، -G0 ينفي -g.
ينتج المستوى 1 الحد الأدنى من المعلومات ، وهو ما يكفي لعمل مسارات خلفية في أجزاء من
البرنامج الذي لا تخطط لتصحيحه. هذا يتضمن أوصاف وظائف و
المتغيرات الخارجية وجداول رقم السطر ، ولكن لا توجد معلومات حول المتغيرات المحلية.
يتضمن المستوى 3 معلومات إضافية ، مثل كافة تعريفات الماكرو الموجودة في ملف
برنامج. تدعم بعض أدوات تصحيح الأخطاء توسيع الماكرو عند استخدام ملفات -G3.
-جدوارف -2 لا يقبل مستوى تصحيح أخطاء متسلسل ، لأن GCC يستخدم لدعم ملف
خيار -جدوارف هذا يعني إنشاء معلومات التصحيح في الإصدار 1 من DWARF
(وهو مختلف تمامًا عن الإصدار 2) ، وكان من الممكن أن يكون مربكًا للغاية.
يعد تنسيق التصحيح هذا قديمًا منذ فترة طويلة ، ولكن لا يمكن تغيير الخيار الآن. بدلا من ذلك استخدم
بالإضافة -gمستوى خيار لتغيير مستوى التصحيح لـ DWARF.
-gtoggle
قم بإيقاف تشغيل إنشاء معلومات التصحيح ، إذا ترك هذا الخيار يؤدي إلى إنشائه ، أو تشغيله
في المستوى 2 وإلا. موقف هذه الحجة في سطر الأوامر لا
شيء؛ يصبح ساري المفعول بعد معالجة جميع الخيارات الأخرى ، وهو يفعل ذلك فقط
مرة واحدة ، بغض النظر عن عدد مرات تقديمها. الغرض الأساسي من هذا هو استخدامه مع ملفات
-fcompare-debug.
-fsanitize = العنوان
تمكين AddressSanitizer ، وهو كاشف سريع لأخطاء الذاكرة. تعليمات الوصول إلى الذاكرة هي
مُصمم لاكتشاف الأخطاء الخارجة عن الحدود والاستخدام بعد الحر. ارى
<https://github.com/google/sanitizers/wiki/AddressSanitizer> لمزيد من التفاصيل. ال
يمكن أن يتأثر سلوك وقت التشغيل باستخدام ASAN_OPTIONS متغيرات البيئة. متي
مضبوطًا على "help = 1" ، تظهر الخيارات المتاحة عند بدء تشغيل الأداة
برنامج. ارى
<https://github.com/google/sanitizers/wiki/AddressSanitizerFlags#run-time-flags> ل
قائمة الخيارات المدعومة.
-fsanitize = عنوان النواة
تفعيل AddressSanitizer لـ Linux kernel. ارىhttps://github.com/google/kasan/wiki>
لمزيد من التفاصيل.
-فسانيتيز = خيط
تفعيل ThreadSanitizer ، كاشف سريع لسباق البيانات. تعليمات الوصول إلى الذاكرة هي
تم تصميمه لاكتشاف أخطاء سباق البيانات. ارى
<https://github.com/google/sanitizers/wiki#threadsanitizer> لمزيد من التفاصيل. الركض-
يمكن أن يتأثر سلوك الوقت باستخدام TSAN_OPTIONS متغيرات البيئة؛ ارى
<https://github.com/google/sanitizers/wiki/ThreadSanitizerFlags> للحصول على قائمة
الخيارات المدعومة.
-فسانيتيز = تسرب
تفعيل LeakSanitizer ، كاشف تسرب الذاكرة. هذا الخيار مهم فقط لربط
الملفات التنفيذية وإذا لم يكن أي منهما -fsanitize = العنوان ولا -فسانيتيز = خيط يستخدم. في هذا
حالة ارتباط الملف التنفيذي بمكتبة تتجاوز "malloc" وغيرها
وظائف المخصص. ارى
<https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer> للمزيد
تفاصيل. يمكن أن يتأثر سلوك وقت التشغيل باستخدام LSAN_OPTIONS بيئة
المتغير.
-fsanitize = غير محدد
قم بتمكين UndefinedBehaviorSanitizer ، وهو جهاز كشف سلوك غير محدد سريع. متنوع
تم تجهيز الحسابات لاكتشاف السلوك غير المحدد في وقت التشغيل. تيار
الخيارات الفرعية هي:
-fsanitize = التحول
يتيح هذا الخيار التحقق من أن نتيجة عملية النقل ليست كذلك
غير معرف. لاحظ أن ما يعتبر بالضبط غير محدد يختلف قليلاً
بين C و C ++ ، وكذلك بين ISO C90 و C99 ، إلخ.
-fsanitize = عدد صحيح قسمة على صفر
كشف قسمة عدد صحيح على الصفر وكذلك قسمة "INT_MIN / -1".
-fsanitize = غير قابل للوصول
باستخدام هذا الخيار ، يحول المترجم استدعاء "__builtin_unreachable" إلى ملف
استدعاء رسالة التشخيص بدلا من ذلك. عند الوصول إلى مكالمة "__builtin_unreachable" ،
السلوك غير محدد.
-fsanitize = ملزمة vla
يوجه هذا الخيار المترجم للتحقق من أن الحجم متغير الطول
مجموعة موجبة.
-fsanitize = لاغ
يتيح هذا الخيار فحص المؤشر. على وجه الخصوص ، تم إنشاء التطبيق باستخدام
سيؤدي تشغيل هذا الخيار إلى إصدار رسالة خطأ عندما يحاول إلغاء إشارة
مؤشر NULL ، أو إذا كان مرجع (من المحتمل أن يكون مرجع rvalue) مرتبطًا بـ NULL
المؤشر ، أو إذا تم استدعاء أسلوب على كائن مشار إليه بمؤشر NULL.
-fsanitize = عودة
يتيح هذا الخيار التحقق من بيان الإرجاع. برامج مبنية بهذا الخيار
قيد التشغيل سيصدر رسالة خطأ عندما تكون نهاية دالة غير باطلة
تم الوصول إليه دون إرجاع قيمة فعلية. يعمل هذا الخيار في C ++ فقط.
-fsanitize = تجاوز عدد صحيح مُوقَّع
يتيح هذا الخيار إمكانية فحص تجاوز عدد صحيح موقعة. نتحقق من أن نتيجة
لا تتجاوز "+" و "*" وكلاهما أحادي وثنائي "-" في التوقيع
علم الحساب. ملاحظة ، يجب أن تؤخذ قواعد تعزيز عدد صحيح في الاعتبار. هذا هو،
ما يلي ليس تجاوزًا:
توقيع char a = SCHAR_MAX ؛
++
-الحالة = الحدود
يتيح هذا الخيار أدوات حدود المصفوفة. مختلف خارج الحدود
تم الكشف عن الوصول. أعضاء المصفوفات المرنة ، المصفوفات المرنة التي تشبه أعضاء المصفوفات ،
ومُبدِّلات المتغيرات ذات التخزين الثابت غير معدة.
-fsanitize = محاذاة
يتيح هذا الخيار التحقق من محاذاة المؤشرات عند إلغاء الإشارة إليها ،
أو عندما يكون المرجع مرتبطًا بالهدف المحاذي بشكل غير كافٍ ، أو عندما يكون أسلوب أو
تم استدعاء المُنشئ على كائن تمت محاذاته بشكل غير كافٍ.
-fsanitize = حجم الكائن
يتيح هذا الخيار إمكانية استخدام أدوات مراجع الذاكرة باستخدام
وظيفة "__builtin_object_size". مختلف مداخل المؤشر خارج الحدود هي
الكشف.
-fsanitize = تعويم قسمة على صفر
اكتشف قسمة الفاصلة العائمة على الصفر. على عكس الخيارات الأخرى المماثلة ،
-fsanitize = تعويم قسمة على صفر لم يتم تمكينه بواسطة -fsanitize = غير محدد، منذ
يمكن أن تكون قسمة الفاصلة العائمة على الصفر طريقة مشروعة للحصول على ما لا نهاية
و NaNs.
-fsanitize = تعويم-صب-تجاوز
يتيح هذا الخيار فحص تحويل نوع الفاصلة العائمة إلى عدد صحيح. نحن نفحص
أن نتيجة التحويل لا تفيض. على عكس أخرى مماثلة
الخيارات، -fsanitize = تعويم-صب-تجاوز لم يتم تمكينه بواسطة -fsanitize = غير محدد.
لا يعمل هذا الخيار بشكل جيد مع تمكين استثناءات "FE_INVALID".
-fsanitize = خاصية nonnull
يتيح هذا الخيار إمكانية إجراء المكالمات ، والتحقق مما إذا كانت القيم الخالية ليست كذلك
تم تمريرها إلى وسيطات تم تمييزها على أنها تتطلب قيمة غير فارغة بواسطة الدالة "nonnull"
السمة.
-fsanitize = إرجاع-nonnull-سمة
يتيح هذا الخيار أدوات بيانات الإرجاع في الوظائف المميزة بعلامة
سمة دالة "return_nonnull" ، لاكتشاف إرجاع القيم الخالية من هذا
الوظائف.
-fsanitize = منطقي
يتيح هذا الخيار قياس الأحمال من منطقي. إذا كانت قيمة أخرى غير 0/1
تم تحميله ، وصدر خطأ وقت التشغيل.
-fsanitize = تعداد
يتيح هذا الخيار قياس الأحمال من نوع التعداد. إذا كانت قيمة
خارج نطاق القيم لنوع التعداد ، يتم تحميل خطأ وقت التشغيل
نشر.
-fsanitize = vptr
يتيح هذا الخيار إمكانية إجراء مكالمات وظائف أعضاء C ++ ، ووصول الأعضاء
وبعض التحويلات بين المؤشرات إلى الفئات الأساسية والمشتقة للتحقق من
الكائن المشار إليه له النوع الديناميكي الصحيح.
بينما -ftrapv يتسبب في إطلاق مصائد لفيضانات موقعة ، -fsanitize = غير محدد
يعطي رسالة تشخيصية. هذا يعمل حاليًا فقط لعائلة اللغات C.
-fno- تطهير = الكل
يقوم هذا الخيار بتعطيل كافة المطهرات التي تم تمكينها مسبقًا. -fsanitize = الكل ليس
مسموح به ، حيث لا يمكن استخدام بعض المطهرات معًا.
-حسن-الظل-الإزاحة =عدد
يفرض هذا الخيار على GCC استخدام إزاحة الظل المخصصة في عمليات التحقق من AddressSanitizer. إنها
مفيد في تجربة تخطيطات ذاكرة الظل المختلفة في Kernel
العنوان
-التسريح-التعافي[=الأراضي الفلسطينية المحتلة]
- التعافي - التعافي = يتحكم في وضع استرداد الأخطاء للمطهرات المذكورة في الفاصلة-
قائمة منفصلة من الأراضي الفلسطينية المحتلة. يؤدي تمكين هذا الخيار لمكون المطهر إلى حدوث ذلك
محاولة متابعة تشغيل البرنامج كما لو لم يحدث خطأ. هذا يعني متعددة
يمكن الإبلاغ عن أخطاء وقت التشغيل في تشغيل برنامج واحد ، وكود الخروج من
قد يشير البرنامج إلى النجاح حتى عند الإبلاغ عن الأخطاء. ال
-fno- التعقيم-الاسترداد = يمكن استخدام الخيار لتغيير هذا السلوك: فقط الأول
تم الإبلاغ عن الخطأ المكتشف ثم يخرج البرنامج برمز إنهاء غير صفري.
تعمل هذه الميزة حاليًا مع -fsanitize = غير محدد (وخياراته الفرعية باستثناء
For -fsanitize = غير قابل للوصول -fsanitize = عودة), -fsanitize = تعويم-صب-تجاوز,
-fsanitize = تعويم قسمة على صفر -fsanitize = عنوان النواة. لهذه المطهرات
يتم تشغيل استعادة الأخطاء بشكل افتراضي. - التعافي - التعافي = الكل
-fno- تطهير- استرداد = الكل من المقبول أيضًا ، فالأول يتيح التعافي للجميع
المطهرات التي تدعمها ، وهذا الأخير يعطل الشفاء لجميع المطهرات التي
ادعمه.
بناء الجملة بدون صريح الأراضي الفلسطينية المحتلة تم إهمال المعلمة. إنه يعادل
-fsanitize-recovery = غير محدد ، تدفق طفو-cast-overflow ، تعويم-قسمة على صفر
وبالمثل -fno- التعقيم-الاسترداد ما يعادل
-fno-sanitize-Recovery = غير محدد ، تعويم ، تدفق زائد ، تعويم قسمة على صفر
-تحقق-غير معرف-فخ-على-خطأ
تشير -تحقق-غير معرف-فخ-على-خطأ الخيار يوجه المترجم لتقديم تقرير
سلوك غير محدد باستخدام "__builtin_trap" بدلاً من روتين مكتبة "libubsan".
وميزة ذلك أن مكتبة "libubsan" غير ضرورية وغير مرتبطة
في ، لذلك هذا قابل للاستخدام حتى في البيئات القائمة بذاتها.
-تحقق-مؤشر-حدود
تفعيل أدوات مدقق حدود المؤشر. يتم تجهيز كل مرجع ذاكرة
مع فحوصات المؤشر المستخدمة للوصول إلى الذاكرة مقابل الحدود المرتبطة بذلك
المؤشر.
لا يوجد حاليًا سوى تطبيق متاح لـ Intel MPX ، وبالتالي هدف x86 و
-مبكسل مطلوبة لتمكين هذه الميزة. تتطلب الأجهزة المستندة إلى MPX أ
مكتبة وقت التشغيل لتمكين MPX في الأجهزة والتعامل مع إشارات انتهاك الحدود. بواسطة
الافتراضي عندما -تحقق-مؤشر-حدود -مبكسل الخيارات المستخدمة لربط برنامج ، و
روابط سائق مجلس التعاون الخليجي مقابل libmpx مكتبة وقت التشغيل و libmpxwrappers مكتبة. هو - هي
يقوم أيضًا بتمرير "-z bndplt" إلى رابط في حالة دعمه لهذا الخيار (الذي يتم تحديده
على تكوين libmpx). لاحظ أن الإصدارات القديمة من رابط قد تتجاهل الخيار. ذهب
رابط لا يدعم خيار "-z bndplt". مع عدم وجود دعم "-z bndplt" في رابط الكل
تفقد المكالمات إلى المكتبات الديناميكية الحدود التي تم تجاوزها مما يقلل مستوى الحماية الإجمالي. إنه
يوصى بشدة باستخدام رابط مع دعم "-z bndplt". في حال لم يكن هذا الرابط
متوفر ينصح باستخدامه دائمًا -static-libmpxwrappers لحماية أفضل
المستوى أو الاستخدام -ثابتة لتجنب المكالمات الخارجية للمكتبات الديناميكية تمامًا. MPX-
يمكن استخدام الأجهزة المستندة إلى التصحيح ويمكن أيضًا تضمينها في الإنتاج
كود لزيادة أمان البرنامج. اعتمادًا على الاستخدام ، قد يكون لديك اختلاف
متطلبات مكتبة وقت التشغيل. الإصدار الحالي من مكتبة وقت تشغيل MPX
هو أكثر توجهاً لاستخدامه كأداة لتصحيح الأخطاء. يشير استخدام مكتبة وقت تشغيل MPX
-lpthread. انظر أيضا -الثابت- libmpx. يمكن أن يتأثر سلوك مكتبة وقت التشغيل
باستخدام مختلف CHKP_RT_ * متغيرات البيئة. ارى
<https://gcc.gnu.org/wiki/Intel%20MPX%20support%20in%20the%20GCC%20compiler> للمزيد
تفاصيل.
يمكن التحكم في الأجهزة المولدة بواسطة مختلف -fchkp- * الخيارات و
سمة حقل البنية "bnd_variable_size" و "bnd_legacy" و "bnd_instrument"
سمات الوظيفة. يوفر GCC أيضًا عددًا من الوظائف المضمنة للتحكم
مدقق حدود المؤشر.
-fchkp-check -غير-type
إنشاء فحوصات حدود المؤشر للمتغيرات ذات النوع غير الكامل. تم التمكين بواسطة
افتراضي.
-fchkp- الضيق الحدود
حدود عناصر التحكم المستخدمة بواسطة Pointer Bounds Checker لمؤشرات حقول الكائن. لو
تم تمكين التضييق ثم يتم استخدام حدود المجال. وإلا يتم استخدام حدود الكائن.
انظر أيضا -fchkp- الضيق إلى الأعمق- المصفوفة -fchkp- الحقل الأول- له حدود خاصة.
يتم التمكين افتراضيًا.
-fchkp- الحقل الأول- له حدود خاصة
يفرض على "مدقق حدود المؤشر" استخدام حدود ضيقة لعنوان الأول
مجال في الهيكل. بشكل افتراضي ، يكون لمؤشر الحقل الأول نفس الحدود
كمؤشر على الهيكل بأكمله.
-fchkp- الضيق إلى الأعمق- المصفوفة
يفرض مدقق حدود المؤشر على استخدام حدود المصفوفات الداخلية في حالة التداخل
الوصول إلى مجموعة ثابتة. يتم تعطيل هذا الخيار افتراضيًا وتكون الحدود الخارجية
يتم استخدام مجموعة.
-fchkp- الأمثل
لتمكين تحسينات مدقق حدود المؤشر. ممكّن افتراضيًا عند التحسين
ومستوياتها -O, -O2, -O3.
-fchkp-use-fast-string-المهام
لتمكين استخدام إصدارات * _nobnd لوظائف السلسلة (وليس حدود النسخ) بواسطة Pointer
مدقق الحدود. معطل بشكل افتراضي.
-fchkp-use-nochk-string-function
يتيح استخدام إصدارات * _nochk لوظائف السلسلة (وليس التحقق من الحدود) بواسطة Pointer
مدقق الحدود. معطل بشكل افتراضي.
-fchkp- استخدام-ثابت-حدود
السماح لمدقق حدود المؤشر بإنشاء حدود ثابتة تحتوي على حدود ثابتة
المتغيرات. ممكن بشكل افتراضي.
-fchkp-استخدام-ثابت-حدود
استخدم الحدود ذات التهيئة الثابتة للحدود الثابتة بدلاً من إنشاء كل منها
الوقت المطلوب. بشكل افتراضي عند تمكين -fchkp- استخدام-ثابت-حدود .
-fchkp-علاج-صفري-ديناميكي-حجم-لانهائي
باستخدام هذا الخيار ، الكائنات ذات النوع غير الكامل والتي يكون حجمها الذي تم الحصول عليه ديناميكيًا صفرًا
يتم التعامل معها على أنها ذات حجم لانهائي بدلاً من ذلك بواسطة Pointer Bounds Checker. هذا الخيار
قد يكون مفيدًا إذا كان البرنامج مرتبطًا بمكتبة تفتقد إلى معلومات الحجم بالنسبة للبعض
حرف او رمز. معطل بشكل افتراضي.
-fchkp- تحقق- قراءة
يوجه Pointer Bounds Checker لإنشاء عمليات تحقق لجميع عمليات الوصول إلى الذاكرة.
يتم التمكين افتراضيًا.
-fchkp- الاختيار-الكتابة
يوجه Pointer Bounds Checker لإنشاء عمليات تحقق لجميع عمليات الوصول للكتابة إلى الذاكرة.
يتم التمكين افتراضيًا.
-fchkp-store-bounds
يوجه Pointer Bounds Checker لإنشاء مخازن حدود لكتابات المؤشر.
يتم التمكين افتراضيًا.
-fchkp- صك- مكالمات
يوجه "مدقق حدود المؤشر" لتمرير حدود المؤشر إلى المكالمات. ممكن بشكل افتراضي.
-fchkp- صك- ملحوظ فقط
يوجه Pointer Bounds Checker إلى وظائف الأداة المميزة فقط بامتداد
سمة "bnd_instrument". معطل بشكل افتراضي.
أغلفة -fchkp-use-use
يسمح لـ Pointer Bounds Checker باستبدال المكالمات إلى الوظائف المضمنة بالمكالمات إلى
وظائف المجمع. متي أغلفة -fchkp-use-use يستخدم لربط برنامج السائق دول مجلس التعاون الخليجي
الروابط تلقائيا ضد libmpxwrappers. انظر أيضا -static-libmpxwrappers. ممكن
بشكل افتراضي.
-fdump-final-insns[=ملف]
تفريغ التمثيل الداخلي النهائي (RTL) إلى ملف. إذا كانت الوسيطة الاختيارية هي
محذوف (أو إذا ملف هو ".") ، يتم تحديد اسم ملف التفريغ عن طريق الحاق
".gkd" إلى اسم ملف إخراج الترجمة.
-fcompare-debug[=الأراضي الفلسطينية المحتلة]
إذا لم يحدث خطأ أثناء التحويل البرمجي ، قم بتشغيل المترجم مرة ثانية ، مع إضافة الأراضي الفلسطينية المحتلة
-fcompare-debug- Second إلى الحجج التي تم تمريرها إلى التجميع الثاني. تفريغ
التمثيل الداخلي النهائي في كلا التجميعين ، وطباعة خطأ إذا كانا مختلفين.
إذا تم حذف علامة المساواة ، فإن الافتراضي -gtoggle .
متغير البيئة مجلس التعاون الخليجي_COMPARE_DEBUG، إذا تم تعريفه ، فهو غير فارغ وغير صفري ،
تمكن ضمنيًا -fcompare-debug. إذا مجلس التعاون الخليجي_COMPARE_DEBUG يتم تعريفه إلى سلسلة
تبدأ بشرطة ، ثم يتم استخدامها ل الأراضي الفلسطينية المحتلة، وإلا الافتراضي -gtoggle is
مستخدم.
-fcompare-debug =، بعلامة المساواة ولكن بدون الأراضي الفلسطينية المحتلةتعادل
-fno- مقارنة- التصحيحمما يعطل الاغراق النهائي للتمثيل و
التجميع الثاني ، منع حتى مجلس التعاون الخليجي_COMPARE_DEBUG من حيز التنفيذ.
للتحقق من التغطية الكاملة أثناء -fcompare-debug الاختبار ، مجموعة مجلس التعاون الخليجي_COMPARE_DEBUG ليقول
-fcompare-debug-not- تجاوز، والتي ترفضها دول مجلس التعاون الخليجي كخيار غير صالح في أي فعل
التجميع (بدلاً من المعالجة المسبقة أو التجميع أو الربط). للحصول على مجرد تحذير ،
ضبط مجلس التعاون الخليجي_COMPARE_DEBUG إلى -w٪ n-fcompare-debug ليس تم تجاوزه سوف تفعل.
-fcompare-debug- Second
يتم تمرير هذا الخيار ضمنيًا إلى المترجم للترجمة الثانية المطلوبة
by -fcompare-debug، إلى جانب خيارات إسكات التحذيرات وحذف الخيارات الأخرى
من شأنه أن يتسبب في إخراج برنامج التحويل البرمجي للأعراض الجانبية إلى الملفات أو إلى الإخراج القياسي.
يتم إعادة تسمية ملفات التفريغ والملفات المؤقتة المحفوظة بحيث تحتوي على ".gk"
تمديد إضافي أثناء التجميع الثاني ، لتجنب الكتابة فوق تلك
تم إنشاؤها بواسطة أول.
عندما يتم تمرير هذا الخيار إلى برنامج تشغيل المترجم ، فإنه يتسبب في أول تجميع ل
يمكن تخطيها ، مما يجعلها مفيدة للقليل بخلاف تصحيح أخطاء المترجم الصحيح.
-تقزم-قزم 2-دوبس
ضغط معلومات تصحيح أخطاء DWARF 2 عن طريق إزالة المعلومات المكررة حول
كل رمز. يكون هذا الخيار منطقيًا فقط عند إنشاء تصحيح أخطاء DWARF 2
المعلومات مع -جدوارف -2.
-نسبه-هيكل-تصحيح-أساس فقط
إرسال معلومات تصحيح الأخطاء للأنواع الشبيهة بالبنية فقط عندما يكون الاسم الأساسي لملف
يتطابق ملف مصدر الترجمة مع الاسم الأساسي للملف الذي يتم فيه تعريف البنية.
هذا الخيار يقلل بشكل كبير من حجم معلومات التصحيح ، ولكن في
خسارة محتملة كبيرة في نوع المعلومات لمصحح الأخطاء. ارى
-نسبه-بناء-التصحيح-المخفّضة لخيار أقل عدوانية. ارى
-نسبه- هيكل- تصحيح- مفصل لمزيد من التحكم المفصل.
يعمل هذا الخيار فقط مع DWARF 2.
-نسبه-بناء-التصحيح-المخفّضة
إرسال معلومات تصحيح الأخطاء للأنواع الشبيهة بالبنية فقط عندما يكون الاسم الأساسي لملف
يتطابق ملف مصدر الترجمة مع الاسم الأساسي للملف الذي يتم فيه تعريف النوع ،
ما لم يكن الهيكل عبارة عن قالب أو معرف في رأس النظام.
هذا الخيار يقلل بشكل كبير من حجم معلومات التصحيح ، مع بعض
الخسارة المحتملة في نوع المعلومات إلى مصحح الأخطاء. ارى -نسبه-هيكل-تصحيح-أساس فقط
لخيار أكثر عدوانية. ارى -نسبه- هيكل- تصحيح- مفصل لمزيد من التفاصيل
السيطرة عليها.
يعمل هذا الخيار فقط مع DWARF 2.
-نسبه- هيكل- تصحيح- مفصل[=قائمة المواصفات]
حدد الأنواع الشبيهة بالبنية التي يقوم المترجم بإنشاء معلومات تصحيح الأخطاء لها. ال
الهدف هو تقليل معلومات تصحيح الأخطاء الهيكلية المكررة بين ملفات الكائنات المختلفة
ضمن نفس البرنامج.
هذا الخيار هو نسخة مفصلة من -نسبه-بناء-التصحيح-المخفّضة
-نسبه-هيكل-تصحيح-أساس فقط، والتي تخدم معظم الاحتياجات.
المواصفات لها الصيغة [دير:|إنديانا:][أمر:|النوع:](أي وقت|SYS|قاعدة|لا شيء)
تحدد الكلمة الأولى الاختيارية المواصفات للبنى التي يتم استخدامها مباشرة
(دير:) أو تستخدم بشكل غير مباشر (إنديانا:). يتم استخدام نوع الهيكل مباشرة عندما يكون هو النوع
متغير عضو. تنشأ الاستخدامات غير المباشرة من خلال مؤشرات البنى. هذا هو،
عندما يكون استخدام بنية غير مكتملة صالحًا ، يكون الاستخدام غير مباشر. مثال البنية
صورة واحدة؟ مباشرة؛ البنية اثنان * غير مباشر؛.
تحدد الكلمة الثانية الاختيارية المواصفات للبنى العادية (أمر:) أو
الهياكل العامة (النوع:). الهياكل العامة معقدة بعض الشيء في الشرح. بالنسبة لـ C ++ ،
هذه تخصصات غير صريحة لفئات القوالب أو الفئات غير القوالب
ضمن ما سبق. لغات البرمجة الأخرى لها أدوية جنيسة ، ولكن
-نسبه- هيكل- تصحيح- مفصل لم تنفذها بعد.
تحدد الكلمة الثالثة ملفات المصدر لتلك الهياكل التي يستخدمها المترجم
يجب أن ترسل معلومات التصحيح. القيم لا شيء أي وقت لها المعنى الطبيعي. ال
قيمنا قاعدة يعني أن أساس اسم الملف فيه نوع التصريح
يجب أن يتطابق ظهوره مع قاعدة اسم ملف الترجمة الرئيسي. في التمرين،
هذا يعني أنه عند التجميع foo.c، يتم إنشاء معلومات التصحيح للأنواع
أعلن في هذا الملف و foo.h، ولكن ليس ملفات الرأس الأخرى. القيمة SYS يعني
تلك الأنواع مرضية قاعدة أو أعلن في رؤوس النظام أو المترجم.
قد تحتاج إلى التجربة لتحديد أفضل الإعدادات لتطبيقك.
الافتراضي هو -نموذج-تصحيح-مفصل = الكل.
يعمل هذا الخيار فقط مع DWARF 2.
سلاسل -fno-merge-debug-strings
قم بتوجيه الرابط إلى عدم دمج السلاسل معًا في معلومات التصحيح الموجودة
متطابقة في ملفات كائن مختلفة. الدمج غير مدعوم من قبل كافة المجمعات أو
الروابط. يؤدي الدمج إلى تقليل حجم معلومات التصحيح في ملف الإخراج عند
تكلفة زيادة وقت معالجة الارتباط. يتم تمكين الدمج افتراضيًا.
-fdebug- بادئة خريطة =قديم=جديد
عند تجميع الملفات في الدليل قديم، سجل معلومات تصحيح الأخطاء واصفاً إياها بـ
in جديد بدلا من ذلك.
-fno-dwarf2-cfi-asm
أرسل معلومات استرخاء DWARF 2 كما تم إنشاء قسم ".eh_frame" للمترجم بدلاً من استخدام
توجيهات ".cfi_ *" GAS.
-p قم بإنشاء كود إضافي لكتابة معلومات الملف الشخصي المناسبة لبرنامج التحليل
بروفيسور. يجب استخدام هذا الخيار عند تجميع ملفات المصدر التي تريد بيانات عنها ،
ويجب عليك أيضًا استخدامه عند الربط.
-ص قم بإنشاء كود إضافي لكتابة معلومات الملف الشخصي المناسبة لبرنامج التحليل
GPROF. يجب استخدام هذا الخيار عند تجميع ملفات المصدر التي تريد بيانات عنها ،
ويجب عليك أيضًا استخدامه عند الربط.
-Q يجعل المترجم يطبع اسم كل وظيفة كما يتم تجميعه ويطبع البعض
إحصائيات حول كل تمريرة عند الانتهاء.
-تقرير الوقت
يجعل المترجم يطبع بعض الإحصائيات حول الوقت الذي تستغرقه كل عملية مرور عندها
التشطيبات.
تقرير fmem
يجعل المترجم يطبع بعض الإحصائيات حول التخصيص الدائم للذاكرة عند ذلك
التشطيبات.
-fmem- تقرير- wpa
يجعل المترجم يطبع بعض الإحصائيات حول تخصيص الذاكرة الدائم لـ WPA
المرحلة فقط.
-fpre-IPA-MEM-تقرير
-fpost-ipa-mem-report
يجعل المترجم يطبع بعض الإحصائيات حول التخصيص الدائم للذاكرة قبل أو
بعد التحسين بين الإجراءات.
-fprofile- تقرير
يجعل المترجم يطبع بعض الإحصائيات حول تناسق ملف التعريف (المقدر)
وتأثير التمريرات الفردية.
-fstack-الاستخدام
يجعل مخرجات المترجم معلومات استخدام مكدس للبرنامج ، على كل وظيفة
أساس. يتم إجراء اسم ملف التفريغ عن طريق الحاق .su إلى com.auxname. com.auxname is
تم إنشاؤه من اسم ملف الإخراج ، إذا تم تحديده بشكل صريح وليس ملف
قابل للتنفيذ ، وإلا فسيكون هو الاسم الأساسي للملف المصدر. الدخول يتكون من
ثلاثة مجالات:
* اسم الوظيفة.
* عدد البايتات.
* مؤهل واحد أو أكثر: "ثابت" ، "ديناميكي" ، "محدود".
المصنف "ثابت" يعني أن الوظيفة تعالج المكدس بشكل ثابت: أ
يتم تخصيص عدد ثابت من البايت للإطار عند إدخال الوظيفة وتحريرها في
وظيفة الخروج لا يتم إجراء أي تعديلات على المكدس في الوظيفة. الثاني
الحقل هو هذا العدد الثابت من البايت.
المؤهل "ديناميكي" يعني أن الوظيفة تعالج المكدس ديناميكيًا: in
بالإضافة إلى التخصيص الثابت الموضح أعلاه ، يتم إجراء تعديلات المكدس في
جسم الوظيفة ، على سبيل المثال لدفع / فرقعة الوسائط حول استدعاءات الوظيفة. إذا كان
المؤهل "مقيد" موجود أيضًا ، ومقدار هذه التعديلات مقيد
وقت الترجمة والحقل الثاني هو الحد الأعلى للمقدار الإجمالي للمكدس المستخدم
من خلال الوظيفة. إذا لم يكن موجودًا ، فلن يتم تقييد مقدار هذه التعديلات
في وقت الترجمة ويمثل الحقل الثاني الجزء المقيد فقط.
-fprofile- أقواس
أضف التعليمات البرمجية بحيث يتدفق البرنامج أقواس تم تجهيزها. أثناء تنفيذ البرنامج
يسجل عدد المرات التي يتم فيها تنفيذ كل فرع ومكالمة وكم مرة يتم إجراؤها
أو العودة. عندما يخرج البرنامج المترجم فإنه يحفظ هذه البيانات في ملف يسمى
auxname.gcda لكل ملف مصدر. يمكن استخدام البيانات للملف الشخصي الموجه
تحسينات (-احتمالات-فرع) ، أو لتحليل تغطية الاختبار
(-تغطية -ftest). كل ملف كائن com.auxname تم إنشاؤه من اسم
ملف الإخراج ، إذا تم تحديده صراحةً ولم يكن الملف القابل للتنفيذ النهائي ، وإلا فإنه
هو الاسم الأساسي للملف المصدر. في كلتا الحالتين يتم إزالة أي لاحقة (على سبيل المثال
foo.gcda لملف الإدخال دير / foo.cالطرق أو دير / foo.gcda لملف الإخراج المحدد على أنه -o
دير / foo.o).
--تغطية
يستخدم هذا الخيار لتجميع وربط التعليمات البرمجية المعدة لتحليل التغطية. ال
الخيار هو مرادف ل -fprofile- أقواس -تغطية -ftest (عند التجميع) و -لجكوف
(عند الربط). راجع وثائق هذه الخيارات لمزيد من التفاصيل.
* تجميع ملفات المصدر بامتداد -fprofile- أقواس بالإضافة إلى التحسين وإنشاء الكود
والخيارات. لتحليل تغطية الاختبار ، استخدم الإضافي -تغطية -ftest الخيار.
لا تحتاج إلى ملف تعريف كل ملف مصدر في البرنامج.
* ربط ملفات الكائن مع -لجكوف or -fprofile- أقواس (هذا الأخير يعني
سابق).
* قم بتشغيل البرنامج على حمل عمل تمثيلي لإنشاء ملف تعريف القوس
معلومة. قد يتكرر هذا أي عدد من المرات. يمكنك تشغيل متزامن
مثيلات البرنامج الخاص بك ، وبشرط أن يدعم نظام الملفات القفل ، فإن ملف
سيتم تحديث ملفات البيانات بشكل صحيح. كما تم الكشف عن مكالمات "شوكة" و
تم التعامل معها بشكل صحيح (لن يحدث العد المزدوج).
* من أجل التحسينات الموجهة للملف الشخصي ، قم بتجميع الملفات المصدر مرة أخرى بنفس الشيء
التحسين وخيارات إنشاء الكود بالإضافة إلى -احتمالات-فرع.
* لتحليل تغطية الاختبار ، استخدم GCOV لإنتاج معلومات يمكن قراءتها من قِبل الإنسان
ال .gcno .gcda الملفات. الرجوع إلى GCOV المزيد من الوثائق
معلومات.
بدافع -fprofile- أقواس، لكل وظيفة من وظائف برنامج GCC الخاص بك يخلق تدفق البرنامج
ثم يعثر على شجرة ممتدة للرسم البياني. فقط الأقواس التي ليست على
يجب تجهيز الشجرة الممتدة: يضيف المترجم كودًا لحساب عدد
مرات أن يتم تنفيذ هذه الأقواس. عندما يكون القوس هو المخرج الوحيد أو المدخل الوحيد لـ
كتلة ، يمكن إضافة رمز الأجهزة إلى الكتلة ؛ خلاف ذلك ، أساسي جديد
يجب إنشاء كتلة للاحتفاظ برمز الجهاز.
-تغطية -ftest
قم بإنشاء ملف ملاحظات يكون ملف GCOV يمكن استخدام الأداة المساعدة للتغطية البرمجية لإظهار البرنامج
تغطية. يتم استدعاء ملف ملاحظة كل ملف مصدر auxname.gcno. الرجوع إلى
-fprofile- أقواس الخيار أعلاه للحصول على وصف com.auxname وإرشادات حول كيفية القيام بذلك
توليد بيانات تغطية الاختبار. تتطابق بيانات التغطية مع الملفات المصدر بشكل وثيق إذا
لم تقم بالتحسين.
-fdbg-cnt- قائمة
اطبع الاسم والحد الأعلى للعداد لكافة عدادات التصحيح.
-fdbg-cnt =قائمة القيمة المضادة
تعيين الحد الأعلى لعداد التصحيح الداخلي. قائمة القيمة المضادة مفصولة بفاصلة
قائمة الاسم:قيمنا الأزواج التي تحدد الحد الأعلى لكل عداد تصحيح الاسم إلى
قيمنا. جميع عدادات التصحيح لها الحد الأعلى الأولي لـ "UINT_MAX" ؛ وبالتالي "dbg_cnt"
يعود صحيحًا دائمًا ما لم يتم تعيين الحد الأعلى بواسطة هذا الخيار. على سبيل المثال ، مع
-fdbg-cnt = dce: 10 ، tail_call: 0، "dbg_cnt (dce)" ترجع صحيحًا لأول 10 فقط
الدعاء.
-يمكن-نوع-pass
-تعطيل-نوع-pass =قائمة النطاق
هذه مجموعة من الخيارات تُستخدم لتعطيل / تمكين التحسين بشكل صريح
يمر، يمرر، اجتاز بنجاح. هذه الخيارات مخصصة للاستخدام في تصحيح أخطاء GCC. يجب على مستخدمي المترجم
استخدم الخيارات العادية لتمكين / تعطيل التمريرات بدلاً من ذلك.
-fdisable- ipa-pass
تعطيل تمرير IPA pass . pass هو اسم المرور. إذا كان نفس التمريرة ثابتًا
تم استدعاؤه في المترجم عدة مرات ، يجب إلحاق اسم المرور بامتداد
رقم تسلسلي يبدأ من 1.
-fdisable- rtl-pass
-fdisable- rtl-pass =قائمة النطاق
تعطيل تمرير RTL pass . pass هو اسم المرور. إذا كان نفس التمريرة ثابتًا
تم استدعاؤه في المترجم عدة مرات ، يجب إلحاق اسم المرور بامتداد
رقم تسلسلي يبدأ من 1. قائمة النطاق هي قائمة مفصولة بفواصل من
نطاقات الوظائف أو أسماء المجمّع. كل نطاق عبارة عن زوج أرقام مفصولة بامتداد
القولون. النطاق شامل في كلا الطرفين. إذا كان النطاق تافهاً ، الرقم
يمكن تبسيط الزوج كرقم واحد. إذا كانت وظيفة الرسم البياني استدعاء العقدة
رقم تعريف الوحدة يقع ضمن أحد النطاقات المحددة ، pass تم تعطيل لذلك
وظيفة. ال رقم تعريف الوحدة يظهر في عنوان الوظيفة لملف التفريغ ، والممر
يمكن إغراق الأسماء باستخدام الخيار -fdump- يمر.
-fdisable- شجرة-pass
-fdisable- شجرة-pass =قائمة النطاق
تعطيل تمرير الشجرة pass . شاهد -fdisable-rtl لوصف الخيار
الحجج.
-يمكن- ipa-pass
تمكين تمرير IPA pass . pass هو اسم المرور. إذا كان نفس التمريرة ثابتًا
تم استدعاؤه في المترجم عدة مرات ، يجب إلحاق اسم المرور بامتداد
رقم تسلسلي يبدأ من 1.
-فينابل- rtl-pass
-فينابل- rtl-pass =قائمة النطاق
تفعيل تمرير RTL pass . شاهد -fdisable-rtl لوصف حجة الخيار و
أمثلة.
-شجرة قابلة للتمديد-pass
-شجرة قابلة للتمديد-pass =قائمة النطاق
تفعيل تمرير الشجرة pass . شاهد -fdisable-rtl لوصف وسيطات الخيار.
فيما يلي بعض الأمثلة التي توضح استخدامات هذه الخيارات.
# تعطيل ccp1 لجميع الوظائف
-fdisable- شجرة- ccp1
# Disable unroll unroll for الوظيفة التي يكون معرف عقدة cgraph الخاص بها هو 1
-يمكن-الشجرة- cunroll = 1
# تعطيل gcse2 للوظائف في النطاقات التالية [1,1،XNUMX] ،
# [300,400] و [400,1000]
# تعطيل gcse2 للوظائف foo و foo2
-fdisable-rtl-gcse2 = foo، foo2
# تعطيل التضمين المبكر
-fdisable- شجرة- einline
# تعطيل تضمين ipa
-fdisable- ipa- مضمنة
# تمكين الشجرة كاملة فتح
-fenable-شجرة-انفتل
-dحروف
-fdump- rtl-pass
-fdump- rtl-pass =اسم الملف
يقول لجعل عمليات تفريغ التصحيح أثناء التجميع في الأوقات التي يحددها حروف. هذا
يستخدم لتصحيح أخطاء الممرات المعتمدة على RTL للمترجم. أسماء الملفات لمعظم
من عمليات التفريغ عن طريق إلحاق رقم مرور وكلمة في تفريغ، و
يتم إنشاء الملفات في دليل ملف الإخراج. في حالة =اسم الملف اختيار،
يتم إخراج التفريغ في الملف المحدد بدلاً من ملفات التفريغ المرقمة. ملحوظة
أن رقم المرور يتم حسابه بشكل ثابت حيث يتم تسجيل التصاريح في البطاقة
إدارة. وبالتالي لا يرتبط الترقيم بالترتيب الديناميكي للتنفيذ
يمر، يمرر، اجتاز بنجاح. على وجه الخصوص ، يمكن أن يكون للممر المثبت بواسطة مكون إضافي رقم يزيد عن 200 زوج
إذا تم تنفيذها مبكرًا جدًا. تفريغ يتم إنشاؤه من اسم ملف الإخراج ،
إذا تم تحديده صراحةً ولم يكن قابلاً للتنفيذ ، وإلا فهو الاسم الأساسي لـ
الملف المصدر. قد يكون لهذه المفاتيح تأثيرات مختلفة عندما -E يستخدم في
المعالجة.
يمكن تمكين عمليات تفريغ التصحيح باستخدام ملف -fdump-rtl التبديل أو بعض -d خيار حروف. هنا
هي الأحرف التي يمكن استخدامها في pass حروفومعانيها:
-fdump-rtl- محاذاة
تم حساب التفريغ بعد محاذاة الفروع.
-fdump-rtl-asmcons
تفريغ بعد إصلاح عبارات rtl التي لا تفي بقيود الإدخال / الإخراج.
-fdump-rtl-auto_inc_dec
تفريغ بعد اكتشاف auto-inc-dec. يتم تشغيل هذا الممر فقط على معماريات ذلك
لديك تعليمات شركة auto أو auto dec.
-fdump-rtl- حواجز
تفريغ بعد تنظيف الحاجز تعليمات.
-fdump-rtl-bbpart
تفريغ بعد تقسيم الكتل الأساسية الساخنة والباردة.
-fdump-rtl-bbro
تفريغ بعد إعادة ترتيب الكتلة.
-fdump-rtl-btl1
-fdump-rtl-btl2
-fdump-rtl-btl1 -fdump-rtl-btl2 تمكين الإغراق بعد هدف فرعين
يمر تحسين الحمل.
-fdump-rtl- الالتفافية
تفريغ بعد تجاوز القفز والتحكم في تحسينات التدفق.
-fdump-rtl- الجمع
تفريغ بعد تمرير مجموعة تعليمات RTL.
-fdump-rtl-compgotos
تفريغ بعد نسخ ملفات gotos المحسوبة.
-fdump-rtl-ce1
-fdump-rtl-ce2
-fdump-rtl-ce3
-fdump-rtl-ce1, -fdump-rtl-ce2و -fdump-rtl-ce3 تمكن من الإغراق بعد الثلاثة
إذا نجح التحويل.
-fdump-rtl-cprop_hardreg
تفريغ بعد نشر نسخة السجل الورقي.
-fdump-rtl-csa
تفريغ بعد دمج تعديلات المكدس.
-fdump-rtl-cse1
-fdump-rtl-cse2
-fdump-rtl-cse1 -fdump-rtl-cse2 تمكين الإغراق بعد الاثنين المشترك
يمر القضاء على التعابير الفرعية.
-fdump-rtl-dce
تفريغ بعد مرور القضاء على رمز ميت مستقل.
-fdump-rtl-dbr
تفريغ بعد تأخر جدول الفرع.
-fdump-rtl-dce1
-fdump-rtl-dce2
-fdump-rtl-dce1 -fdump-rtl-dce2 تمكين الإغراق بعد المخزن الميت
يمر القضاء.
-fdump-rtl-إيه
تفريغ بعد الانتهاء من رمز التعامل مع EH.
-fdump-rtl-eh_ranges
تفريغ بعد تحويل مناطق نطاق معالجة EH.
-fdump-rtl- توسيع
تفريغ بعد جيل RTL.
-fdump-rtl-fwprop1
-fdump-rtl-fwprop2
-fdump-rtl-fwprop1 -fdump-rtl-fwprop2 تمكين الإغراق بعد الاثنين إلى الأمام
يمر التكاثر.
-fdump-rtl-gcse1
-fdump-rtl-gcse2
-fdump-rtl-gcse1 -fdump-rtl-gcse2 تمكين الإغراق بعد العالمية المشتركة
القضاء على subexpression.
-fdump-rtl-init-regs
تفريغ بعد تهيئة السجلات.
-fdump-rtl-initvals
تفريغ بعد حساب مجموعات القيمة الأولية.
-fdump-rtl-to_cfglayout
تفريغ بعد التحويل إلى وضع cfglayout.
-fdump-rtl- إيرا
تفريغ بعد تخصيص السجل المتكرر.
-fdump-rtl- القفز
تفريغ بعد التحسين القفزة الثانية.
-fdump-rtl-loop2
-fdump-rtl-loop2 تمكن الإغراق بعد مرور تحسين حلقة rtl.
-fdump- rtl- ماخ
تفريغ بعد إجراء تصريح إعادة التنظيم المعتمد على الجهاز ، إذا كان ذلك يمر
موجودا.
-fdump-rtl-mode_sw
تفريغ بعد إزالة مفاتيح الوضع الزائد.
-fdump-rtl-rnreg
تفريغ بعد إعادة ترقيم السجل.
-fdump-rtl-outof_cfglayout
تفريغ بعد التحويل من وضع cfglayout.
-fdump-rtl-peephole2
تفريغ بعد مرور ثقب الباب.
-fdump-rtl-postreload
تفريغ بعد تحسينات إعادة التحميل.
-fdump-rtl-pro_and_epilogue
تفريغ بعد إنشاء مقدمة وخاتمة الوظيفة.
-fdump-rtl-جدولة 1
-fdump-rtl-جدولة 2
-fdump-rtl-جدولة 1 -fdump-rtl-جدولة 2 تمكين الإغراق بعد الكتلة الأساسية
جدولة يمر.
-fdump-rtl-ree
تفريغ بعد تسجيل / إلغاء التمديد الصفري.
-fdump-rtl-seqabstr
تفريغ بعد اكتشاف التسلسل المشترك.
-fdump-rtl-تقصير
تفريغ بعد تقصير الفروع.
-fdump-rtl- الأخ
تفريغ بعد تحسينات استدعاء الأشقاء.
-fdump-rtl-split1
-fdump-rtl-split2
-fdump-rtl-split3
-fdump-rtl-split4
-fdump-rtl-split5
تتيح هذه الخيارات الإغراق بعد خمس جولات من تقسيم التعليمات.
-fdump-rtl-sms
تفريغ بعد جدولة modulo. يتم تشغيل هذا الممر فقط على بعض البنى.
-fdump-rtl- مكدس
تفريغ بعد التحويل من سجلات "ملف التسجيل الثابت" لدول مجلس التعاون الخليجي إلى x87's
سجلات تشبه المكدس. يتم تشغيل هذا المرور فقط على متغيرات x86.
-fdump-rtl-sub1
-fdump-rtl-sub2
-fdump-rtl-sub1 -fdump-rtl-sub2 تمكين الإغراق بعد المنطقتين الفرعيتين
تمريرات التوسع.
-fdump-rtl-عدم المشاركة
تفريغ بعد كل rtl تم إلغاء مشاركته.
-fdump-rtl-vartrack
تفريغ بعد تتبع متغير.
-fdump-rtl-vregs
تفريغ بعد تحويل السجلات الافتراضية إلى سجلات ثابتة.
-fdump-rtl-web
تفريغ بعد تقسيم النطاق المباشر.
-fdump-rtl-regclass
-fdump-rtl-subs_of_mode_init
-fdump-rtl-subs_of_mode_finish
-fdump-rtl-dfinit
-fdump-rtl-dfinish
يتم تعريف عمليات التفريغ هذه ولكنها تنتج دائمًا ملفات فارغة.
-da
-fdump-rtl- الكل
أنتج كل المكبات المذكورة أعلاه.
-دا علق على إخراج المجمع بمعلومات تصحيح الأخطاء المتنوعة.
-د تفريغ كافة تعريفات الماكرو ، في نهاية المعالجة المسبقة ، بالإضافة إلى العادي
الناتج.
-dH قم بإنشاء تفريغ أساسي عند حدوث خطأ.
-dp علق على إخراج المجمّع بتعليق يشير إلى النمط و
يستخدم البديل. يتم أيضًا طباعة طول كل تعليمات.
-dP تفريغ RTL في إخراج المجمّع كتعليق قبل كل إرشاد. أيضا
يشغل -dp حاشية. ملاحظة.
-dx ما عليك سوى إنشاء RTL لوظيفة بدلاً من تجميعها. عادة ما تستخدم مع
-fdump-rtl- توسيع.
-fdump-noaddr
عند إجراء عمليات تفريغ التصحيح ، قم بإيقاف إخراج العنوان. هذا يجعله أكثر جدوى
استخدم فرق في تصحيح أخطاء تفريغ استدعاءات المترجم باستخدام ثنائيات مترجم مختلفة
و / أو مواقع بدء نصية / bss / data / heap / stack / dso مختلفة.
-تقرير-علة
تجميع وتفريغ معلومات التصحيح في ملف مؤقت إذا كان ICE في مترجم C / C ++
حدث.
-fdump-غير مرقمة
عند إجراء عمليات تفريغ التصحيح ، قم بإلغاء أرقام التعليمات وإخراج العنوان. هذه
يجعل استخدام الاختلافات في تصحيح أخطاء استدعاءات المترجم باستخدام
خيارات مختلفة ، ولا سيما مع وبدون -g.
-fdump-وصلات غير مرقمة
عند القيام بتفريغ الأخطاء (انظر -d الخيار أعلاه) ، قم بإلغاء أرقام التعليمات الخاصة بـ
روابط للتعليمات السابقة والتالية في تسلسل.
- تفريغ - وحدة الترجمة (C ++ فقط)
-fdump-الترجمة-وحدة-الخيارات (C ++ فقط)
تفريغ تمثيل هيكل الشجرة لوحدة الترجمة بأكملها في ملف.
يتم إنشاء اسم الملف عن طريق الحاق .tu إلى اسم الملف المصدر ، والملف هو
تم إنشاؤه في نفس الدليل كملف الإخراج. إذا كان -الخيارات يستخدم النموذج ،
الخيارات يتحكم في تفاصيل التفريغ كما هو موضح في -فب-شجرة خيارات.
-fdump- فئة- التسلسل الهرمي (C ++ فقط)
-fdump- فئة- التسلسل الهرمي-الخيارات (C ++ فقط)
تفريغ تمثيل كل من التسلسل الهرمي لكل فئة وتخطيط جدول الوظيفة الظاهرية إلى ملف
ملف. يتم إنشاء اسم الملف عن طريق الحاق .صف دراسي إلى اسم الملف المصدر والملف
تم إنشاؤه في نفس الدليل كملف الإخراج. إذا كان -الخيارات يستخدم النموذج ،
الخيارات يتحكم في تفاصيل التفريغ كما هو موضح في -فب-شجرة خيارات.
-fdump- ipa-تحول
السيطرة على الإغراق في مراحل مختلفة من شجرة لغة التحليل بين الإجراءات إلى أ
ملف. يتم إنشاء اسم الملف من خلال إلحاق لاحقة خاصة بالمحول بالمصدر
file name ، ويتم إنشاء الملف في نفس الدليل مثل ملف الإخراج. ال
المكبات التالية ممكنة:
الكل تمكن جميع عمليات تفريغ التحليل بين الإجراءات.
cgraph
لتفريغ المعلومات حول تحسين الرسم البياني للمكالمات وإزالة الوظائف غير المستخدمة و
مضمنة القرارات.
مضمنة
تفريغ بعد وظيفة التضمين.
-fdump- يمر
تفريغ قائمة ممرات التحسين التي يتم تشغيلها وإيقاف تشغيلها بواسطة التيار
خيارات سطر الأوامر.
-fdump-Statistics-خيار
تمكين والتحكم في إغراق إحصائيات المرور في ملف منفصل. اسم الملف هو
تم إنشاؤها عن طريق إلحاق لاحقة تنتهي بـ .الإحصاء إلى اسم الملف المصدر ، و
يتم إنشاء الملف في نفس الدليل كملف الإخراج. إذا كان -خيار النموذج
مستخدم، -الحالات يتسبب في تلخيص العدادات على وحدة الترجمة بأكملها أثناء
-تفاصيل تفريغ كل حدث لأن التمريرات تولدها. الافتراضي مع عدم وجود خيار هو
لجمع عدادات لكل وظيفة تم تجميعها.
-شجرة التفريغ-تحول
-شجرة التفريغ-تحول-الخيارات
-شجرة التفريغ-تحول-الخيارات=اسم الملف
السيطرة على الإغراق في مراحل مختلفة من معالجة شجرة اللغة الوسيطة ل
ملف. يتم إنشاء اسم الملف من خلال إلحاق لاحقة خاصة بالمحول بامتداد
مصدر اسم الملف ، ويتم إنشاء الملف في نفس الدليل مثل ملف الإخراج. في
حالة =اسم الملف الخيار ، يتم إخراج التفريغ في الملف المحدد بدلاً من الملف التلقائي
اسمه ملفات التفريغ. إذا كان -الخيارات يستخدم النموذج ، الخيارات هي قائمة - منفصل
الخيارات التي تتحكم في تفاصيل التفريغ. ليست كل الخيارات قابلة للتطبيق على الجميع
مقالب. يتم تجاهل تلك التي ليس لها معنى. الخيارات التالية متاحة
العنوان
اطبع عنوان كل عقدة. عادة هذا ليس له معنى لأنه يتغير
وفقًا للبيئة وملف المصدر. استخدامه الأساسي هو ربط أ
ملف تفريغ مع بيئة التصحيح.
com.asmname
إذا تم تعيين "DECL_ASSEMBLER_NAME" لرفض معين ، فاستخدم ذلك في التفريغ
بدلاً من "DECL_NAME". استخدامه الأساسي هو سهولة استخدام العمل للخلف من
أسماء مشوهة في ملف التجميع.
نحيل
عند إغراق التمثيلات الوسيطة الأمامية ، تمنع إغراق أعضاء
نطاق أو جسم وظيفة لمجرد الوصول إلى هذا النطاق. فقط
تفريغ مثل هذه العناصر عندما يمكن الوصول إليها مباشرة من خلال مسار آخر.
عند التخلص من الأشجار المطبوعة بشكل جميل ، يمنع هذا الخيار إلقاء جثث
جمل التحكم.
عند تفريغ RTL ، اطبع RTL بشكل رفيع (مكثف) بدلاً من الافتراضي
تمثيل يشبه LISP.
الخام اطبع تمثيلًا خامًا للشجرة. بشكل افتراضي ، تتم طباعة الأشجار بشكل جميل في تنسيق
تمثيل سي شبيه.
تفاصيل
تمكين عمليات تفريغ أكثر تفصيلاً (لا يتم الالتزام بها بواسطة كل خيار تفريغ). وتشمل أيضا
المعلومات من ممرات التحسين.
الإحصائيات
قم بتمكين إغراق الإحصائيات المختلفة حول البطاقة (لا يتم تكريمها من قبل كل تفريغ
اختيار).
كتل
تفعيل إظهار حدود الكتلة الأساسية (معطل في عمليات التفريغ الأولية).
رسم بياني
لكل من ملفات التفريغ الأخرى المشار إليها (-fdump- rtl-pass ) ، تفريغ أ
تمثيل مخطط تدفق التحكم المناسب للعرض باستخدام GraphViz إلى
file.passid.pass.dot. تتم طباعة كل وظيفة في الملف بشكل جميل كرسم فرعي ،
حتى تتمكن GraphViz من عرضها جميعًا في قطعة أرض واحدة.
يعمل هذا الخيار حاليًا مع عمليات تفريغ RTL فقط ، ودائمًا ما يتم التخلص من RTL
شكل نحيف.
VOPS
تمكين إظهار المعاملات الافتراضية لكل عبارة.
لينينو
تمكين إظهار أرقام الأسطر للبيانات.
رقم تعريف الوحدة تفعيل إظهار المعرف الفريد ("DECL_UID") لكل متغير.
مطنب
تفعيل إظهار تفريغ الشجرة لكل عبارة.
eh تفعيل إظهار رقم منطقة EH الذي يحمل كل عبارة.
سكيف
تفعيل إظهار تفاصيل تحليل التطور القياسي.
الأمثل
تمكين إظهار معلومات التحسين (متاح فقط في ممرات معينة).
افتقد
تمكين عرض معلومات التحسين الفائتة (متاح فقط في ممرات معينة).
لاحظ
قم بتمكين معلومات التحسين التفصيلية الأخرى (متوفرة فقط في ممرات معينة).
=اسم الملف
بدلاً من ملف التفريغ المسمى تلقائيًا ، قم بإخراج اسم الملف المحدد. الملف
أسماء المعياري ستدير يتم التعامل معها بشكل خاص وتعتبر مفتوحة بالفعل
تدفقات قياسية. على سبيل المثال،
gcc -O2 -ftree-vectorize -fdump-tree-vect-block = foo.dump
-fdump-tree-pre = ملف stderr.c
نواتج vectorizer تفريغ في foo.dump، بينما يتم إخراج تفريغ PRE إلى ستدير.
إذا تم إعطاء اسمي ملف تفريغ متضاربين لنفس المرور ، فسيكون الأخير
يتجاوز الخيار الخيار السابق.
الكل قم بتشغيل جميع الخيارات ، باستثناء الخام, نحيل, مطنب لينينو.
com.optall
قم بتشغيل جميع خيارات التحسين ، على سبيل المثال ، الأمثل, افتقدو لاحظ.
مكبات الأشجار التالية ممكنة:
أصلي
تفريغ قبل أي تحسين على أساس الشجرة ، إلى ملف.
الأمثل
تفريغ بعد كل التحسين القائم على الشجرة ، إلى ملف. الأمثل.
قرحة
تفريغ كل وظيفة قبل وبعد تمرير gimplification إلى ملف. الملف
الاسم مصنوع بإلحاق .gimple إلى اسم الملف المصدر.
CFG تفريغ الرسم البياني لتدفق التحكم لكل دالة في ملف. اسم الملف من صنع
إلحاق .cfg إلى اسم الملف المصدر.
ch تفريغ كل وظيفة بعد نسخ رؤوس الحلقة. يتم إنشاء اسم الملف عن طريق الحاق
.ch إلى اسم الملف المصدر.
منطقة أفريقيا جنوب الصحراء تفريغ المعلومات ذات الصلة بـ SSA إلى ملف. يتم إنشاء اسم الملف عن طريق الحاق .ssa
إلى اسم الملف المصدر.
الاسم المستعار
تفريغ معلومات الاسم المستعار لكل دالة. يتم إنشاء اسم الملف عن طريق الحاق
الاسم المستعار إلى اسم الملف المصدر.
CCP تفريغ كل وظيفة بعد CCP. يتم إنشاء اسم الملف عن طريق الحاق .ccp إلى
اسم الملف المصدر.
ستوريككب
تفريغ كل وظيفة بعد STORE-CCP. يتم إنشاء اسم الملف عن طريق الحاق .storeccp
إلى اسم الملف المصدر.
قبل تفريغ الأشجار بعد القضاء على التكرار الجزئي. اسم الملف من صنع
إلحاق .قبل إلى اسم الملف المصدر.
الصحائف تفريغ الأشجار بعد القضاء التام على التكرار. يتم إنشاء اسم الملف عن طريق الحاق
.فري إلى اسم الملف المصدر.
نسخة
تفريغ الأشجار بعد نشر النسخ. يتم إنشاء اسم الملف عن طريق الحاق .copyprop
إلى اسم الملف المصدر.
store_copyprop
تفريغ الأشجار بعد تخزين النسخ. يتم إنشاء اسم الملف عن طريق الحاق
.store_copyprop إلى اسم الملف المصدر.
DCE تفريغ كل وظيفة بعد حذف الرمز الميت. اسم الملف من صنع
إلحاق .dce إلى اسم الملف المصدر.
حساب الاحتياطي الخاص تفريغ كل دالة بعد إجراء الاستبدال القياسي للتجمعات. الملف
الاسم مصنوع بإلحاق .sra إلى اسم الملف المصدر.
بالوعة
تفريغ كل وظيفة بعد تنفيذ غرق الكود. اسم الملف من صنع
إلحاق .حوض إلى اسم الملف المصدر.
دوم تفريغ كل وظيفة بعد تطبيق تحسينات شجرة المسيطر. اسم الملف هو
بواسطة الحاق .dom إلى اسم الملف المصدر.
قل تفريغ كل وظيفة بعد تطبيق إزالة المخزن الميت. اسم الملف مصنوع
عن طريق الحاق .dse إلى اسم الملف المصدر.
com.phiopt
تفريغ كل وظيفة بعد تحسين عقد PHI في كود مستقيم. الملف
الاسم مصنوع بإلحاق .phiopt إلى اسم الملف المصدر.
com.forwprop
تفريغ كل دالة بعد نشر متغيرات الاستخدام الفردي للأمام. اسم الملف
يتم عن طريق الحاق .forwprop إلى اسم الملف المصدر.
نسخة
تفريغ كل وظيفة بعد تطبيق تحسين إعادة تسمية النسخة. اسم الملف هو
بواسطة الحاق .copyrename إلى اسم الملف المصدر.
nrv تفريغ كل وظيفة بعد تطبيق تحسين قيمة الإرجاع المسماة على عام
الأشجار. يتم إنشاء اسم الملف عن طريق الحاق .nrv إلى اسم الملف المصدر.
المتجه
تفريغ كل وظيفة بعد تطبيق توجيه الحلقات. اسم الملف مصنوع
عن طريق الحاق .vect إلى اسم الملف المصدر.
SLP تفريغ كل وظيفة بعد تطبيق التوجيه من الكتل الأساسية. اسم الملف هو
بواسطة الحاق .slp إلى اسم الملف المصدر.
vp تفريغ كل دالة بعد انتشار نطاق القيمة (VRP). اسم الملف من صنع
إلحاق .vrp إلى اسم الملف المصدر.
الكل قم بتمكين كل عمليات تفريغ الشجرة المتوفرة مع العلامات المتوفرة في هذا الخيار.
-fopt- معلومات
-fopt- معلومات-الخيارات
-fopt- معلومات-الخيارات=اسم الملف
عناصر التحكم في عمليات تفريغ التحسين من تمريرات التحسين المختلفة. إذا كان -الخيارات النموذج
مستخدم، الخيارات هي قائمة - الكلمات الرئيسية خيار منفصل لتحديد تفاصيل التفريغ و
تحسينات.
تشير الخيارات يمكن تقسيمها إلى مجموعتين: خيارات تصف الإسهاب في
Dump ، وخيارات تصف التحسينات التي يجب تضمينها. الخيارات من
يمكن خلط كلتا المجموعتين بحرية لأنهما غير متداخلين. ومع ذلك ، في حالة
أي تعارضات ، فإن الخيارات اللاحقة تتجاوز الخيارات السابقة في سطر الأوامر.
تتحكم الخيارات التالية في الإسهاب في التفريغ:
الأمثل
اطبع المعلومات عند تطبيق التحسين بنجاح. الأمر متروك لتمرير
لتحديد المعلومات ذات الصلة. على سبيل المثال ، يقوم ناقل الحركة بتمرير الطباعة
الموقع المصدر للحلقات التي تم توجيهها بنجاح.
افتقد
طباعة المعلومات حول التحسينات الفائتة. يمر الفرد الذي يتحكم فيه
المعلومات المراد تضمينها في الإخراج.
لاحظ
طباعة معلومات مطولة حول التحسينات ، مثل بعض التحويلات ،
رسائل أكثر تفصيلاً حول القرارات وما إلى ذلك.
الكل طباعة معلومات التحسين التفصيلية. هذا يشمل الأمثل, افتقدو
لاحظ.
يمكن استخدام واحد أو أكثر من الكلمات الأساسية للخيارات التالية لوصف مجموعة من
أمثل:
معهد الإدارة العامة تمكين عمليات التفريغ من جميع التحسينات بين الإجراءات.
حلقة
تفعيل عمليات التفريغ من جميع تحسينات الحلقة.
مضمنة
تمكين التفريغ من جميع التحسينات المضمنة.
مركزنا تمكين التفريغ من جميع تحسينات التحسين الاتجاهي.
com.optall
تفعيل عمليات التفريغ من جميع التحسينات. هذه مجموعة شاملة من مجموعات التحسين
المذكورة أعلاه.
If الخيارات تم حذفه ، يتم تعيينه افتراضيًا الأمثل- optall، مما يعني تفريغ جميع المعلومات
حول التحسينات الناجحة من جميع التمريرات.
إذا كان اسم الملف يتم توفير ، ثم مقالب من جميع التحسينات القابلة للتطبيق هي
متسلسلة في اسم الملف. خلاف ذلك يتم إخراج التفريغ على ستدير. رغم أن
متعدد -fopt- معلومات يتم قبول الخيارات ، يمكن أن يشتمل أحدها فقط على أ اسم الملف. إذا
يتم توفير أسماء ملفات أخرى ثم يتم تجاهلها جميعًا باستثناء الخيار الأول من هذا القبيل.
لاحظ أن الإخراج اسم الملف يتم الكتابة فوقه في حالة وجود وحدات ترجمة متعددة. لو
مطلوب ناتج مشترك من وحدات ترجمة متعددة ، ستدير يجب أن تستخدم
بدلا من ذلك.
في المثال التالي ، يتم إخراج معلومات التحسين إلى ستدير:
دول مجلس التعاون الخليجي -O3 -fopt-info
هذا المثال:
مجلس التعاون الخليجي -O3 -fopt-info-missed = missed.all
نواتج غاب عن تقرير التحسين من جميع التمريرات إلى غاب. الكل، و هذه:
دول مجلس التعاون الخليجي -O2 -ftree-vectorize -fopt-info-vec-missed
يطبع معلومات حول فرص التحسين الفائتة من ممرات التحويل
on ستدير. لاحظ أن -fopt- معلومات- VEC- غاب ما يعادل -fopt-معلومات-فاتت-vec.
كمثال آخر ،
gcc -O3 -fopt-info-inline-optimized-missed = inline.txt
ينتج معلومات حول التحسينات الفائتة بالإضافة إلى المواقع المحسّنة من الجميع
المضمنة يمر إلى inline.txt.
أخيرًا ، ضع في اعتبارك:
gcc -fopt-info-vec-missed = vec.miss -fopt-info-loop-optimized = loop.opt
هنا اسمي الإخراج اثنين vec.miss حلقة.opt هم في صراع منذ واحد فقط
ملف الإخراج مسموح به. في هذه الحالة ، يتم تفعيل الخيار الأول فقط ويتم تنفيذ
يتم تجاهل الخيارات اللاحقة. هكذا فقط vec.miss يتم إنتاجه الذي يحتوي على مقالب
من vectorizer حول الفرص الضائعة.
-بذور عشوائية =عدد
يوفر هذا الخيار أساسًا يستخدمه مجلس التعاون الخليجي بدلاً من الأرقام العشوائية في التوليد
أسماء رموز معينة يجب أن تكون مختلفة في كل ملف مترجم. بل هو أيضا
تُستخدم لوضع أختام فريدة في ملفات بيانات التغطية وملفات الكائنات التي تنتجها
معهم. يمكنك استعمال ال -بذور عشوائية خيار لإنتاج كائن متماثل استنساخه
الملفات.
تشير عدد يجب أن يكون مختلفًا لكل ملف تقوم بتجميعه.
-fsched- مطول =n
في الأهداف التي تستخدم جدولة التعليمات ، يتحكم هذا الخيار في مقدار
إخراج التصحيح يطبع المجدول. هذه المعلومات مكتوبة على خطأ معياري ،
ما لم -fdump-rtl-جدولة 1 or -fdump-rtl-جدولة 2 محدد ، وفي هذه الحالة يكون الإخراج
إلى ملف قائمة التفريغ المعتاد ، .sched1 or .sched2 على التوالى. ومع ذلك n
أكبر من تسعة ، تتم طباعة الإخراج دائمًا وفقًا للخطأ القياسي.
في حالة n أكبر من الصفر ، -fsched- مطوّل إخراج نفس المعلومات مثل
-fdump-rtl-جدولة 1 -fdump-rtl-جدولة 2. إلى n أكبر من واحد ، فإنه ينتج أيضًا أساسيًا
كتلة الاحتمالات ، معلومات مفصلة جاهزة قائمة ومعلومات الوحدة / insn. ل n
أكبر من اثنين ، وهي تتضمن RTL عند نقطة الإحباط ، وتدفق التحكم ومعلومات المناطق. و
For n أكثر من أربعة ، -fsched- مطوّل يتضمن أيضًا معلومات التبعية.
حفظ مؤقت
-حفظ- temps = cwd
تخزين الملفات الوسيطة المعتادة "المؤقتة" بشكل دائم ؛ ضعهم في التيار
الدليل وتسميتها بناءً على الملف المصدر. وهكذا ، تجميع foo.c مع -c
حفظ مؤقت تنتج الملفات foo.i foo.s، طالما foo.o. هذا يخلق ملف
المجهزة foo.i على الرغم من أن المترجم يستخدم الآن عادةً امتداد الملف
معالج مسبق متكامل.
عند استخدامه مع -x خيار سطر الأوامر حفظ مؤقت معقول
بما يكفي لتجنب الإفراط في كتابة ملف مصدر إدخال بنفس امتداد ملف
ملف وسيط. يمكن الحصول على الملف الوسيط المقابل عن طريق إعادة التسمية
الملف المصدر قبل استخدامه حفظ مؤقت.
إذا قمت باستدعاء GCC بالتوازي ، فسيتم تجميع عدة ملفات مصدر مختلفة تشترك في ملف
الاسم الأساسي الشائع في الدلائل الفرعية المختلفة أو نفس الملف المصدر المترجم من أجل
وجهات إخراج متعددة ، فمن المحتمل أن يقوم المجمعين المتوازيين المختلفين بذلك
تتداخل مع بعضها البعض ، والكتابة فوق الملفات المؤقتة. على سبيل المثال:
دول مجلس التعاون الخليجي -save-temps -o outdir1 / foo.o indir1 / foo.c &
دول مجلس التعاون الخليجي -save-temps -o outdir2 / foo.o indir2 / foo.c &
قد ينتج عنه foo.i foo.o يتم كتابتها في وقت واحد من قبل كلا المجمعين.
-حفظ- temps = obj
تخزين الملفات الوسيطة المعتادة "المؤقتة" بشكل دائم. إذا كان -o يستخدم الخيار ،
تستند الملفات المؤقتة إلى ملف الكائن. إذا كان -o لم يتم استخدام الخيار
-حفظ- temps = obj التبديل يتصرف مثل حفظ مؤقت.
فمثلا:
gcc -save-temps = obj -c foo.c
gcc -save-temps = obj -c bar.c -o dir / xbar.o
gcc -save-temps = obj foobar.c -o dir2 / yfoobar
يخلق foo.i, foo.s, دير / xbar.i, دير / xbar.s, dir2 / yfoobar.i, dir2 / yfoobar.sو
dir2 / yfoobar.o.
-زمن[=ملف]
قم بالإبلاغ عن وقت وحدة المعالجة المركزية الذي تستغرقه كل عملية فرعية في تسلسل التجميع. بالنسبة لـ C
ملفات المصدر ، هذا هو المترجم المناسب والمجمع (بالإضافة إلى الرابط إذا كان الارتباط
انتهى).
بدون مواصفات ملف الإخراج ، يبدو الإخراج كما يلي:
#cc1 0.12 0.01
# كـ 0.00 0.01
الرقم الأول في كل سطر هو "وقت المستخدم" ، أي الوقت المستغرق في تنفيذ
البرنامج نفسه. الرقم الثاني هو "وقت النظام" ، الوقت المستغرق في تنفيذ التشغيل
إجراءات النظام نيابة عن البرنامج. كلا الرقمين بالثواني.
مع مواصفات ملف الإخراج ، يتم إلحاق الإخراج بالملف المحدد ،
وهي تبدو كالتالي:
0.12 0.01 سم مكعب 1
0.00 0.01 مثل
يتم نقل "وقت المستخدم" و "وقت النظام" قبل اسم البرنامج و
يتم عرض الخيارات التي تم تمريرها إلى البرنامج ، بحيث يمكن للمرء أن يعرف لاحقًا ما هو الملف
يتم تجميعها ، ومع أي خيارات.
-fvar- تتبع
قم بتشغيل ممر التتبع المتغير. يحسب حيث يتم تخزين المتغيرات في كل موضع
في الكود. ثم يتم إنشاء معلومات تصحيح أخطاء أفضل (إذا كانت معلومات التصحيح
يدعم تنسيق هذه المعلومات).
يتم تمكينه افتراضيًا عند التحويل البرمجي باستخدام التحسين (-أوس, -O, -O2، ...)،
معلومات التصحيح (-g) ويدعمها تنسيق معلومات التصحيح.
-fvar- تتبع- التخصيصات
علق على التخصيصات لمتغيرات المستخدم في وقت مبكر من التجميع وحاول القيام بذلك
التعليقات التوضيحية طوال التجميع حتى النهاية ، في محاولة
لتحسين معلومات التصحيح أثناء التحسين. استخدام -جدوارف -4 ينصح على طول
معها.
يمكن تمكينه حتى إذا تم تعطيل var-tracking ، وفي هذه الحالة يتم تعطيل التعليقات التوضيحية
تم إنشاؤها وصيانتها ، ولكن يتم التخلص منها في النهاية. بشكل افتراضي ، يتم تمكين هذه العلامة
مع -fvar- تتبع، إلا عندما يتم تمكين الجدولة الانتقائية.
-fvar- تتبع- تعيينات- تبديل
تبديل -fvar- تتبع- التخصيصاتبنفس الطريقة -gtoggle المسامير -g.
-طباعة-اسم الملف =مكتبة
اطبع الاسم المطلق الكامل لملف المكتبة مكتبة من شأنها أن تستخدم عندما
ربط --- ولا تفعل أي شيء آخر. باستخدام هذا الخيار ، لا يقوم GCC بالتجميع أو الارتباط
اى شئ؛ يقوم فقط بطباعة اسم الملف.
-طباعة- دليل متعدد
اطبع اسم الدليل المطابق لـ multilib المحدد بواسطة أي مفاتيح أخرى
موجودة في سطر الأوامر. من المفترض أن يوجد هذا الدليل في مجلس التعاون الخليجي_EXEC_PREFIX.
-طباعة-متعدد-ليب
اطبع التعيين من أسماء الدلائل متعددة الملفات إلى رموز تبديل المترجم التي تمكنهم.
يتم فصل اسم الدليل عن المفاتيح بواسطة ;، ويبدأ كل مفتاح بـ
@ بدلا من ال -، دون مسافات بين مفاتيح متعددة. هذا من المفترض أن
سهولة معالجة القشرة.
-طباعة-متعدد-دليل-نظام التشغيل
اطبع المسار إلى مكتبات نظام التشغيل للمكتبة المتعددة المختارة ، نسبة إلى البعض ليب
دليل فرعي. إذا كانت مكتبات نظام التشغيل موجودة في ملف ليب دليل فرعي وليس multilibs
يتم استخدامها ، وعادة ما يكون هذا فقط .، إذا كانت مكتبات نظام التشغيل موجودة في libsuffix نسيب
الدلائل هذه تطبع على سبيل المثال ../ lib64, ../ ليب or ../ lib32، أو إذا كانت مكتبات نظام التشغيل
حاضر في ليب / سوبدير الدلائل الفرعية التي تطبعها على سبيل المثال amd64, sparcv9 or ev6.
-طباعة-متعدد
اطبع المسار إلى مكتبات نظام التشغيل للأرشيف المتعدد المحدد ، بالنسبة إلى البعض ليب
دليل فرعي.
-طباعة-اسم البرنامج =برنامج
اعجاب -طباعة-اسم الملف، لكنه يبحث عن برنامج مثل حزب الشعب الكمبودي.
-طباعة- libgcc- اسم الملف
مثل -طباعة-اسم الملف = libgcc.a.
هذا مفيد عند استخدام -نوستدليب or -Nodefaultlibs لكنك تريد الارتباط مع
libgcc.a. يمكنك ان تفعل:
دول مجلس التعاون الخليجي -نوستدليب ... `gcc -print-libgcc-file-name`
-طباعة-البحث-dirs
اطبع اسم دليل التثبيت الذي تم تكوينه وقائمة بالبرامج وملفات
دلائل المكتبة دول مجلس التعاون الخليجي عمليات البحث --- ولا تفعل أي شيء آخر.
هذا مفيد عندما دول مجلس التعاون الخليجي يطبع رسالة الخطأ التركيب مشكلة، لا تستطيع EXEC
CPP0: لا هذه ملف or دليل. لحل هذا عليك إما أن تضع CPP0 و
مكونات المترجم الأخرى حيث دول مجلس التعاون الخليجي تتوقع العثور عليها ، أو يمكنك تعيين
متغيرات البيئة مجلس التعاون الخليجي_EXEC_PREFIX إلى الدليل حيث قمت بتثبيتها. لا تفعل
ننسى زائدة /.
-طباعة- sysroot
اطبع دليل sysroot الهدف الذي يتم استخدامه أثناء التجميع. هذا ال
الهدف sysroot المحدد إما في وقت التكوين أو باستخدام - الجذور اختيار،
ربما مع لاحقة إضافية تعتمد على خيارات الترجمة. إذا لم يكن هناك هدف
تم تحديد sysroot ، والخيار لا يطبع شيئًا.
-طباعة- sysroot- رؤوس- لاحقة
اطبع اللاحقة المضافة إلى sysroot الهدف عند البحث عن الرؤوس ، أو أعطِ ملف
خطأ إذا لم يتم تكوين المترجم باستخدام هذه اللاحقة --- ولا تفعل أي شيء
آخر.
آلة التفريغ
اطبع آلة المترجم المستهدفة (على سبيل المثال ، i686-الكمبيوتر- لينكس-جنو) --- ولا تفعل
أي شيء آخر.
- تفريغ
اطبع نسخة المترجم (على سبيل المثال ، 3.0) --- ولا تفعل أي شيء آخر.
-مكبات
اطبع المواصفات المضمنة في المترجم - ولا تفعل أي شيء آخر. (يستخدم هذا عندما
يتم بناء دول مجلس التعاون الخليجي نفسها.)
- أنواع - إزالة - غير المستخدمة - التصحيح
عادةً ، عند إنتاج مخرجات DWARF 2 ، يتجنب مجلس التعاون الخليجي إنتاج إخراج رمز التصحيح لـ
الأنواع التي لم يتم استخدامها في أي مكان في الملف المصدر الذي يتم تجميعه. في بعض الأحيان يكون مفيدا
لجعل دول مجلس التعاون الخليجي تصدر معلومات تصحيح الأخطاء لجميع الأنواع المعلنة في وحدة تجميع ،
بغض النظر عما إذا كانت تُستخدم بالفعل في وحدة التجميع هذه أم لا ، من أجل
على سبيل المثال ، إذا كنت تريد ، في مصحح الأخطاء ، تحويل قيمة إلى نوع ليس كذلك في الواقع
مستخدمة في برنامجك (ولكن تم الإعلان عنها). في كثير من الأحيان ، مع ذلك ، ينتج عن هذا ملف
كمية كبيرة من المساحة الضائعة.
مزيد من الخيارات أن مراقبة التحسين
تتحكم هذه الخيارات في أنواع مختلفة من التحسينات.
بدون أي خيار تحسين ، هدف المترجم هو تقليل تكلفة التجميع
ولجعل التصحيح ينتج عنه النتائج المتوقعة. تصريحات مستقلة: إذا كنت
قم بإيقاف البرنامج بنقطة توقف بين العبارات ، يمكنك بعد ذلك تعيين قيمة جديدة لـ
أي متغير أو تغيير برنامج العداد إلى أي عبارة أخرى في الدالة و get
بالضبط النتائج التي تتوقعها من شفرة المصدر.
يؤدي تشغيل علامات التحسين إلى جعل المحول البرمجي يحاول تحسين الأداء و / أو
حجم الكود على حساب وقت التجميع وربما القدرة على تصحيح أخطاء
برنامج.
يقوم المترجم بالتحسين بناءً على المعرفة التي يمتلكها بالبرنامج.
يسمح تجميع ملفات متعددة في وقت واحد إلى وضع ملف الإخراج الفردي للمترجم باستخدامها
تم الحصول على المعلومات من جميع الملفات عند تجميع كل منها.
لا يتم التحكم في جميع التحسينات بشكل مباشر بواسطة علامة. فقط التحسينات التي تحتوي على ملف
يتم سرد العلم في هذا القسم.
يتم تمكين معظم التحسينات فقط في حالة وجود ملف -O يتم تعيين المستوى في سطر الأوامر. خلاف ذلك
يتم تعطيلها ، حتى لو تم تحديد علامات التحسين الفردية.
اعتمادًا على الهدف وكيفية تكوين GCC ، هناك مجموعة مختلفة قليلاً من
قد يتم تمكين التحسينات في كل -O مستوى من تلك المذكورة هنا. يمكنك استدعاء GCC
مع -Q --help = محسِّنون لمعرفة المجموعة الدقيقة من التحسينات التي تم تمكينها في
كل مستوى.
-O
-O1 تحسين. يستغرق تحسين التجميع وقتًا أطول إلى حد ما ، وذاكرة أكبر بكثير من أجله
وظيفة كبيرة.
بدافع -Oيحاول المترجم تقليل حجم الكود ووقت التنفيذ دون أداء
أي تحسينات تستغرق وقتًا طويلاً في التجميع.
-O يقوم بتشغيل علامات التحسين التالية:
-فاوتو- المؤتمر الوطني العراقي -فرع-عد-ريج -مجمع-المكدس-التعديلات -مقارنة-القضاء
سجلات fcprop -fdce -fdefer-pop - فرع متأخر -fdse - تكاثر
-fguess- فرع- احتمال -fif- التحويل 2 -fif- التحويل
- وظائف الخط - تسمى مرة واحدة -فيبا-نقي-كونست -فيبا الشخصي -فيبا المرجع
الثوابت -ثوابت حلقة -fmove -لف شرينك - أنواع الانقسام العريض
-ftree-بت-ccp -فتري- ccp -فسا- phiopt -فتري- الفصل -ftree- نسخة- الدعامة -ftree- نسخة
-فتري- dce -فتري-المسيطر-الخيارات -فتري- dse -ftree- forwprop -ftree- فري -فتري-بيبروب
-فتري-بالوعة -فتري- slsr -فتري-سرا -فتري- pta -فتري-تير -الوحدة في وقت واحد
-O يتحول أيضا على - مؤشر الإطار على الأجهزة التي لا يتدخل فيها ذلك
مع التصحيح.
-O2 تحسين أكثر. ينفذ مجلس التعاون الخليجي تقريبًا جميع التحسينات المدعومة التي لا تفعل ذلك
تنطوي على مقايضة سرعة الفضاء. مقارنة ب -O، يزيد هذا الخيار كليهما
وقت التجميع وأداء الكود الذي تم إنشاؤه.
-O2 يقوم بتشغيل جميع علامات التحسين المحددة بواسطة -O. كما يتحول إلى ما يلي
أعلام التحسين: -الخيط القفزات وظائف المحاذاة -محاذي-يقفز حلقات محاذاة
-ملصقات المحاذاة -fcaller- يحفظ -القفز المتقاطع القفزات -fcse- متابعة كتل -fcse- تخطي
-fdelete-null-pointer-check-pointer (تحقق من -fdelete-null-pointer-pointer) - افترض - تخميني - تخميني
- تحسينات غير مكلفة -fgcse -fgcse-lm - الحمولات المجاورة
وظائف صغيرة الحجم - مضمنة غير مباشرة -فيبا- CP محاذاة -fipa-cp -فيبا-سرا
-فيبا- ICF عزل المسارات الخاطئة -فلرا-ريمات -تحسين- مكالمات الأخوة
-تحسين- strlen -تضمين جزئيًا -ف ثقب الباب2 كتل -freorder
كتل-فريدر-والتقسيم وظائف -freorder -frerun-cse-بعد الحلقة
-fsched-interblock -fsched- المواصفات -fschedule- insns -fschedule-insns2 -تعرج صارم
- تجاوز الحد -ftree- بنيت- نداء- DCE -تبديل الشجرة التحويل -ftree- ذيل- دمج
-ftree- قبل -ftree-vrp -فيبا را
يرجى ملاحظة التحذير الموجود أسفل -fgcse حول الاستدعاء -O2 على البرامج التي تستخدم المحوسبة
اذهب الى س.
ملاحظة: في Ubuntu 8.10 والإصدارات الأحدث ، -D_FORTIFY_SOURCE = 2 يتم تعيينه افتراضيًا ، وهو
عندما تنشط -O مضبوطة على 2 أو أعلى. يتيح ذلك وقت الترجمة الإضافي و
يتحقق وقت التشغيل من عدة وظائف libc. للتعطيل ، حدد إما
-U_FORTIFY_SOURCE or -D_FORTIFY_SOURCE = 0.
-O3 التحسين أكثر. -O3 يقوم بتشغيل جميع التحسينات المحددة بواسطة -O2 ويتحول أيضا
ال وظائف الخطوط الدقيقة, حلقات-funswitch, - المشتركة التنبؤية, -fgcse- بعد إعادة التحميل,
-ftree- حلقة- vectorize, -توزيع-حلقة-توزيع-أنماط, -ftree-slp-vectorize,
-تأثير- نموذج التكلفة, -ftree- جزئية- قبل -فيبا- cp- استنساخ خيارات.
-O0 قلل وقت الترجمة واجعل التصحيح ينتج عنه النتائج المتوقعة. هذا ال
افتراضي.
-أوس تحسين الحجم. -أوس تمكن الجميع -O2 التحسينات التي لا تزيد عادة
حجم الكود. كما يقوم بإجراء تحسينات إضافية مصممة لتقليل حجم الكود.
-أوس تعطيل علامات التحسين التالية: وظائف المحاذاة -محاذي-يقفز
حلقات محاذاة -ملصقات المحاذاة كتل -freorder كتل-فريدر-والتقسيم
-fprefetch- حلقة- صفائف
-سريع
تجاهل الامتثال الصارم للمعايير. -سريع تمكن الجميع -O3 تحسينات. كذلك
يمكّن التحسينات غير الصالحة لكافة البرامج المتوافقة مع المعايير. هو - هي
يشغل -فاست-الرياضيات وفورتران الخاصة -fno- حماية-أقواس -fstack- المصفوفات.
-عوج تحسين تجربة التصحيح. -عوج تمكن التحسينات التي لا تتداخل معها
التصحيح. يجب أن يكون مستوى التحسين المفضل للتحرير القياسي-
دورة ترجمة وتصحيح أخطاء تقدم مستوى معقولاً من التحسين مع المحافظة عليها
تجميع سريع وتجربة تصحيح أخطاء جيدة.
إذا كنت تستخدم ملفات -O خيارات ، مع أرقام المستوى أو بدونها ، فإن الخيار الأخير هو
الذي هو فعال.
خيارات النموذج -fعلم تحديد الأعلام المستقلة عن الآلة. تحتوي معظم الأعلام على كليهما
أشكال إيجابية وسلبية. الشكل السلبي لـ -ffoo is -فنو-فو. في الجدول أدناه ،
تم إدراج نموذج واحد فقط - النموذج الذي تستخدمه عادةً. يمكنك معرفة الآخر
شكل إما عن طريق الإزالة الجوى أو إضافته.
تتحكم الخيارات التالية في تحسينات محددة. إما أنها مفعلة بواسطة -O
خيارات أو تتعلق بتلك الموجودة. يمكنك استخدام العلامات التالية في حالات نادرة
الحالات التي يكون فيها المطلوب "صقل" التحسينات المطلوب إجراؤها.
-fno- تأجيل البوب
قم دائمًا بإخراج الوسيطات إلى كل استدعاء دالة بمجرد عودة هذه الوظيفة. ل
الآلات التي يجب أن تفرقع الوسائط بعد استدعاء دالة ، يسمح المترجم عادة
تتراكم الوسائط على المكدس لعدة استدعاءات للوظائف وتنبثق عنها جميعًا
ذات مرة.
معاق على المستويات -O, -O2, -O3, -أوس.
- تكاثر
قم بإجراء تمريرة انتشار أمامية على RTL. يحاول التمرير الجمع بين أمرين
ويتحقق مما إذا كان يمكن تبسيط النتيجة. إذا كان فتح الحلقة نشطًا ، يتم تمرير مرتين
يتم تنفيذ والثاني مجدول بعد فتح الحلقة.
يتم تمكين هذا الخيار افتراضيًا عند مستويات التحسين -O, -O2, -O3, -أوس.
-فب-عقد =نمط
-ffp- عقد = إيقاف تعطيل انكماش تعبير الفاصلة العائمة. -ffp-Contract = سريع
تمكن من تقلص تعبير النقطة العائمة مثل تشكيل الجمع المضاعف المدمج
العمليات إذا كان الهدف لديه دعم محلي لها. -ffp- عقد = تشغيل تمكن
تقلص تعبير الفاصلة العائمة إذا كان مسموحًا به بواسطة معيار اللغة. هذا هو
لم يتم تنفيذه حاليًا ومعاملته على قدم المساواة -ffp- عقد = إيقاف.
الافتراضي هو -ffp-Contract = سريع.
- مؤشر الإطار
لا تحتفظ بمؤشر الإطار في سجل للوظائف التي لا تحتاج إلى واحد. هذه
يتجنب التعليمات الخاصة بحفظ مؤشرات الإطار وإعدادها واستعادتها ؛ كما أنه يجعل
يتوفر سجل إضافي في العديد من الوظائف. It أيضا يجعل التصحيح مستحيل on
بعض آلات.
في بعض الأجهزة ، مثل VAX ، ليس لهذه العلامة أي تأثير ، لأن المعيار
يتعامل تسلسل الاستدعاء تلقائيًا مع مؤشر الإطار ولا يتم حفظ أي شيء بواسطة
التظاهر غير موجود. ماكرو وصف الجهاز "FRAME_POINTER_REQUIRED"
يتحكم في ما إذا كان الجهاز المستهدف يدعم هذه العلامة.
الإعداد الافتراضي (عند عدم التحسين للحجم) لـ 32 بت GNU / Linux x86 و 32 بت
أهداف داروين إلى x86 هي - مؤشر الإطار. يمكنك تكوين GCC مع
- مؤشر الإطار التمكين تكوين الخيار لتغيير الافتراضي.
ممكن على المستويات -O, -O2, -O3, -أوس.
-تحسين- مكالمات الأخوة
تحسين المكالمات المتكررة للأخوة والذيل.
ممكن على المستويات -O2, -O3, -أوس.
-تحسين- strlen
تحسين وظائف سلسلة C القياسية المختلفة (مثل "strlen" أو "strchr" أو "strcpy") و
نظرائهم "_FORTIFY_SOURCE" في بدائل أسرع.
ممكن على المستويات -O2, -O3.
-fno- مضمنة
لا تقم بتوسيع أي وظائف مضمنة بخلاف تلك المميزة بعلامة "always_inline"
ينسب. هذا هو الإعداد الافتراضي عند عدم التحسين.
يمكن استثناء الوظائف الفردية من التضمين عن طريق تمييزها بـ "noinline"
السمة.
وظائف صغيرة الحجم
دمج الوظائف في من يتصل بهم عندما يكون جسمهم أصغر من المتوقع
رمز استدعاء الوظيفة (لذا يصبح الحجم الإجمالي للبرنامج أصغر). المترجم
يقرر بشكل إرشادي أي الوظائف بسيطة بما يكفي لتكون جديرة بالاندماج فيها
من هنا. ينطبق هذا التضمين على جميع الوظائف ، حتى تلك التي لم يتم التصريح عنها مضمنة.
ممكن على المستوى -O2.
- مضمنة غير مباشرة
مضمنة أيضًا المكالمات غير المباشرة التي تم اكتشاف أنها معروفة في وقت الترجمة بفضل
المضمنة السابقة. هذا الخيار له أي تأثير فقط عند تشغيل التضمين نفسه
عن طريق وظائف الخطوط الدقيقة or وظائف صغيرة الحجم خيارات.
ممكن على المستوى -O2.
وظائف الخطوط الدقيقة
ضع في اعتبارك جميع الوظائف للتضمين ، حتى لو لم يتم الإعلان عنها مضمنة. ال
يقرر المترجم بشكل استرشادي الوظائف التي تستحق التكامل بهذه الطريقة.
إذا تم دمج جميع الاستدعاءات لوظيفة معينة ، وتم الإعلان عن الوظيفة
"ثابت" ، إذًا لا يتم إخراج الوظيفة عادةً كرمز مجمّع في حد ذاتها.
ممكن على المستوى -O3.
- وظائف الخط - تسمى مرة واحدة
ضع في اعتبارك جميع الوظائف "الثابتة" التي يتم استدعاؤها مرة واحدة لتضمينها في المتصل حتى لو
لم يتم وضع علامة "مضمنة". إذا تم دمج استدعاء لوظيفة معينة ، فسيتم حينئذٍ
لا يتم إخراج الوظيفة كرمز للمجمع في حد ذاتها.
ممكن على المستويات -O1, -O2, -O3 -أوس.
-مضمنة
الوظائف المضمنة المميزة بعبارة "always_inline" والوظائف التي يبدو جسمها أصغر من
وظيفة استدعاء النفقات العامة في وقت مبكر قبل القيام به -fprofile- توليد الأجهزة و
تمريرة مضمنة حقيقية. القيام بذلك يجعل عملية التنميط أرخص بكثير وعادة
تضمين بشكل أسرع في البرامج التي تحتوي على سلاسل كبيرة من وظائف الغلاف المتداخلة.
يتم التمكين افتراضيًا.
-فيبا-سرا
إجراء الاستبدال القياسي بين الجراثيم للركام ، وإزالة المعلمات غير المستخدمة
واستبدال المعلمات التي تم تمريرها من خلال المرجع بواسطة المعلمات التي تم تمريرها حسب القيمة.
ممكن على المستويات -O2, -O3 -أوس.
-finline-Limit =n
بشكل افتراضي ، يحدد GCC حجم الوظائف التي يمكن أن تكون مضمنة. هذا العلم يسمح
خشن السيطرة على هذا الحد. n هو حجم الوظائف التي يمكن تضمينها
عدد التعليمات الزائفة.
يتم التحكم في التضمين فعليًا بواسطة عدد من المعلمات ، والتي يمكن تحديدها
بشكل فردي عن طريق استخدام - معلمة الاسم=قيمنا. -finline-Limit =n مجموعات الخيار بعض من
هذه المعلمات على النحو التالي:
max-inline-insns- واحد
ومن المقرر أن n/ 2.
max-inline-insns- السيارات
ومن المقرر أن n/ 2.
انظر أدناه للحصول على توثيق للمعلمات الفردية التي تتحكم في تضمين و
عن الإعدادات الافتراضية لهذه المعلمات.
ملحوظة: قد لا تكون هناك قيمة ل -finline- الحد يؤدي إلى السلوك الافتراضي.
ملحوظة: تمثل التعليمات الزائفة ، في هذا السياق بالذات ، ملخصًا
قياس حجم الوظيفة. لا يمثل بأي حال من الأحوال عددًا من التجميع
التعليمات وعلى هذا النحو قد يتغير معناها الدقيق من إصدار واحد إلى
آخر.
-fno- الاحتفاظ- مضمنة- dllexport
هذه نسخة أكثر دقة من وظائف مضمنة الصيانة، والذي ينطبق فقط على
الوظائف التي تم التصريح عنها باستخدام سمة "dllexport" أو "إلغاء التحديد"
وظائف مضمنة الصيانة
في لغة C ، قم بإصدار الدالات "الثابتة" التي تم التصريح بأنها "مضمنة" في ملف الكائن ، حتى لو كان
تم تضمين الوظيفة في جميع من يتصل بها. هذا التبديل لا يؤثر
الوظائف باستخدام الامتداد "الداخلي الخارجي" في GNU C90. في C ++ ، انبعث أي شيء وكل شيء
وظائف مضمنة في ملف الكائن.
-حفظ-ثابت-ثابته
تم الإعلان عن متغيرات الإنبعاث "ثابت ثابت" عند عدم تشغيل التحسين ، حتى إذا كان ملف
لا يشار إلى المتغيرات.
يقوم GCC بتمكين هذا الخيار افتراضيًا. إذا كنت ترغب في إجبار المترجم على التحقق مما إذا كان ملف
المتغير المشار إليه ، بغض النظر عما إذا كان التحسين قيد التشغيل أم لا ، استخدم
ال -fno-keep-static-consts الخيار.
الثوابت
محاولة دمج ثوابت متطابقة (ثوابت السلسلة وثوابت الفاصلة العائمة)
عبر وحدات الترجمة.
هذا الخيار هو الخيار الافتراضي للترجمة المحسنة إذا كان المجمع والرابط
ادعمه. يستخدم ثوابت عدم الدمج لمنع هذا السلوك.
ممكن على المستويات -O, -O2, -O3, -أوس.
- جميع الثوابت
محاولة دمج ثوابت متطابقة ومتغيرات متطابقة.
هذا الخيار يعني الثوابت. بالإضافة إلى الثوابت
تعتبر ، على سبيل المثال ، المصفوفات المبدئية الثابتة أو المتغيرات الثابتة المُهيأة مع
أنواع النقطة العائمة أو التكاملية. تتطلب لغات مثل C أو C ++ كل متغير ،
بما في ذلك مثيلات متعددة من نفس المتغير في الاستدعاءات العودية ، لتمييزها
المواقع ، لذا فإن استخدام هذا الخيار يؤدي إلى سلوك غير مطابق.
-fmodulo- جدولة
قم بإجراء جدولة نمط التأرجح مباشرة قبل مرور الجدولة الأول. هذه
ينظر pass إلى الحلقات الأعمق ويعيد ترتيب تعليماتها من خلال تداخل مختلف
التكرارات.
-fmodulo-Sched-allow-regmoves
قم بإجراء جدولة نمطية قائمة على الرسائل النصية القصيرة أكثر قوة مع السماح بنقل السجل. بواسطة
تعيين هذا العلم يتم حذف حواف معينة لمكافحة التبعية ، مما يؤدي إلى تشغيل ملف
توليد حركات ريج على أساس تحليل مدى الحياة. هذا الخيار فعال
فقط مع -fmodulo- جدولة تمكين.
-fno- فرع- عد- ريج
لا تستخدم تعليمات "الإنقاص والفرع" في سجل الجرد ، ولكن بدلاً من ذلك
إنشاء سلسلة من التعليمات التي تقلل من السجل ، ومقارنتها مع
صفر ، ثم يتفرع بناءً على النتيجة. هذا الخيار له معنى فقط في
البنى التي تدعم مثل هذه التعليمات ، والتي تشمل x86 و PowerPC و IA-64 و
ق / 390.
يتم التمكين افتراضيًا في -O1 وأعلى.
الافتراضي هو -فرع-عد-ريج.
-fno-وظيفة-CSE
لا تضع عناوين الوظائف في السجلات ؛ اجعل كل تعليمات تستدعي أ
وظيفة ثابتة تحتوي على عنوان الوظيفة صراحة.
ينتج عن هذا الخيار كود أقل كفاءة ، ولكن بعض الاختراقات الغريبة التي تغير امتداد
قد يتم الخلط بين إخراج المجمّع من خلال التحسينات التي يتم إجراؤها عندما يكون هذا الخيار
غير مستعمل.
الافتراضي هو -وظيفة- CSE
-fno-صفر-تهيئة-في-bss
إذا كان الهدف يدعم قسم BSS ، فإن GCC بشكل افتراضي يضع المتغيرات التي هي
تهيئته إلى الصفر في BSS. هذا يمكن أن يوفر مساحة في الكود الناتج.
يقوم هذا الخيار بإيقاف تشغيل هذا السلوك لأن بعض البرامج تعتمد بشكل صريح على المتغيرات
الانتقال إلى قسم البيانات - على سبيل المثال ، حتى يتمكن الملف التنفيذي الناتج من العثور على ملف
بداية هذا القسم و / أو وضع افتراضات بناءً على ذلك.
الافتراضي هو -fzero- تهيئة- في- bss.
-الخيط القفزات
قم بإجراء التحسينات التي تتحقق لمعرفة ما إذا كانت قفزة تتفرع إلى موقع آخر
تم العثور على المقارنة المدرجة في الأول. إذا كان الأمر كذلك ، يتم إعادة توجيه الفرع الأول إلى
إما وجهة الفرع الثاني أو النقطة التي تليها مباشرة ،
اعتمادًا على ما إذا كان الشرط معروفًا بصحته أم خطأ.
ممكن على المستويات -O2, -O3, -أوس.
- أنواع الانقسام العريض
عند استخدام نوع يشغل عدة سجلات ، مثل "long long" على 32 بت
النظام ، وتقسيم السجلات عن بعضها البعض وتخصيصها بشكل مستقل. هذا عادة
يولد كودًا أفضل لتلك الأنواع ، لكنه قد يجعل تصحيح الأخطاء أكثر صعوبة.
ممكن على المستويات -O, -O2, -O3, -أوس.
القفزات -fcse- متابعة
في التخلص من التعبير الجزئي الشائع (CSE) ، قم بفحص تعليمات القفز عندما يكون ملف
لم يتم الوصول إلى هدف القفزة بواسطة أي مسار آخر. على سبيل المثال ، عند مواجهة محرك البحث المخصص
عبارة "if" مع عبارة "else" ، تتبع CSE الانتقال عند الشرط
اختبار خاطئ.
ممكن على المستويات -O2, -O3, -أوس.
كتل -fcse- تخطي
هذا هو مماثل ل القفزات -fcse- متابعة، ولكن يتسبب في أن يتبع محرك البحث المخصص (CSE) قفزات في ذلك
تخطي مشروطًا فوق الكتل. عندما يصادف محرك البحث المخصص عبارة "if" البسيطة بدون
شرط آخر ، كتل -fcse- تخطي يتسبب في أن يتبع CSE القفزة حول جسم
"لو".
ممكن على المستويات -O2, -O3, -أوس.
-frerun-cse-بعد الحلقة
أعد تشغيل إزالة التعبيرات الفرعية الشائعة بعد إجراء تحسينات الحلقة.
ممكن على المستويات -O2, -O3, -أوس.
-fgcse
قم بإجراء تمريرة عامة للتخلص من التعبيرات الفرعية الشائعة. يؤدي هذا التمرير أيضًا
ثابت عالمي وانتشار النسخ.
ملحوظة: عند تجميع برنامج باستخدام gotos المحسوبة ، امتداد GCC ، قد تحصل على
أداء أفضل لوقت التشغيل إذا قمت بتعطيل حذف التعبير الفرعي المشترك العام
تمر عن طريق الإضافة -fno-gcse إلى سطر الأوامر.
ممكن على المستويات -O2, -O3, -أوس.
-fgcse-lm
متى -fgcse-lm تم تمكينه ، يحاول القضاء على التعبير الداخلي المشترك التحرك
الأحمال التي تقتلها المتاجر في نفسها فقط. هذا يسمح بحلقة تحتوي على ملف
تسلسل تحميل / تخزين ليتم تغييره إلى حمل خارج الحلقة ، ونسخة / مخزن بداخله
الحلقة.
يتم التمكين افتراضيًا عندما -fgcse .
-fgcse- sm
متى -fgcse- sm تم تمكينه ، يتم تشغيل بطاقة حركة المتجر بعد المشتركة العالمية
القضاء على subexpression. يحاول هذا التمرير إخراج المخازن من الحلقات. عند استخدامها
بالتزامن مع -fgcse-lm، يمكن تغيير الحلقات التي تحتوي على تسلسل تحميل / تخزين
لتحميل قبل الحلقة ومخزن بعد الحلقة.
لم يتم تمكين في أي مستوى التحسين.
-fgcse- لاس
متى -fgcse- لاس ممكّن ، تمرير القضاء على التعبيرات الفرعية المشتركة العالمية
يزيل الأحمال الزائدة التي تأتي بعد التخزين في نفس موقع الذاكرة (كلاهما
تسريح جزئي وكامل).
لم يتم تمكين في أي مستوى التحسين.
-fgcse- بعد إعادة التحميل
متى -fgcse- بعد إعادة التحميل تم تمكينه ، يتم إجراء تمريرة للتخلص من الحمولة الزائدة
بعد إعادة التحميل. الغرض من هذا التمرير هو تنظيف الانسكاب الزائد.
- تحسينات الحلقة الخاطئة
يخبر هذا الخيار مُحسِّن الحلقة باستخدام قيود اللغة لاشتقاق حدود لـ
عدد مرات تكرار الحلقة. هذا يفترض أن رمز الحلقة لا يستدعي
سلوك غير محدد عن طريق التسبب على سبيل المثال في حدوث تجاوزات في عدد صحيح بعلامة أو خارج الحدود
وصول مجموعة. يتم استخدام حدود عدد التكرارات للحلقة للإرشاد
حلقة تفريغ وتقشير وحلقة تحسينات اختبار الخروج. تم تمكين هذا الخيار
بشكل افتراضي.
-تحسينات غير آمنة- حلقة
يخبر هذا الخيار مُحسِّن الحلقة بأن يفترض أن فهارس الحلقة لا تتجاوز الفائض ، و
أن الحلقات مع شرط خروج غير بديهي ليست لانهائية. هذا يتيح نطاق أوسع
مجموعة من تحسينات الحلقة حتى لو لم يتمكن مُحسِّن الحلقة نفسه من إثبات ذلك
الافتراضات صحيحة. كما ترى - تحسينات حلقة غير آمنة، يحذرك المترجم
إذا وجدت هذا النوع من الحلقات.
-القفز المتقاطع
قم بإجراء تحويل القفز المتقاطع. هذا التحول يوحد رمز مكافئ و
يحفظ حجم الكود. قد يكون أداء الكود الناتج أفضل أو لا يعمل بشكل أفضل من بدون
القفز.
ممكن على المستويات -O2, -O3, -أوس.
-فاوتو- المؤتمر الوطني العراقي
اجمع بين الزيادات أو التناقصات في العناوين مع عمليات الوصول إلى الذاكرة. هذا المرور
يتم تخطيها دائمًا على البنى التي لا تحتوي على تعليمات لدعم ذلك.
يتم التمكين افتراضيًا في -O وأعلى في البنى التي تدعم هذا.
-fdce
أداء حذف الكود الميت (DCE) على RTL. يتم التمكين افتراضيًا في -O وأعلى.
-fdse
قم بإزالة المخزن الميت (DSE) على RTL. يتم التمكين افتراضيًا في -O وأعلى.
-fif- التحويل
محاولة تحويل القفزات الشرطية إلى مكافئات بدون فرع. هذا يشمل
استخدام الحركات الشرطية ، min ، max ، تعيين الأعلام وتعليمات القيمة المطلقة ، وبعض الحيل
يمكن القيام به عن طريق الحساب القياسي. استخدام التنفيذ المشروط على الرقائق أينما كانت
متاح يتحكم فيه -fif- التحويل 2.
ممكن على المستويات -O, -O2, -O3, -أوس.
-fif- التحويل 2
استخدم التنفيذ الشرطي (عند توفره) لتحويل القفزات الشرطية إلى
معادلات دون فرع.
ممكن على المستويات -O, -O2, -O3, -أوس.
-fdeclon-ctor-dtor
يتطلب C ++ ABI نقاط دخول متعددة للمُنشئين والمدمرين: واحدة لملف
كائن فرعي أساسي ، واحد لكائن كامل ، والآخر لمدمِّر افتراضي يستدعي
عامل حذف بعد ذلك. للحصول على تسلسل هرمي مع قواعد افتراضية ، القاعدة وكاملة
المتغيرات هي نسخ ، مما يعني نسختين من الوظيفة. مع هذا الخيار ، فإن ملف
يتم تغيير المتغيرات الأساسية والكاملة لتكون ثانك التي تستدعي تنفيذًا مشتركًا.
تم التمكين بواسطة -أوس.
-fdelete-null-pointer-check-pointer (تحقق من -fdelete-null-pointer-pointer)
افترض أن البرامج لا يمكنها أن ترجع بأمان المؤشرات الفارغة ، وأنه لا يوجد كود أو بيانات
العنصر موجود هناك. يتيح ذلك تحسينات طي ثابتة بسيطة على الإطلاق
مستويات التحسين. بالإضافة إلى ذلك ، تستخدم ممرات التحسين الأخرى في GCC هذه العلامة لـ
التحكم في تحليلات تدفق البيانات العالمية التي تقضي على عمليات التحقق عديمة الفائدة للمؤشرات الفارغة ؛
يفترض هؤلاء أنه إذا تم فحص المؤشر بعد إلغاء الإشارة إليه بالفعل ، فإنه
لا يمكن أن تكون لاغية.
لاحظ مع ذلك أن هذا الافتراض غير صحيح في بعض البيئات. يستخدم
-fno-delete-null-pointer-check-check (التحقق من المؤشر -fno-delete-null-pointer-check لتعطيل هذا التحسين للبرامج التي تعتمد
على هذا السلوك.
تقوم بعض الأهداف ، وخاصة المضمنة منها ، بتعطيل هذا الخيار على جميع المستويات. خلاف ذلك
يتم تمكينه على جميع المستويات: -O0, -O1, -O2, -O3, -أوس. الممرات التي تستخدم المعلومات
يتم تمكينها بشكل مستقل عند مستويات تحسين مختلفة.
- افترض
محاولة تحويل المكالمات إلى وظائف افتراضية إلى مكالمات مباشرة. يتم ذلك على حد سواء
ضمن إجراء و interprocurally كجزء من التطعيم غير المباشر
(- مضمنة غير مباشرة) والتكاثر المستمر بين الإجراءات (-فيبا- CP). ممكن في
ومستوياتها -O2, -O3, -أوس.
- تخميني - تخميني
محاولة تحويل الاستدعاءات إلى وظائف افتراضية إلى استدعاءات مباشرة تخمينية. مرتكز على
تحليل الرسم البياني للميراث من النوع ، وتحديد مجموعة استدعاء معينة من
أهداف محتملة. إذا كانت المجموعة صغيرة ، ويفضل أن تكون بحجم 1 ، فغيّر المكالمة إلى
الاختيار المشروط بين المكالمات المباشرة وغير المباشرة. دعوات المضاربة تمكن
المزيد من التحسينات ، مثل التضمين. عندما تبدو عديمة الفائدة بعد المزيد
التحسين ، يتم تحويلها مرة أخرى إلى الشكل الأصلي.
-fdevirtualize-at-ltrans
دفق المعلومات الإضافية اللازمة للتشغيل العدواني عند تشغيل الرابط-
مُحسِّن الوقت في وضع التحويل المحلي. يتيح هذا الخيار المزيد
devirtualization ولكنه يزيد بشكل كبير من حجم البيانات المتدفقة. من أجل هذا
سبب تعطيله افتراضيًا.
- تحسينات غير مكلفة
قم بإجراء عدد من التحسينات الثانوية باهظة الثمن نسبيًا.
ممكن على المستويات -O2, -O3, -أوس.
-حر
حاول إزالة تعليمات التمديد الزائدة. هذا مفيد بشكل خاص ل
بنية x86-64 ، والتي تمتد ضمنيًا إلى الصفر في سجلات 64 بت بعد
الكتابة إلى النصف السفلي 32 بت.
ممكّن لـ Alpha و AArch64 و x86 على المستويات -O2, -O3, -أوس.
-fno- عمر- DSE
في لغة ++ C ، تتأثر قيمة الكائن فقط بالتغييرات التي تحدث خلال حياته: when
يبدأ المُنشئ ، ويكون للكائن قيمة غير محددة وأي تغييرات أثناء ذلك
مات عمر الكائن عندما يتم تدميره. عادة متجر ميت
القضاء سيستفيد من هذا ؛ إذا كانت التعليمات البرمجية الخاصة بك تعتمد على قيمة
يستمر تخزين الكائن إلى ما بعد عمر الكائن ، يمكنك استخدام هذه العلامة لـ
تعطيل هذا التحسين.
انكماش مدى الحياة
محاولة تقليل ضغط التسجيل من خلال تسجيل انكماش النطاق المباشر. هذا هو
مفيد للمعالجات السريعة مع مجموعات تسجيل صغيرة أو متوسطة الحجم.
خوارزمية فيرا =خوارزمية
استخدم خوارزمية التلوين المحددة لمخصص التسجيل المتكامل. ال
خوارزمية يمكن أن تكون الحجة الأولوية، والتي تحدد أولوية تلوين Chow ، أو CB,
الذي يحدد تلوين Chaitin-Briggs. لم يتم تنفيذ تلوين Chaitin-Briggs
لجميع البنى ، ولكن بالنسبة لتلك الأهداف التي تدعمها ، فهذا هو الإعداد الافتراضي
لأنه يولد شفرة أفضل.
منطقة فيرا =منطقة
استخدم مناطق محددة لمخصص السجل المتكامل. ال منطقة حجة
يجب أن يكون أحد العناصر التالية:
الكل استخدم كل الحلقات كمناطق تخصيص التسجيل. هذا يمكن أن يعطي أفضل النتائج لـ
آلات ذات مجموعة تسجيل صغيرة و / أو غير منتظمة.
مختلط
استخدم جميع الحلقات باستثناء الحلقات ذات الضغط المسجل الصغير كمناطق. هذه
تعطي القيمة عادةً أفضل النتائج في معظم الحالات ومعظم الهياكل ، و
يتم تمكينه افتراضيًا عند التجميع باستخدام تحسين السرعة (-O, -O2، ...).
صورة واحدة؟ استخدم جميع الوظائف كمنطقة واحدة. ينتج عن هذا عادةً أصغر رمز
الحجم ، ويتم تمكينه افتراضيًا من أجل -أوس or -O0.
-الرافعة-الضغط
استخدم IRA لتقييم ضغط التسجيل في ممر رفع الكود لاتخاذ قرارات الرفع
التعبيرات. عادةً ما ينتج عن هذا الخيار رمز أصغر ، ولكن يمكن أن يبطئ
مترجم أسفل.
يتم تمكين هذا الخيار على المستوى -أوس لجميع الأهداف.
- ضغط حلقة فيرا
استخدم IRA لتقييم ضغط التسجيل في الحلقات لاتخاذ قرارات تحريك ثوابت الحلقة.
ينتج عن هذا الخيار عادةً إنشاء رمز أسرع وأصغر على الأجهزة ذات
ملفات التسجيل الكبيرة (> = 32 تسجيلات) ، لكنها يمكن أن تبطئ المترجم.
يتم تمكين هذا الخيار على المستوى -O3 لبعض الأهداف.
-fno- آيرا- حصة- حفظ- فتحات
قم بتعطيل مشاركة فتحات المكدس المستخدمة لحفظ السجلات الثابتة المستخدمة في المكالمة التي تعيش من خلالها
مكالمة. يحصل كل سجل صلب على فتحة مكدس منفصلة ، ونتيجة لذلك يتم تكديس الوظائف
الإطارات أكبر.
فتحات انسكاب الفتحات
تعطيل مشاركة فتحات المكدس المخصصة للسجلات الزائفة. كل سجل زائف
التي لا تحصل على سجل ثابت تحصل على فتحة مكدس منفصلة ، ونتيجة لذلك وظيفة
إطارات المكدس أكبر.
-فيرا- مطوّل =n
التحكم في الإسهاب في ملف التفريغ لمخصص السجل المتكامل. ال
القيمة الافتراضية هي 5. إذا كانت القيمة n أكبر أو يساوي 10 ، يتم إرسال إخراج التفريغ
إلى stderr باستخدام نفس تنسيق n ناقص 10.
-فلرا-ريمات
تمكين إعادة استخدام المواد الحساسة لـ CFG في جيش الرب للمقاومة. بدلا من تحميل القيم المنسكبة
الزائفة ، يحاول LRA إعادة إضفاء الطابع المادي (إعادة حساب) القيم إذا كانت مربحة.
ممكن على المستويات -O2, -O3, -أوس.
- فرع متأخر
إذا كانت مدعومة للجهاز الهدف ، فحاول إعادة ترتيب التعليمات لاستغلالها
فتحات التعليمات متاحة بعد تعليمات الفرع المتأخرة.
ممكن على المستويات -O, -O2, -O3, -أوس.
-fschedule- insns
إذا كانت مدعومة للجهاز الهدف ، فحاول إعادة ترتيب التعليمات للتخلص منها
أكشاك التنفيذ بسبب عدم توفر البيانات المطلوبة. هذا يساعد الآلات
لديك نقطة عائمة بطيئة أو تعليمات تحميل ذاكرة من خلال السماح بإرشادات أخرى
تصدر حتى نتيجة الحمل أو تعليمات النقطة العائمة مطلوبة.
ممكن على المستويات -O2, -O3.
-fschedule-insns2
على غرار -fschedule- insns، لكنه يطلب تمريرًا إضافيًا لجدولة التعليمات
بعد الانتهاء من تخصيص السجل. هذا مفيد بشكل خاص مع الأجهزة ذات الامتداد
عدد صغير نسبيًا من السجلات وحيث تستغرق تعليمات تحميل الذاكرة أكثر من
دورة واحدة.
ممكن على المستويات -O2, -O3, -أوس.
-fno- جدولة- interblock
لا تقم بجدولة التعليمات عبر الكتل الأساسية. عادة ما يتم تمكين هذا بشكل افتراضي
عند الجدولة قبل تخصيص التسجيل ، أي مع -fschedule- insns أو في -O2 or
أعلى.
-fno- جدولة المواصفات
لا تسمح بالحركة التخمينية لتعليمات عدم التحميل. يتم تمكين هذا عادة بواسطة
الافتراضي عند الجدولة قبل تخصيص التسجيل ، أي مع -fschedule- insns أو في
-O2 أو ما يفوقها.
ضغط ضغط
قم بتمكين جدولة التسجيل الحساسة للضغط قبل تخصيص التسجيل. هذه
يكون منطقيًا فقط عند الجدولة قبل تمكين تخصيص التسجيل ، أي مع
-fschedule- insns أو في -O2 أو أعلى. يمكن أن يؤدي استخدام هذا الخيار إلى تحسين ما تم إنشاؤه
كود وتقليل حجمه عن طريق منع زيادة ضغط التسجيل فوق الرقم
من السجلات الصلبة المتاحة والانسكابات اللاحقة في تخصيص السجل.
تحميل المواصفات
السماح بالحركة التخمينية لبعض تعليمات التحميل. هذا منطقي فقط عندما
الجدولة قبل تخصيص التسجيل ، أي مع -fschedule- insns أو في -O2 أو ما يفوقها.
-fsched- المواصفات-تحميل خطير
السماح بالحركة التخمينية لمزيد من تعليمات التحميل. هذا منطقي فقط عندما
الجدولة قبل تخصيص التسجيل ، أي مع -fschedule- insns أو في -O2 أو ما يفوقها.
-fsched-المتوقفة-insns
-fsched-stalled-insns =n
حدد عدد الإدخالات (إن وجدت) التي يمكن نقلها قبل الأوان من قائمة الانتظار المتوقفة
يدرج في القائمة الجاهزة أثناء تمرير الجدولة الثاني. -fno- الجدولة- المتوقفة- insns
يعني أنه لا يتم نقل أي إدخال داخلي قبل الأوان ، -fsched-stalled-insns = 0 يعني لا يوجد
تحديد عدد الإدخالات في قائمة الانتظار التي يمكن نقلها قبل الأوان. -fsched-المتوقفة-insns
بدون قيمة يساوي -fsched-stalled-insns = 1.
-fsched-المتوقفة-insns-dep
-fsched-stalled-insns-dep =n
حدد عدد مجموعات insn (الدورات) التي يتم فحصها من أجل التبعية على ins المتوقفة
هذا مرشح للإزالة المبكرة من قائمة انتظار الأسماء المتوقفة. هذا لديه
تأثير فقط خلال تمرير الجدولة الثانية ، وفقط إذا -fsched-المتوقفة-insns is
مستخدم. -fno-Sched-stalled-insns-dep ما يعادل -fsched-stalled-insns-dep = 0.
-fsched-المتوقفة-insns-dep بدون قيمة يساوي
-fsched-stalled-insns-dep = 1.
-fsched2-استخدام-superblocks
عند الجدولة بعد تخصيص التسجيل ، استخدم جدولة superblock. هذا يسمح
الحركة عبر حدود الكتلة الأساسية ، مما يؤدي إلى جداول زمنية أسرع. هذا الخيار هو
تجريبية ، حيث لم يتم استخدام جميع الأوصاف الآلية بواسطة نموذج دول مجلس التعاون الخليجي لوحدة المعالجة المركزية بشكل كافٍ
لتجنب النتائج غير الموثوقة من الخوارزمية.
هذا منطقي فقط عند الجدولة بعد تخصيص السجل ، أي مع
-fschedule-insns2 أو في -O2 أو ما يفوقها.
-fsched المجموعة الإرشادية
تمكين الكشف عن مجريات الأمور للمجموعة في المجدول. هذا ارشادي يفضل التعليمات
التي تنتمي إلى مجموعة الجدول الزمني. يتم تمكين هذا افتراضيًا عند الجدولة
تمكين ، أي مع -fschedule- insns or -fschedule-insns2 أو في -O2 أو ما يفوقها.
-fsched- المسار الحرج- الكشف عن مجريات الأمور
تمكين الكشف عن المسار الحرج في المجدول. هذا فضل إرشادي
تعليمات على المسار الحرج. يتم تمكين هذا افتراضيًا عند الجدولة
تمكين ، أي مع -fschedule- insns or -fschedule-insns2 أو في -O2 أو ما يفوقها.
-fsched-spec-insn- ارشادي
تمكين توجيه التعليمات التخمينية في المجدول. هذا فضل إرشادي
تعليمات المضاربة مع زيادة ضعف التبعية. يتم تمكين هذا افتراضيا
عند تمكين الجدولة ، أي مع -fschedule- insns or -fschedule-insns2 أو في -O2
أو ما يفوقها.
-fsched- رتبة- إرشادية
تمكين الكشف عن مجريات الأمور في الرتبة في المجدول. هذا ارشادي يفضل التعليمات
تنتمي إلى كتلة أساسية ذات حجم أو تردد أكبر. يتم تمكين هذا افتراضيا
عند تمكين الجدولة ، أي مع -fschedule- insns or -fschedule-insns2 أو في -O2
أو ما يفوقها.
-fsched-آخر-insn-الاسترشادي
قم بتمكين آخر تعليمات إرشادية في المجدول. هذا الاستدلال يفضل
تعليمة أقل اعتمادًا على التعليمات الأخيرة المجدولة. تم تمكين هذا
بشكل افتراضي عند تمكين الجدولة ، أي مع -fschedule- insns or -fschedule-insns2
أو في -O2 أو ما يفوقها.
-fsched-dep-count-heuristic
تمكين الاستدلال على العدد التابع في المجدول. هذا الاستدلال يفضل
التعليمات التي تحتوي على مزيد من التعليمات حسب ذلك. يتم تمكين هذا افتراضيا
عند تمكين الجدولة ، أي مع -fschedule- insns or -fschedule-insns2 أو في -O2
أو ما يفوقها.
حلقات مجدولة مجدولة
يتم تنفيذ جدولة Modulo قبل الجدولة التقليدية. إذا كانت الحلقة هي modulo
مجدولة ، قد تغير تصاريح الجدولة اللاحقة جدولها. استخدم هذا الخيار لـ
السيطرة على هذا السلوك.
- جدولة انتقائية
تعليمات الجدول باستخدام خوارزمية الجدولة الانتقائية. يعمل الجدولة الانتقائية
بدلا من تمرير المجدول الأول.
- جدولة انتقائية 2
تعليمات الجدول باستخدام خوارزمية الجدولة الانتقائية. يعمل الجدولة الانتقائية
بدلا من تمرير المجدول الثاني.
-الجدولة- الأنابيب
تمكين تسلسل البرامج من الحلقات الداخلية أثناء الجدولة الانتقائية. هذه
الخيار ليس له أي تأثير ما لم يكن أحد - جدولة انتقائية or - جدولة انتقائية 2
قيد التشغيل.
-الجدولة- الأنابيب- الخارجية- الحلقات
عندما حلقات الأنابيب أثناء الجدولة الانتقائية ، وكذلك الحلقات الخارجية لخط الأنابيب. هذه
الخيار ليس له أي تأثير ما لم -الجدولة- الأنابيب قيد التشغيل.
- التوسط الدلالي
تسمح بعض تنسيقات الكائنات ، مثل ELF ، بالتداخل بين الرموز بواسطة الرابط الديناميكي.
هذا يعني أنه بالنسبة للرموز التي تم تصديرها من DSO ، لا يمكن للمترجم أن يعمل
التكاثر بين الإجراءات والتضمين والتحسينات الأخرى في توقع أن
وظيفة أو متغير في السؤال قد يتغير. بينما هذه الميزة مفيدة ، ل
على سبيل المثال ، لإعادة كتابة وظائف تخصيص الذاكرة عن طريق تطبيق تصحيح الأخطاء ، فهو كذلك
باهظة الثمن من حيث جودة الكود. مع - المداخلة - الدلالي - المترجم
يفترض أنه في حالة حدوث تداخل للوظائف ، فستكون وظيفة الكتابة فوقها
بالضبط نفس الدلالات (والآثار الجانبية). وبالمثل إذا حدث التدخل
بالنسبة للمتغيرات ، سيكون منشئ المتغير هو نفسه. العلم لا يوجد لديه
تأثير الوظائف المعلنة صراحةً في السطر (حيث لا يُسمح به مطلقًا
مداخلة لتغيير الدلالات) وللرموز التي أعلن صراحة أنها ضعيفة.
-لف شرينك
تنبعث مقدمات الوظيفة فقط قبل أجزاء من الوظيفة التي تحتاج إليها ، وليس عند
الجزء العلوي من الوظيفة. يتم تمكين هذه العلامة بشكل افتراضي في -O وأعلى.
-fcaller- يحفظ
تمكين تخصيص القيم للسجلات التي يتم ضربها بواسطة استدعاءات الوظائف ، بواسطة
إصدار تعليمات إضافية لحفظ واستعادة السجلات حول هذه المكالمات. مثل
يتم التخصيص فقط عندما يبدو أنه يؤدي إلى رمز أفضل.
يتم تمكين هذا الخيار دائمًا افتراضيًا على أجهزة معينة ، عادةً تلك التي تحتوي على
لا توجد سجلات محفوظة عند الاتصال لاستخدامها بدلاً من ذلك.
ممكن على المستويات -O2, -O3, -أوس.
-مجمع-المكدس-التعديلات
يتتبع تعديلات المكدس (الدفعات والملوثات العضوية الثابتة) ويكدس مراجع الذاكرة ثم يحاول
للعثور على طرق لدمجها.
يتم التمكين افتراضيًا في -O1 وأعلى.
-فيبا را
استخدم سجلات حفظ المتصل للتخصيص إذا لم يتم استخدام هذه السجلات من قبل أي شخص يسمى
وظيفة. في هذه الحالة ، ليس من الضروري حفظها واستعادتها حول المكالمات.
هذا ممكن فقط إذا كانت الوظائف المسماة جزءًا من نفس وحدة الترجمة مثل التيار
وظيفة ويتم تجميعها قبل ذلك.
ممكن على المستويات -O2, -O3, -أوس.
-الحفاظ-المكدس
محاولة تقليل استخدام المكدس. يحاول المترجم استخدام مساحة مكدس أقل ، حتى
إذا كان ذلك يجعل البرنامج أبطأ. هذا الخيار يعني تعيين إطار مكدس كبير
المعلمة 100 و نمو إطار مكدس كبير المعلمة إلى 400.
-ftree-ressoc
قم بإعادة التجميع على الأشجار. يتم تمكين هذه العلامة بشكل افتراضي في -O وأعلى.
-ftree- قبل
قم بإزالة التكرار الجزئي (PRE) على الأشجار. يتم تمكين هذه العلم من قبل
الافتراضي في -O2 -O3.
-ftree- جزئية- قبل
اجعل التخلص الجزئي من التكرار (PRE) أكثر عدوانية. يتم تمكين هذه العلم من قبل
الافتراضي في -O3.
-ftree- forwprop
نفذ التكاثر الأمامي على الأشجار. يتم تمكين هذه العلامة بشكل افتراضي في -O
أعلى.
-ftree- فري
قم بإزالة التكرار الكامل (FRE) على الأشجار. الفرق بين FRE و
PRE هو أن FRE لا تراعي سوى التعبيرات المحسوبة على جميع المسارات المؤدية إلى
الحساب الزائد. هذا التحليل أسرع من PRE ، على الرغم من أنه يعرض عددًا أقل
الزوائد. يتم تمكين هذه العلامة بشكل افتراضي في -O وأعلى.
-فتري-بيبروب
قم برفع الأحمال من المؤشرات الشرطية على الأشجار. تم تمكين هذا المرور من قبل
الافتراضي في -O وأعلى.
- الحمولات المجاورة
أحمال الرفع المضاربة من فرعي if-then-else إذا كانت الأحمال من
المواقع المجاورة في نفس الهيكل والبنية الهدف لها شرط
تعليمات التحرك. يتم تمكين هذه العلامة بشكل افتراضي في -O2 وأعلى.
-ftree- نسخة- الدعامة
قم بتنفيذ عملية نشر النسخ على الأشجار. يزيل هذا التمرير عمليات النسخ غير الضرورية.
يتم تمكين هذه العلامة بشكل افتراضي في -O وأعلى.
-فيبا-نقي-كونست
اكتشف الوظائف النقية أو الثابتة. يتم التمكين افتراضيًا في -O وأعلى.
-فيبا المرجع
اكتشف المتغيرات الثابتة التي لا تفلت من وحدة الترجمة. تم التمكين بواسطة
الافتراضي في -O وأعلى.
-فيبا- pta
إجراء تحليل المؤشر بين الإجراءات والتعديل بين الإجراءات و
التحليل المرجعي. يمكن أن يتسبب هذا الخيار في زيادة الذاكرة واستخدام وقت الترجمة
وحدات ترجمة كبيرة. لا يتم تمكينه افتراضيًا على أي مستوى تحسين.
-فيبا الشخصي
تنفيذ انتشار ملف التعريف بين الإجراءات. وظائف تسمى فقط من البرد
يتم تمييز الوظائف على أنها باردة. يتم أيضًا تنفيذ الوظائف مرة واحدة (مثل "بارد" ،
"noreturn" ، المنشئات الثابتة أو المدمرة). وظائف باردة و
حلقة أقل من أجزاء من الوظائف التي يتم تنفيذها مرة واحدة يتم تحسينها من أجل الحجم. تم التمكين بواسطة
الافتراضي في -O وأعلى.
-فيبا- CP
أداء التكاثر المستمر بين الإجراءات. هذا التحسين يحلل البرنامج
لتحديد متى تكون القيم التي يتم تمريرها إلى الوظائف ثوابت ثم يتم تحسينها
وفقا لذلك. يمكن أن يؤدي هذا التحسين إلى زيادة الأداء بشكل كبير إذا كان
يحتوي التطبيق على ثوابت تم تمريرها إلى الوظائف. يتم تمكين هذه العلامة بشكل افتراضي في
-O2, -أوس -O3.
-فيبا- cp- استنساخ
أداء وظيفة الاستنساخ لجعل التكاثر المستمر بين الإجراءات أقوى. متي
ممكّنًا ، يؤدي التكاثر الثابت بين الإجرائيات إلى الاستنساخ الوظيفي عندما
يمكن استدعاء الوظيفة المرئية خارجيًا باستخدام وسيطات ثابتة. لأن هذا
يمكن أن يؤدي التحسين إلى إنشاء نسخ متعددة من الوظائف ، وقد يزيد ذلك بشكل ملحوظ
حجم الكود (انظر - معلمة ipcp- وحدة النمو =قيمنا). يتم تمكين هذه العلامة بشكل افتراضي في
-O3.
محاذاة -fipa-cp
عند التمكين ، يقوم هذا التحسين بنشر محاذاة معلمات الوظيفة لدعمها
عمليات توجيهية وسلسلة أفضل.
يتم تمكين هذه العلامة بشكل افتراضي في -O2 -أوس. يتطلب ذلك -فيبا- CP .
-فيبا- ICF
قم بإجراء طي الكود المتطابق للوظائف ومتغيرات القراءة فقط. ال
يؤدي التحسين إلى تقليل حجم الكود وقد يزعج مجموعات التهدئة عن طريق استبدال وظيفة
من خلال ما يعادله باسم مختلف. يعمل التحسين بشكل أكثر فعالية مع
تم تمكين تحسين وقت الارتباط.
ومع ذلك ، فإن السلوك مشابه لتحسين Gold Linker ICF الذي يعمل عليه GCC ICF
مستويات مختلفة وبالتالي التحسينات ليست هي نفسها - هناك معادلات ذلك
تم العثور عليها فقط من قبل دول مجلس التعاون الخليجي والمكافئات وجدت فقط من قبل الذهب.
يتم تمكين هذه العلامة بشكل افتراضي في -O2 -أوس.
عزل المسارات الخاطئة
اكتشاف المسارات التي تؤدي إلى سلوك خاطئ أو غير معرف بسبب إلغاء مرجعية قيمة خالية
المؤشر. افصل تلك المسارات عن تدفق التحكم الرئيسي وأدر البيان باستخدام
سلوك خاطئ أو غير محدد في الفخ. يتم تمكين هذه العلامة بشكل افتراضي في -O2
وأعلى.
السمة العزلة-المسارات الخاطئة
اكتشف المسارات التي تؤدي إلى سلوك خاطئ أو غير محدد بسبب استخدام قيمة فارغة
بطريقة ممنوعة بواسطة سمة "return_nonnull" أو "nonnull". اعزل تلك المسارات
من تدفق التحكم الرئيسي وقلب البيان بسلوك خاطئ أو غير محدد
في فخ. لم يتم تمكين هذا حاليًا ، ولكن قد يتم تمكينه بواسطة -O2 فى المستقبل.
-فتري-بالوعة
أداء حركة المتجر إلى الأمام على الأشجار. يتم تمكين هذه العلامة بشكل افتراضي في -O
أعلى.
-ftree-بت-ccp
قم بتنفيذ انتشار ثابت للبت الشرطي المتناثر على الأشجار ومؤشر الانتشار
معلومات المحاذاة. يعمل هذا التمرير فقط على المتغيرات العددية المحلية وهو
ممكّن افتراضيًا في -O وأعلى. يتطلب ذلك -فتري- ccp .
-فتري- ccp
قم بإجراء انتشار ثابت شرطي متناثر (CCP) على الأشجار. هذا يمر فقط
يعمل على المتغيرات العددية المحلية ويتم تمكينه افتراضيًا في -O وأعلى.
-فسا- phiopt
نفذ مطابقة النمط على عقد SSA PHI لتحسين الكود الشرطي. هذا المرور
ممكّن افتراضيًا في -O وأعلى.
-تبديل الشجرة التحويل
قم بإجراء تحويل عمليات التهيئة البسيطة في التبديل إلى التهيئة من a
مجموعة عددي. يتم تمكين هذه العلامة بشكل افتراضي في -O2 وأعلى.
-ftree- ذيل- دمج
ابحث عن تسلسلات رمز متطابقة. عند العثور عليها ، استبدل إحداها بالقفزة إلى الأخرى.
يُعرف هذا التحسين بدمج الذيل أو القفز المتقاطع. يتم تمكين هذه العلم من قبل
الافتراضي في -O2 وأعلى. يمكن أن يكون وقت التجميع في هذا المرور محدودًا باستخدام
مقارنات max-tail-merge المعلمة و ماكس الذيل دمج التكرارات المعلمة.
-فتري- dce
قم بإزالة الرمز الميت (DCE) على الأشجار. يتم تمكين هذه العلامة بشكل افتراضي في -O
وأعلى.
-ftree- بنيت- نداء- DCE
قم بإجراء حذف مشروط للشفرة الميتة (DCE) للمكالمات للوظائف المضمنة التي
قد تحدد "errno" ولكن بخلاف ذلك تكون خالية من الآثار الجانبية. يتم تمكين هذه العلامة بشكل افتراضي
at -O2 وأعلى إذا -أوس لم يتم تحديده أيضًا.
-فتري-المسيطر-الخيارات
قم بإجراء مجموعة متنوعة من عمليات التنظيف العددية البسيطة (الانتشار الثابت / النسخ ، التكرار
القضاء وانتشار النطاق وتبسيط التعبير) على أساس المسيطر
اجتياز الشجرة. يؤدي هذا أيضًا إلى تنفيذ خيوط الانتقال (لتقليل القفزات إلى القفزات). هذه
يتم تمكين العلم افتراضيًا في -O وأعلى.
-فتري- dse
قم بإزالة المخزن الميت (DSE) على الأشجار. المتجر الميت هو مخزن في الذاكرة
الموقع الذي تم استبداله لاحقًا بواسطة متجر آخر دون أي أحمال متداخلة. في
هذه الحالة يمكن حذف المتجر السابق. يتم تمكين هذه العلامة بشكل افتراضي في -O
أعلى.
-فتري- الفصل
إجراء نسخ رأس حلقة على الأشجار. هذا مفيد لأنه يزيد
فعالية تحسينات حركة الكود. كما أنه يوفر قفزة واحدة. هذا العلم
ممكّن افتراضيًا في -O وأعلى. لم يتم تمكينه لـ -أوس، لأنه عادة
يزيد من حجم الشفرة.
-ftree- حلقة- الأمثل
أداء تحسينات حلقة على الأشجار. يتم تمكين هذه العلامة بشكل افتراضي في -O
أعلى.
-فتري-حلقة-خطية
إجراء تحويلات تبادل الحلقة على الشجرة. مثل - التبادل الطائر. ليستخدم
هذا التحول في الكود ، يجب تكوين GCC مع - مع ISL لتمكين
البنية التحتية لتحويل حلقة الجرافيت.
- التبادل الطائر
قم بإجراء تحويلات تبادل الحلقة على الحلقات. تبديل حلقتين متداخلتين
يبدل الحلقات الداخلية والخارجية. على سبيل المثال ، إعطاء حلقة مثل:
هل ي = 1 ، م
هل أنا = 1 ، ن
أ (ي ، أنا) = أ (ي ، أنا) * ج
إندو
إندو
تبادل الحلقة يحول الحلقة كما لو كانت مكتوبة:
هل أنا = 1 ، ن
هل ي = 1 ، م
أ (ي ، أنا) = أ (ي ، أنا) * ج
إندو
إندو
والتي يمكن أن تكون مفيدة عندما تكون "N" أكبر من ذاكرات التخزين المؤقت ، لأنه في Fortran ،
يتم تخزين عناصر المصفوفة في الذاكرة بشكل متجاور حسب العمود ، والأصل
تتكرر الحلقة عبر الصفوف ، مما قد يؤدي إلى فقدان ذاكرة التخزين المؤقت عند كل وصول. هذه
ينطبق التحسين على جميع اللغات التي تدعمها GCC ولا يقتصر على
فورتران. لاستخدام تحويل الكود هذا ، يجب تكوين GCC مع - مع ISL إلى
تمكين البنية التحتية لتحويل حلقة الجرافيت.
-قريب-شريط-الألغام
قم بإجراء تحويلات تعدين الشريط الحلقي على الحلقات. قطاع التعدين يقسم حلقة إلى
حلقتان متداخلتان. الحلقة الخارجية لها خطوات مساوية لحجم الشريط والداخلي
تحتوي الحلقة على خطوات واسعة من الحلقة الأصلية داخل الشريط. يمكن تغيير طول الشريط
يستخدم ال حلقة-كتلة-حجم البلاط معامل. على سبيل المثال ، إعطاء حلقة مثل:
هل أنا = 1 ، ن
أ (أنا) = أ (أنا) + ج
إندو
يعمل تعدين الشريط الحلقي على تحويل الحلقة كما لو كانت مكتوبة:
هل II = 1 ، N ، 51
DO I = II، min (II + 50، N)
أ (أنا) = أ (أنا) + ج
إندو
إندو
ينطبق هذا التحسين على جميع اللغات التي تدعمها GCC ولا يقتصر على
فورتران. لاستخدام تحويل الكود هذا ، يجب تكوين GCC مع - مع ISL إلى
تمكين البنية التحتية لتحويل حلقة الجرافيت.
- كتلة طيارة
قم بإجراء تحويلات منع الحلقة على الحلقات. حظر مناجم الشريط كل حلقة في
عش الحلقة بحيث تتلاءم الذاكرة التي تصل إلى حلقات العنصر داخل ذاكرات التخزين المؤقت. ال
يمكن تغيير طول الشريط باستخدام حلقة-كتلة-حجم البلاط معامل. على سبيل المثال،
معطى حلقة مثل:
هل أنا = 1 ، ن
هل ي = 1 ، م
أ (ي ، أنا) = ب (أنا) + ج (ي)
إندو
إندو
يحول حظر الحلقة الحلقة كما لو كانت مكتوبة:
هل II = 1 ، N ، 51
DO JJ = 1، M، 51
DO I = II، min (II + 50، N)
DO J = JJ، min (JJ + 50، M)
أ (ي ، أنا) = ب (أنا) + ج (ي)
إندو
إندو
إندو
إندو
والتي يمكن أن تكون مفيدة عندما يكون "M" أكبر من ذاكرات التخزين المؤقت ، لأن الحلقة الداخلية
يتكرر على كمية أصغر من البيانات التي يمكن الاحتفاظ بها في ذاكرات التخزين المؤقت. هذه
ينطبق التحسين على جميع اللغات التي تدعمها GCC ولا يقتصر على
فورتران. لاستخدام تحويل الكود هذا ، يجب تكوين GCC مع - مع ISL إلى
تمكين البنية التحتية لتحويل حلقة الجرافيت.
-fgraphite- الهوية
تمكين تحويل الهوية للجرافيت. لكل SCoP نقوم بإنشاء ملف
تمثيل متعدد السطوح وتحويله مرة أخرى إلى شكل. استخدام -fgraphite- الهوية
يمكننا التحقق من تكاليف أو فوائد GIMPLE -> GRAPHITE -> GIMPLE التحول.
يتم أيضًا تنفيذ بعض التحسينات الدنيا بواسطة منشئ الكود ISL ، مثل الفهرس
تقسيم وإلغاء رمز الميت في الحلقات.
-قلب-عش- الأمثل
تفعيل مُحسِّن عش التكرار المستند إلى ISL. هذا هو مُحسِّن عش التكرار الحلقي العام
على خوارزميات بلوتو الأمثل. يقوم بحساب بنية حلقة محسّنة لـ
موقع البيانات والتوازي. هذا الخيار تجريبي.
-تقلب-فتح-والمربى
قم بتمكين unroll and jam لمُحسِّن عش التكرار المستند إلى ISL. يمكن أن يكون عامل فتح
تغيرت باستخدام حلقة-فتح-حجم المربى معامل. البعد غير المرتبط (العد
من الأكثر داخلية) باستخدام امتداد حلقة-فتح-جام-عمق المعلمة.
.
-قلب-موازاة الكل
استخدم تحليل اعتماد بيانات الجرافيت لتحديد الحلقات التي يمكن موازنتها.
قم بموازنة جميع الحلقات التي يمكن تحليلها بحيث لا تحتوي على تبعيات تحمل الحلقة
دون التحقق من أنه من المربح موازنة الحلقات.
-فحص-البيانات-الدوائر
قارن نتائج العديد من أدوات تحليل الاعتماد على البيانات. يستخدم هذا الخيار ل
تصحيح أخطاء محللي اعتماد البيانات.
-ftree- حلقة- إذا- تحويل
حاول تحويل القفزات الشرطية في الحلقات الأعمق إلى التفرعات الأقل
مرادف. القصد من ذلك هو إزالة التحكم في التدفق من الحلقات الداخلية بالترتيب
لتحسين قدرة تمرير الاتجاه للتعامل مع هذه الحلقات. هذا هو
يتم تمكينه افتراضيًا إذا تم تمكين Vectorization.
-ftree- حلقة- إذا- تحويل- مخازن
حاول أيضًا تحويل القفزات الشرطية التي تحتوي على ذاكرة الكتابة. هذه
يمكن أن يكون التحويل غير آمن للبرامج متعددة الخيوط لأنه يحول الشرطي
يكتب الذاكرة في ذاكرة غير مشروطة يكتب. على سبيل المثال،
لـ (i = 0 ؛ i <N ؛ i ++)
إذا (شرطي)
A [i] = expr ؛
يتحول إلى
لـ (i = 0 ؛ i <N ؛ i ++)
A [i] = cond؟ expr: A [i] ؛
يحتمل أن تنتج سباقات البيانات.
-توزيع-حلقة-شجرة
نفذ توزيع الحلقة. يمكن لهذه العلامة تحسين أداء ذاكرة التخزين المؤقت على أجسام الحلقة الكبيرة
والسماح بمزيد من تحسينات الحلقة ، مثل الموازاة أو التوجيه ، لأخذها
مكان. على سبيل المثال ، الحلقة
هل أنا = 1 ، ن
أ (أنا) = ب (أنا) + ج
D (I) = E (I) * F
إندو
يتحول إلى
هل أنا = 1 ، ن
أ (أنا) = ب (أنا) + ج
إندو
هل أنا = 1 ، ن
D (I) = E (I) * F
إندو
-توزيع-حلقة-توزيع-أنماط
نفذ توزيع الحلقات للأنماط التي يمكن تكوينها بواسطة استدعاءات ملف
مكتبة. يتم تمكين هذه العلامة بشكل افتراضي في -O3.
يوزع هذا المرور حلقات التهيئة ويولد استدعاءًا لـ memset صفر.
على سبيل المثال ، الحلقة
هل أنا = 1 ، ن
أ (أنا) = 0
ب (أنا) = أ (أنا) + أنا
إندو
يتحول إلى
هل أنا = 1 ، ن
أ (أنا) = 0
إندو
هل أنا = 1 ، ن
ب (أنا) = أ (أنا) + أنا
إندو
وتتحول حلقة التهيئة إلى استدعاء لـ memset صفر.
-ftree- حلقة- الدردشة
أداء حركة حلقة ثابتة على الأشجار. هذا التمرير يتحرك فقط الثوابت الصعبة
للتعامل على مستوى RTL (استدعاءات الوظائف ، والعمليات التي تتوسع إلى تسلسلات غير بديهية
من insns). مع حلقات-funswitch كما أنه ينقل معاملات الشروط التي هي
ثابت خارج الحلقة ، حتى نتمكن من استخدام تحليل الثبات البسيط في
حلقة unswitching. يتضمن التمرير أيضًا حركة المتجر.
-فتري-حلقة- ايفكنون
أنشئ عدادًا أساسيًا لعدد التكرارات في الحلقات التي يتم تحديدها
يتطلب عدد التكرارات تحليلاً معقدًا. ثم قد التحسينات في وقت لاحق
تحديد الرقم بسهولة. مفيد خاصة فيما يتعلق بفتح.
-خمسة
أداء التحسينات المتغيرة للحث (تقليل القوة ، متغير الحث
الدمج والاستقراء الحذف المتغير) على الأشجار.
-ftree- موازاة الحلقات = n
حلقات متوازية ، أي تقسيم مساحة التكرار الخاصة بهم للتشغيل في n خيوط. هذا هو
ممكن فقط للحلقات التي تكون تكراراتها مستقلة ويمكن أن تكون عشوائية
إعادة ترتيب. التحسين مربح فقط على الأجهزة متعددة المعالجات ، للحلقات
التي تستخدم وحدة المعالجة المركزية بشكل مكثف ، بدلاً من تقييدها على سبيل المثال من خلال عرض النطاق الترددي للذاكرة. هذا الخيار
يدل -الخطأ، وبالتالي فهو مدعوم فقط على الأهداف التي تحظى بدعم
-الخطأ.
-فتري- pta
قم بإجراء تحليل نقاط دالة محلية على الأشجار. يتم تمكين هذه العلامة بشكل افتراضي
at -O وأعلى.
-فتري-سرا
إجراء الاستبدال القياسي للركام. هذا التمرير يحل محل مراجع الهيكل
مع الحجميات لمنع ارتكاب الهياكل في الذاكرة في وقت مبكر جدًا. هذا العلم
ممكّن افتراضيًا في -O وأعلى.
-ftree- نسخة
إجراء إعادة تسمية النسخ على الأشجار. يحاول هذا التمرير إعادة تسمية المؤقتين للمترجم إلى
المتغيرات الأخرى في مواقع النسخ ، وعادة ما ينتج عنها أسماء متغيرات أكثر
تشبه إلى حد كبير المتغيرات الأصلية. يتم تمكين هذه العلامة بشكل افتراضي في -O
أعلى.
-ftree-coalesce- مضمنة- vars
أخبر بطاقة اسم النسخة (انظر -ftree- نسخة) لمحاولة الجمع بين مستخدم صغير-
متغيرات محددة أيضًا ، ولكن فقط إذا كانت مضمنة من وظائف أخرى. إنها
شكل أكثر محدودية -ftree-coalesce-vars. قد يضر هذا بمعلومات التصحيح من هذا القبيل
المتغيرات المضمنة ، ولكنها تحافظ على متغيرات الوظيفة المضمنة بعيدًا عن كل منها
أخرى ، بحيث من المرجح أن تحتوي على القيم المتوقعة في تصحيح الأخطاء
جلسة.
-ftree-coalesce-vars
أخبر بطاقة اسم النسخة (انظر -ftree- نسخة) لمحاولة الجمع بين مستخدم صغير-
المتغيرات المعرفة أيضا ، بدلا من مجرد مؤقت المترجم. هذا قد يحد بشدة
القدرة على تصحيح أخطاء برنامج محسن تم تجميعه مع -fno-var- تتبع-التخصيصات.
في النموذج المنفي ، تمنع هذه العلامة اندماج SSA لمتغيرات المستخدم ، بما في ذلك
مضمنة منها. يتم تمكين هذا الخيار افتراضيًا.
-فتري-تير
إجراء استبدال مؤقت للتعبير أثناء SSA-> المرحلة العادية. غير مرتبطة
يتم استبدال المؤقتات استخدام / تعريف مفرد في موقع استخدامها مع تعريفها
التعبير. ينتج عن هذا رمز غير GIMPLE ، ولكنه يعطي الموسعات أكثر من ذلك بكثير
أشجار معقدة للعمل عليها تؤدي إلى جيل أفضل من RTL. يتم تمكين هذا بواسطة
الافتراضي في -O وأعلى.
-فتري- slsr
قم بإجراء تخفيض في قوة الخط المستقيم على الأشجار. هذا يعترف ذات الصلة
التعبيرات التي تنطوي على عمليات الضرب واستبدالها بحسابات أقل تكلفة
عندما يكون ذلك ممكنا. يتم تمكين هذا افتراضيًا في -O وأعلى.
-ftree-vectorize
أداء التوجيه على الأشجار. هذه العلامة تمكن -ftree- حلقة- vectorize
-ftree-slp-vectorize إذا لم يتم تحديدها صراحة.
-ftree- حلقة- vectorize
أداء توجيه حلقة على الأشجار. يتم تمكين هذه العلامة بشكل افتراضي في -O3 وعندما
-ftree-vectorize .
-ftree-slp-vectorize
إجراء توجيه الكتلة الأساسي على الأشجار. يتم تمكين هذه العلامة بشكل افتراضي في -O3
متى -ftree-vectorize .
-تأثير- نموذج التكلفة =نموذج
قم بتعديل نموذج التكلفة المستخدم للتوجيه. ال نموذج يجب أن تكون الحجة واحدة من
غير محدود, ديناميكي or رخيص. مع ال غير محدود نموذج مسار الكود المتجه هو
يفترض أن يكون مربحًا أثناء استخدام ديناميكي نموذج لحراسة وقت التشغيل
مسار الكود المتجه لتمكينه فقط من أجل عمليات التكرار التي من المحتمل أن يتم تنفيذها
أسرع مما كانت عليه عند تنفيذ الحلقة العددية الأصلية. ال رخيص نموذج تعطيل
توجيه الحلقات حيث يكون القيام بذلك باهظ التكلفة على سبيل المثال بسبب
يتحقق وقت التشغيل المطلوب من اعتماد البيانات أو المحاذاة ولكن بخلاف ذلك يساوي
ديناميكي نموذج. يعتمد نموذج التكلفة الافتراضي على إشارات التحسين الأخرى وهو
إما ديناميكي or رخيص.
-نموذج التكلفة fsimd =نموذج
قم بتغيير نموذج التكلفة المستخدم لتوجيه الحلقات المميزة ببرنامج OpenMP أو Cilk
بالإضافة إلى التوجيه simd. ال نموذج يجب أن تكون الحجة واحدة من غير محدود, ديناميكي, رخيص.
جميع قيم نموذج لها نفس المعنى كما هو موضح في -تأثير- نموذج التكلفة و
نموذج التكلفة الافتراضي المحدد بـ -تأثير- نموذج التكلفة .
-ftree-vrp
قم بتنفيذ نشر نطاق القيمة على الأشجار. هذا مشابه للانتشار المستمر
تمرير ، ولكن بدلاً من القيم ، يتم نشر نطاقات القيم. هذا يسمح لـ
أمثلية لإزالة عمليات تدقيق النطاق غير الضرورية مثل عمليات التحقق من الصفيف المقيدة والمؤشر الفارغ
الفحوصات. يتم تمكين هذا افتراضيًا في -O2 وأعلى. مؤشر فارغ تحقق من الحذف
يتم فقط إذا -fdelete-null-pointer-check-pointer (تحقق من -fdelete-null-pointer-pointer) .
-fsplit-ivs-in-unroller
يتيح التعبير عن قيم متغيرات الاستقراء في التكرارات اللاحقة لـ
حلقة غير منكرة باستخدام القيمة في التكرار الأول. هذا يكسر التبعية الطويلة
السلاسل ، وبالتالي تحسين كفاءة تمريرات الجدولة.
مزيج من -ويب وغالبًا ما تكون CSE كافية للحصول على نفس التأثير.
ومع ذلك ، لا يمكن الاعتماد عليها في الحالات التي يكون فيها جسم الحلقة أكثر تعقيدًا من a
كتلة أساسية واحدة. كما أنه لا يعمل على الإطلاق في بعض البنى بسبب
القيود في بطاقة CSE.
يتم تمكين هذا التحسين بشكل افتراضي.
متغير التوسع في unroller
باستخدام هذا الخيار ، يقوم المترجم بإنشاء نسخ متعددة من بعض المتغيرات المحلية عندما
فتح حلقة ، والتي يمكن أن تؤدي إلى رمز متفوق.
-تضمين جزئيًا
أجزاء مضمنة من الوظائف. هذا الخيار له أي تأثير فقط عندما يتم تضمين نفسه
تشغيل بواسطة وظائف الخطوط الدقيقة or وظائف صغيرة الحجم خيارات.
ممكن على المستوى -O2.
- المشتركة التنبؤية
قم بإجراء تحسين تنبؤي مشترك ، أي إعادة استخدام الحسابات (على وجه الخصوص
أحمال الذاكرة والمخازن) التي أجريت في التكرارات السابقة للحلقات.
يتم تمكين هذا الخيار على المستوى -O3.
-fprefetch- حلقة- صفائف
إذا كان الجهاز المستهدف مدعومًا ، فقم بإنشاء تعليمات لجلب الذاكرة مسبقًا إلى
تحسين أداء الحلقات التي تصل إلى المصفوفات الكبيرة.
قد ينتج عن هذا الخيار رمز أفضل أو أسوأ ؛ النتائج تعتمد بشكل كبير على
بنية الحلقات داخل الكود المصدري.
معاق على المستوى -أوس.
-fno-ثقب الباب
-fno-ثقب الباب2
تعطيل أي تحسينات ثقب الباب الخاصة بالجهاز. الفرق بين
-fno-ثقب الباب -fno-ثقب الباب2 في كيفية تنفيذها في المترجم ؛ بعض
تستخدم الأهداف أحدهما ، والبعض الآخر يستخدم الآخر ، والبعض الآخر يستخدم كلاهما.
-فثقب الباب يتم تمكينه افتراضيًا. -ف ثقب الباب2 ممكن على المستويات -O2, -O3, -أوس.
احتمالية عدم وجود فرع تخمين
لا تخمن احتمالات الفرع باستخدام الاستدلال.
يستخدم GCC الاستدلال لتخمين احتمالات الفرع إذا لم يتم توفيرها بواسطة
ملاحظات التنميط (-fprofile- أقواس). تستند هذه الاستدلالات على تدفق التحكم
رسم بياني. إذا تم تحديد بعض احتمالات الفروع بواسطة "__builtin_expect" ، فسيتم تحديد
يتم استخدام الاستدلال لتخمين احتمالات الفروع لبقية تدفق التحكم
الرسم البياني ، مع مراعاة معلومات "__builtin_expect". التفاعلات بين
يمكن أن يكون الاستدلال و "توقع_بناء_بناء" معقدًا ، وفي بعض الحالات ، قد يكون مفيدًا
لتعطيل الاستدلال بحيث تكون تأثيرات "__builtin_expect" أسهل
تفهم.
الافتراضي هو -fguess- فرع- احتمال على المستويات -O, -O2, -O3, -أوس.
كتل -freorder
أعد ترتيب الكتل الأساسية في الوظيفة المترجمة لتقليل عدد ما تم التقاطه
الفروع وتحسين منطقة الكود.
ممكن على المستويات -O2, -O3.
كتل-فريدر-والتقسيم
بالإضافة إلى إعادة ترتيب الكتل الأساسية في الوظيفة المترجمة ، من أجل تقليل
عدد الفروع والأقسام المأخوذة من الكتل الأساسية الساخنة والباردة إلى أقسام منفصلة
من ملفات التجميع و. o لتحسين أداء موقع الترحيل والتخزين المؤقت.
يتم إيقاف تشغيل هذا التحسين تلقائيًا في وجود معالجة الاستثناء ،
لأقسام linkonce ، وللوظائف التي لها سمة قسم محددة بواسطة المستخدم وعلى أي منها
العمارة التي لا تدعم الأقسام المسماة.
ممكّن لـ x86 على المستويات -O2, -O3.
وظائف -freorder
أعد ترتيب الوظائف في ملف الكائن من أجل تحسين موقع الكود. هذا هو
يتم تنفيذه باستخدام أقسام فرعية خاصة ".text.hot" لمعظم عمليات التنفيذ
وظائف و ".text.unlikely" للوظائف المنفذة غير المحتملة. إعادة الترتيب تتم بواسطة
الرابط لذا يجب أن يدعم تنسيق ملف الكائن الأقسام المسماة ويجب أن يضع الرابط
بطريقة معقولة.
يجب أيضًا أن تكون تعليقات الملف الشخصي متاحة لجعل هذا الخيار فعالاً. ارى
-fprofile- أقواس للتفاصيل.
ممكن على المستويات -O2, -O3, -أوس.
-تعرج صارم
اسمح للمترجم بافتراض قواعد التسمية الأكثر صرامة المطبقة على اللغة
يجري تجميعها. بالنسبة لـ C (و C ++) ، يؤدي ذلك إلى تنشيط التحسينات بناءً على نوع
التعبيرات. على وجه الخصوص ، يُفترض أن كائنًا من نوع واحد لا يقيم أبدًا في
نفس العنوان ككائن من نوع مختلف ، ما لم تكن الأنواع متشابهة تقريبًا.
على سبيل المثال ، يمكن أن يطلق على "int غير موقعة" الاسم المستعار "int" ، ولكن ليس "void *" أو "double". أ
قد يكون نوع الحرف مستعارًا لأي نوع آخر.
انتبه بشكل خاص إلى الكود مثل هذا:
الاتحاد a_union {
أنا
مزدوج د ؛
};
int f () {
الاتحاد a_union t ؛
الدفتيريا = 3.0 ؛
عودة تي
}
ممارسة القراءة من عضو نقابي مختلف عن آخر عضو نقابي
الكتابة إلى (تسمى "نوع العقاب") أمر شائع. حتى مع -تعرج صارم، نوع-
يُسمح بالتعاقب ، بشرط الوصول إلى الذاكرة من خلال نوع الاتحاد. لذلك
كود أعلاه يعمل كما هو متوقع. ومع ذلك ، قد لا يكون هذا الرمز:
int f () {
الاتحاد a_union t ؛
int * ip ؛
الدفتيريا = 3.0 ؛
ip = & t.i ؛
عودة * ip ؛
}
وبالمثل ، يمكنك الوصول عن طريق أخذ العنوان ، وإلقاء المؤشر الناتج و
إلغاء الإشارة إلى النتيجة له سلوك غير محدد ، حتى إذا كان المصبوب يستخدم نوعًا موحدًا ،
على سبيل المثال:
int f () {
مزدوج د = 3.0 ؛
العودة ((الاتحاد a_union *) & د) -> أنا ؛
}
تشير -تعرج صارم يتم تمكين الخيار على المستويات -O2, -O3, -أوس.
- تجاوز الحد
اسمح للمترجم بافتراض قواعد تجاوز موقعة صارمة ، اعتمادًا على اللغة
يجري تجميعها. بالنسبة لـ C (و C ++) ، فهذا يعني أن الفائض عند إجراء العمليات الحسابية باستخدام
الأرقام الموقعة غير محددة ، مما يعني أن المترجم قد يفترض أنه لا يفعل ذلك
يحدث. هذا يسمح بالعديد من التحسينات. على سبيل المثال ، يفترض المترجم ذلك
تعبير مثل "i + 10> i" يكون دائمًا صحيحًا بالنسبة إلى "i" الموقعة. هذا الافتراض
صالح فقط إذا كان تجاوز السعة الموقع غير محدد ، حيث يكون التعبير خطأ إذا كان "i + 10"
فيضان عند استخدام حسابين مكملين. عندما يكون هذا الخيار ساري المفعول أي
محاولة تحديد ما إذا كان يجب كتابة عملية على فائض الأرقام الموقعة
بعناية حتى لا تنطوي في الواقع على تجاوز.
يسمح هذا الخيار أيضًا للمترجم بافتراض دلالات المؤشر الصارمة: معطى أ
مؤشر إلى كائن ، إذا كانت إضافة إزاحة إلى ذلك المؤشر لا ينتج عنها مؤشر
إلى نفس الكائن ، فإن الإضافة غير محددة. هذا يسمح للمترجم أن يستنتج
أن "p + u> p" يكون دائمًا صحيحًا للمؤشر "p" وعدد صحيح بدون إشارة "u". هذه
الافتراض صالح فقط لأن التفاف المؤشر غير معرف ، كما هو التعبير
خطأ إذا فاضت "p + u" باستخدام حسابين متمملين.
انظر أيضا -فرابف اختيار. استخدام -فرابف يعني أن تجاوز عدد صحيح وقع هو
محدد بالكامل: يلتف. متي -فرابف يستخدم ، لا فرق بين
- تجاوز الحد -fno- صارم- تجاوز للأعداد الصحيحة. مع -فرابف أنواع معينة
من تجاوز مسموح به. على سبيل المثال ، إذا حصل المترجم على تجاوز عند القيام بذلك
حسابية على الثوابت ، لا يزال من الممكن استخدام القيمة الفائضة مع -فرابف، ولكن ليس
غير ذلك.
تشير - تجاوز الحد يتم تمكين الخيار على المستويات -O2, -O3, -أوس.
وظائف المحاذاة
وظائف المحاذاة =n
قم بمحاذاة بداية الوظائف مع القوة التالية التي تكون أكبر من n، يتخطى ما يصل إلى n
بايت. على سبيل المثال، - وظائف المحاذاة = 32 يقوم بمحاذاة الوظائف إلى 32 بايت التالية
الحدود ، ولكن - وظائف المحاذاة = 24 يتماشى مع حد 32 بايت التالي فقط إذا كان هذا
يمكن أن يتم ذلك عن طريق تخطي 23 بايت أو أقل.
-fno- محاذاة وظائف - وظائف المحاذاة = 1 متكافئة وتعني أن الوظائف
لا تتماشى.
بعض المجمعات تدعم فقط هذه العلامة عندما n هي قوة اثنين في هذه الحالة ، هو
تقريبًا.
If n لم يتم تحديده أو أنه صفر ، استخدم الإعداد الافتراضي المعتمد على الجهاز.
ممكن على المستويات -O2, -O3.
-ملصقات المحاذاة
-ملصقات المحاذاة =n
قم بمحاذاة جميع أهداف الفروع مع حد أس اثنين ، والتخطي إلى الأعلى n بايت مثل
وظائف المحاذاة. هذا الخيار يمكن أن يجعل الكود أبطأ بسهولة ، لأنه يجب أن يُدرج
عمليات وهمية عندما يتم الوصول إلى هدف الفرع في التدفق المعتاد للشفرة.
-fno- محاذاة-تسميات -ملصقات المحاذاة = 1 متكافئة وتعني أن التسميات ليست كذلك
محاذاة.
If حلقات محاذاة or -محاذي-يقفز قابلة للتطبيق وأكبر من هذه القيمة ، إذن
يتم استخدام قيمهم بدلاً من ذلك.
If n لم يتم تحديده أو أنه صفر ، استخدم قيمة افتراضية تعتمد على الآلة وهو أمر محتمل جدًا
أن تكون 1، مما يعني عدم وجود محاذاة.
ممكن على المستويات -O2, -O3.
حلقات محاذاة
حلقات محاذاة =n
قم بمحاذاة الحلقات إلى حد أس اثنين ، مع تخطي ما يصل إلى n بايت مثل وظائف المحاذاة.
إذا تم تنفيذ الحلقات عدة مرات ، فهذا يعوض عن أي إعدام للدمية
العمليات.
-fno- محاذاة الحلقات حلقات محاذاة = 1 متكافئة وتعني أن الحلقات ليست كذلك
محاذاة.
If n لم يتم تحديده أو أنه صفر ، استخدم الإعداد الافتراضي المعتمد على الجهاز.
ممكن على المستويات -O2, -O3.
-محاذي-يقفز
- يقفز محاذاة =n
قم بمحاذاة أهداف الفرع إلى حد قوة اثنين ، لأهداف الفرع حيث الأهداف
لا يمكن الوصول إليه إلا بالقفز والتخطي لأعلى n بايت مثل وظائف المحاذاة. في
في هذه الحالة ، لا يلزم تنفيذ أي عمليات وهمية.
-fno- محاذاة يقفز - يقفز محاذاة = 1 متكافئة وتعني أن الحلقات ليست كذلك
محاذاة.
If n لم يتم تحديده أو أنه صفر ، استخدم الإعداد الافتراضي المعتمد على الجهاز.
ممكن على المستويات -O2, -O3.
-الوحدة في وقت واحد
تم ترك هذا الخيار لأسباب التوافق. -الوحدة في وقت واحد ليس له تأثير ، بينما
-fno-وحدة في وقت يدل -fno-أعلى مستوى-إعادة الترتيب - قسم المراسي.
يتم التمكين افتراضيًا.
-fno-أعلى مستوى-إعادة الترتيب
لا تعيد ترتيب وظائف المستوى الأعلى والمتغيرات وعبارات "ASM". إخراجها في
بنفس الترتيب الذي تظهر به في ملف الإدخال. عند استخدام هذا الخيار ،
لا يتم إزالة المتغيرات الثابتة غير المشار إليها. هذا الخيار مخصص لدعم
الكود الحالي الذي يعتمد على ترتيب معين. للحصول على رمز جديد ، من الأفضل استخدامه
السمات عندما يكون ذلك ممكنًا.
ممكن على المستوى -O0. عند تعطيله بشكل صريح ، فإنه يعني أيضًا - قسم المراسي,
والذي يتم تمكينه بطريقة أخرى في -O0 على بعض الأهداف.
-ويب
يُنشئ شبكات على النحو الشائع الاستخدام لأغراض تخصيص التسجيل وتعيين كل موقع ويب
سجل زائف فردي. هذا يسمح لتمرير تخصيص السجل بالعمل
الصور الزائفة بشكل مباشر ، ولكنها تقوي أيضًا العديد من ممرات التحسين الأخرى ، مثل محرك البحث المخصص ،
حلقة محسن ومزيل رمز ميت تافه. ومع ذلك ، يمكنه إجراء تصحيح الأخطاء
مستحيل ، لأن المتغيرات لم تعد تبقى في "سجل المنزل".
ممكن بشكل افتراضي مع حلقات -funroll.
-كل-البرنامج
افترض أن وحدة الترجمة الحالية تمثل البرنامج الذي يتم تجميعه بالكامل.
جميع الوظائف والمتغيرات العامة باستثناء "main" وتلك المدمجة بواسطة
السمة "externally_visible" تصبح وظائف ثابتة ويتم تحسينها في الواقع
بشكل أكثر عدوانية من قبل محسنو الطب البديل.
لا ينبغي استخدام هذا الخيار مع -فلتو. بدلا من الاعتماد على رابط
يجب أن يوفر المكون الإضافي معلومات أكثر أمانًا ودقة.
-فلتو [=n]
يقوم هذا الخيار بتشغيل مُحسِّن وقت الارتباط القياسي. عندما يتم استدعاؤه مع شفرة المصدر ، فإنه
يولد GIMPLE (أحد التمثيلات الداخلية لدول مجلس التعاون الخليجي) ويكتبها إلى ELF خاص
أقسام في ملف الكائن. عندما يتم ربط ملفات الكائن معًا ، فإن كل ملفات
تتم قراءة الهيئات الوظيفية من أقسام ELF هذه ويتم إنشاء مثيل لها كما لو كانت كذلك
جزء من نفس وحدة الترجمة.
لاستخدام مُحسِّن وقت الارتباط ، -فلتو ويجب تحديد خيارات التحسين في
تجميع الوقت وأثناء الارتباط النهائي. على سبيل المثال:
دول مجلس التعاون الخليجي -c -O2 -flto foo.c
دول مجلس التعاون الخليجي -c -O2-flto bar.c
دول مجلس التعاون الخليجي -o myprog -flto -O2 foo.o bar.o
يحفظ أول استدعائين لمجلس التعاون الخليجي تمثيل الرمز الثانوي لـ GIMPLE في خاص
أقسام ELF بالداخل foo.o بار. يقرأ الاستدعاء الأخير رمز GIMPLE الثانوي
تبدأ من foo.o بار، يدمج الملفين في صورة داخلية واحدة ، ويجمع
النتيجة كالمعتاد. منذ كلاهما foo.o بار يتم دمجها في صورة واحدة ، هذا
يتسبب في عمل جميع التحليلات والتحسينات ما بين الإجراءات في دول مجلس التعاون الخليجي عبر
ملفين كما لو كانا واحد. هذا يعني ، على سبيل المثال ، أن الخط الداخلي هو
قادرة على مضمنة الوظائف في بار في وظائف في foo.o والعكس صحيح.
هناك طريقة أخرى (أبسط) لتمكين تحسين وقت الارتباط وهي:
دول مجلس التعاون الخليجي -o myprog -flto -O2 foo.c bar.c
ما سبق يولد رمز بايت لـ foo.c بار ج، يدمجهم معًا في ملف واحد
تمثيل GIMPLE وتحسينها كالمعتاد لإنتاجها myprog.
الشيء الوحيد المهم الذي يجب مراعاته هو تمكين تحسينات وقت الارتباط
بحاجة إلى استخدام برنامج التشغيل GCC لأداء خطوة الارتباط. ثم يؤدي GCC تلقائيًا
تحسين وقت الارتباط إذا تم تجميع أي من الكائنات المعنية باستخدام -فلتو
خيار سطر الأوامر. يجب عليك بشكل عام تحديد خيارات التحسين التي سيتم استخدامها
لتحسين وقت الارتباط على الرغم من أن دول مجلس التعاون الخليجي تحاول أن تكون ذكية في تخمين التحسين
مستوى لاستخدامه من الخيارات المستخدمة في وقت الترجمة إذا فشلت في تحديد واحد على الرابط-
زمن. يمكنك دائمًا تجاوز القرار التلقائي لإجراء تحسين وقت الارتباط على
ربط الوقت بالمرور -fno- لتو لأمر الارتباط.
لجعل تحسين البرنامج بأكمله فعالا ، من الضروري جعل بعض الشيء كله
افتراضات البرنامج. يحتاج المترجم إلى معرفة الوظائف والمتغيرات التي يمكن أن تكون
يتم الوصول إليها بواسطة المكتبات ووقت التشغيل خارج الوحدة المُحسَّنة لوقت الارتباط. متي
بدعم من الرابط ، البرنامج المساعد للرابط (انظر -fuse-linker-plugin) يمر، يمرر، اجتاز بنجاح
معلومات للمترجم عن الرموز المستخدمة والمرئية خارجيًا. عندما
المكوِّن الإضافي للرابط غير متوفر ، -كل-البرنامج يجب استخدامها للسماح للمترجم
لإجراء هذه الافتراضات ، مما يؤدي إلى اتخاذ قرارات تحسين أكثر صرامة.
متى -fuse-linker-plugin لم يتم تمكينه بعد ذلك ، عندما يتم تجميع ملف بامتداد -فلتوأطلقت حملة
ملف الكائن الذي تم إنشاؤه أكبر من ملف الكائن العادي لأنه يحتوي على GIMPLE
أكواد بايت والرمز النهائي المعتاد (انظر -فتات-ليتو الأشياء. هذا يعني هذا الكائن
يمكن ربط الملفات التي تحتوي على معلومات LTO كملفات كائن عادية ؛ لو -fno- لتو تم تمريره
إلى الرابط ، لا يتم تطبيق تحسينات interprocedural. لاحظ أن متى
- الدهون - ليتو الأجسام تم تمكين مرحلة الترجمة أسرع ولكن لا يمكنك تنفيذ
رابط عادي وغير LTO عليها.
بالإضافة إلى ذلك ، فإن علامات التحسين المستخدمة في تجميع الملفات الفردية ليست كذلك
تتعلق بالضرورة بتلك المستخدمة في وقت الارتباط. على سبيل المثال،
دول مجلس التعاون الخليجي -c -O0 -ffat-lto-object -flto foo.c
دول مجلس التعاون الخليجي -c -O0 -ffat-lto-object -flto bar.c
مجلس التعاون الخليجي -o myprog -O3 foo.o bar.o
ينتج عن هذا ملفات كائنات فردية برمز مجمّع غير محسّن ، ولكن ملف
الناتج الثنائي myprog هو الأمثل في -O3. إذا ، بدلاً من ذلك ، فإن الثنائي النهائي هو
ولدت مع -fno- لتو، ثم myprog لم يتم تحسينه.
عند إنتاج الثنائي النهائي ، يطبق GCC فقط تحسينات وقت الارتباط لتلك
الملفات التي تحتوي على كود بايت. لذلك ، يمكنك مزج ومطابقة ملفات الكائنات وملفات
مكتبات مع رموز بايت GIMPLE وكود كائن نهائي. مجلس التعاون الخليجي يختار تلقائيا
الملفات التي سيتم تحسينها في وضع LTO وأي الملفات سيتم ربطها بدون المزيد
معالجة.
هناك بعض إشارات إنشاء الكود التي يحتفظ بها مجلس التعاون الخليجي عند إنشاء رموز بايت ، مثل
يجب استخدامها أثناء مرحلة الارتباط النهائي. بشكل عام الخيارات المحددة في
تجاوز وقت الارتباط تلك المحددة في وقت الترجمة.
إذا لم تحدد خيار مستوى التحسين -O في وقت الارتباط ثم يحسب GCC
واحد يعتمد على مستويات التحسين المستخدمة عند تجميع ملفات الكائن. ال
أعلى مستوى من التحسين يفوز هنا.
حاليًا ، يتم أخذ الخيارات التالية وإعداداتها من ملف الكائن الأول
التي حددتها بوضوح: -fPIC, -fpic, -fpie, -مألوف, - الاستثناءات,
- عدم الاستثناءات, -فنو- tm وجميع -m أعلام الهدف.
يلزم وجود أعلام معينة لتغيير ABI للتوافق في جميع وحدات الترجمة والمحاولة
لتجاوز هذا في وقت الارتباط بقيمة متضاربة يتم تجاهلها. هذا يشمل
خيارات مثل -freg- هيكل- العودة -fpcc-Struct-return.
خيارات أخرى مثل - عقد, -fno- صارم- تجاوز, -فرابف, -فنو- trapv or
-fno- صارم- التعرج يتم تمريرها إلى مرحلة الارتباط ودمجها بشكل متحفظ
لوحدات الترجمة المتضاربة. خاصة -fno- صارم- تجاوز, -فرابف
-فنو- trapv تأخذ الأسبقية وعلى سبيل المثال -ffp- عقد = إيقاف له الأسبقية
-ffp-Contract = سريع. يمكنك تجاوزها في linke-time.
من المستحسن أن تقوم بتجميع كافة الملفات المشاركة في نفس الارتباط باستخدام
نفس الخيارات وكذلك تحديد تلك الخيارات في وقت الارتباط.
إذا واجهت LTO كائنات ذات ارتباط C تم إعلانه بأنواع غير متوافقة بشكل منفصل
يتم ربط وحدات الترجمة معًا (سلوك غير محدد وفقًا لمعيار ISO C99
6.2.7) ، قد يتم إصدار تشخيص غير مميت. السلوك لا يزال غير محدد في المدى
زمن. قد يتم رفع تشخيصات مماثلة للغات أخرى.
ميزة أخرى لـ LTO هي أنه من الممكن تطبيق تحسينات ما بين الإجراءات
على ملفات مكتوبة بلغات مختلفة:
دول مجلس التعاون الخليجي -c -flto foo.c
g ++ -c -flto bar.cc
غفورتران -c -flto baz.f90
g ++ -o myprog -flto -O3 foo.o bar.o baz.o -lgfortran
لاحظ أن الارتباط النهائي قد تم باستخدام ز ++ للحصول على مكتبات وقت تشغيل C ++ وملفات
-لغفورتران تمت إضافته للحصول على مكتبات وقت تشغيل Fortran. بشكل عام عند الخلط
اللغات في وضع LTO ، يجب استخدام نفس خيارات أوامر الارتباط كما هو الحال عند المزج
اللغات في تجميع منتظم (غير LTO).
إذا تم تخزين ملفات الكائنات التي تحتوي على رمز GIMPLE bytecode في أرشيف مكتبة ، على سبيل المثال
libfoo.a، فمن الممكن استخراجها واستخدامها في ارتباط LTO إذا كنت تستخدم ملف
رابط مع دعم البرنامج المساعد. لإنشاء مكتبات ثابتة مناسبة لـ LTO ، استخدم دول مجلس التعاون الخليجي-ع
رانليب مجلس التعاون الخليجي بدلا من ar رانليب؛ لإظهار رموز ملفات الكائن بامتداد
GIMPLE bytecode ، استخدم دول مجلس التعاون الخليجي - نانومتر. تلك الأوامر تتطلب ذلك ar, رانليب nm وكانت
تم تجميعها مع دعم البرنامج المساعد. في وقت الارتباط ، استخدم العلم -fuse-linker-plugin إلى
تأكد من أن المكتبة تشارك في عملية تحسين LTO:
دول مجلس التعاون الخليجي -o myprog -O2 -flto -fuse-linker-plugin ao bo -lfoo
مع تمكين المكون الإضافي للرابط ، يستخرج الرابط ملفات GIMPLE المطلوبة من
libfoo.a ويمررها إلى دول مجلس التعاون الخليجي الجارية لجعلها جزءًا من المجموع
سيتم تحسين صورة GIMPLE.
إذا كنت لا تستخدم رابطًا مع دعم البرنامج المساعد و / أو لا تقم بتمكين الرابط
البرنامج المساعد ، ثم العناصر الموجودة بداخله libfoo.a يتم استخراجها وربطها كالعادة ، لكنهم
لا تشارك في عملية تحسين LTO. من أجل إنشاء مكتبة ثابتة
مناسب لكل من تحسين LTO والربط المعتاد ، قم بتجميع ملفات الكائنات باستخدام
-فلتو -فتات-ليتو الأشياء.
لا تتطلب تحسينات وقت الارتباط وجود البرنامج بأكمله للعمل.
إذا كان البرنامج لا يتطلب أي رموز ليتم تصديرها ، فمن الممكن دمجها
-فلتو -كل-البرنامج للسماح للمحسّنين متعددي الإجراءات باستخدام المزيد
افتراضات صارمة قد تؤدي إلى تحسين فرص التحسين. استخدام
-كل-البرنامج ليست هناك حاجة عندما يكون البرنامج المساعد رابط نشط (انظر -fuse-linker-plugin).
لا يقوم التنفيذ الحالي لـ LTO بأي محاولة لإنشاء رمز ثانوي
محمول بين أنواع مختلفة من المضيفين. يتم إصدار ملفات بايت كود وهناك
يعد فحصًا صارمًا للإصدار ، لذا فإن ملفات الرمز البايت التي تم إنشاؤها في إصدار واحد من GCC لا تفعل ذلك
العمل مع إصدار أقدم أو أحدث من GCC.
لا يعمل تحسين وقت الارتباط بشكل جيد مع إنشاء معلومات تصحيح الأخطاء.
الجمع بين -فلتو مع -g قيد التجربة حاليًا ومن المتوقع أن ينتج عنه نتائج غير متوقعة
النتائج.
إذا قمت بتحديد الاختيارية n، يتم إجراء التحسين وإنشاء الكود في وقت الارتباط
يتم تنفيذه بالتوازي باستخدام n وظائف موازية من خلال استخدام مثبت جعل برنامج.
متغير البيئة جعل يمكن استخدامها لتجاوز البرنامج المستخدم. الافتراضي
قيمة ل n هو 1.
يمكنك أيضا تحديد -flto = خادم العمل لاستخدام وضع خادم عمل GNU make لتحديد
عدد الوظائف الموازية. هذا مفيد عندما يكون Makefile استدعاء GCC بالفعل
تنفيذ بالتوازي. يجب عليك مقدمًا أ + إلى وصفة الأمر في الوالد
Makefile لهذا العمل. من المحتمل أن يعمل هذا الخيار فقط إذا جعل هو صنع غنو.
- التقسيم - فلو =ALG
حدد خوارزمية التقسيم المستخدمة بواسطة مُحسِّن وقت الارتباط. القيمة
إما 1to1 لتحديد تقسيم يعكس ملفات المصدر الأصلية أو متوازن
لتحديد التقسيم إلى أجزاء متساوية الحجم (كلما أمكن ذلك) أو ماكس لخلق
قسم جديد لكل رمز حيثما أمكن ذلك. التحديد لا شيء كخوارزمية
يعطل التقسيم والتدفق تمامًا. النظام الأساسي متوازن. في حين
1to1 يمكن استخدامها كحل بديل للعديد من مشكلات طلب التعليمات البرمجية ، مثل ماكس
التقسيم مخصص للاختبار الداخلي فقط. القيمة صورة واحدة؟ يحدد ذلك
يجب استخدام قسم واحد بالضبط أثناء القيمة لا شيء يتجاوز التقسيم و
ينفذ خطوة تحسين وقت الارتباط مباشرة من مرحلة WPA.
دمج نوع flto-odr
تفعيل دفق أسماء الأنواع المشوهة لأنواع C ++ وتوحيدها في
لينك تايم. يؤدي هذا إلى زيادة حجم ملفات كائن LTO ، ولكن مع تمكين تشخيص واحد
تعريف مخالفات القاعدة.
-فلتو-مستوى الضغط =n
يحدد هذا الخيار مستوى الضغط المستخدم للغة الوسيطة المكتوبة
إلى ملفات كائن LTO ، ويكون مفيدًا فقط مع وضع LTO (-فلتو).
القيم الصالحة هي 0 (بدون ضغط) إلى 9 (أقصى ضغط). قيم خارج هذا
يتم تثبيت النطاق على إما 0 أو 9. إذا لم يتم توفير الخيار ، فسيتم توازن افتراضي
يتم استخدام إعداد الضغط.
-التقرير
طباعة تقرير بتفاصيل داخلية عن طريقة عمل مُحسِّن وقت الارتباط. ال
محتويات هذا التقرير تختلف من إصدار إلى آخر. من المفترض أن تكون مفيدة لدول مجلس التعاون الخليجي
للمطورين عند معالجة ملفات الكائنات في وضع LTO (عبر -فلتو).
معطل افتراضيًا.
-Flto-report-wpa
اعجاب -التقرير، ولكن اطبع فقط لمرحلة WPA من Link Time Optimization.
-fuse-linker-plugin
لتمكين استخدام المكون الإضافي للرابط أثناء تحسين وقت الارتباط. هذا الخيار يعتمد
على دعم البرنامج المساعد في الرابط ، والمتوفر باللون الذهبي أو في GNU ld 2.21 أو
أحدث.
يتيح هذا الخيار استخراج ملفات الكائنات باستخدام رمز بايت GIMPLE خارج المكتبة
أرشيف. يؤدي ذلك إلى تحسين جودة التحسين من خلال عرض المزيد من التعليمات البرمجية على الرابط-
مُحسِّن الوقت. تحدد هذه المعلومات الرموز التي يمكن الوصول إليها خارجيًا
(بواسطة كائن غير LTO أو أثناء الارتباط الديناميكي). نتيجة تحسين جودة التعليمات البرمجية على
الثنائيات (والمكتبات المشتركة التي تستخدم الرؤية المخفية) تشبه
-كل-البرنامج. شاهد -فلتو للحصول على وصف لتأثير هذا العلم وكيفية
استخدامها.
يتم تمكين هذا الخيار افتراضيًا عند تمكين دعم LTO في GCC وتمكين GCC
مهيأ للاستخدام مع المكونات الإضافية الداعمة للرابط (GNU ld 2.21 أو الأحدث أو الذهبي).
-فتات-ليتو الأشياء
كائنات Fat LTO هي ملفات كائن تحتوي على كل من اللغة الوسيطة و
رمز التعليمة. هذا يجعلها قابلة للاستخدام لكل من ربط LTO والربط العادي. هذه
الخيار فعال فقط عند التحويل البرمجي باستخدام -فلتو ويتم تجاهله في وقت الارتباط.
- الدهون - ليتو الأجسام يعمل على تحسين وقت الترجمة مقارنةً بـ LTO العادي ، ولكنه يتطلب
سلسلة أدوات كاملة لتكون على دراية بـ LTO. يتطلب رابط مع دعم البرنامج المساعد رابط
للوظائف الأساسية. بالإضافة إلى، nm, ar رانليب بحاجة لدعم رابط
المكونات الإضافية للسماح ببيئة بناء كاملة الميزات (قادرة على إنشاء ملفات ثابتة
المكتبات ، إلخ). يوفر دول مجلس التعاون الخليجي دول مجلس التعاون الخليجي-ع, دول مجلس التعاون الخليجي - نانومتر, رانليب مجلس التعاون الخليجي مغلفة لتمرير
الخيارات الصحيحة لهذه الأدوات. مع makefiles الخالي من الدهون تحتاج إلى تعديل لاستخدامها
لهم.
الافتراضي هو - الدهون - ليتو الأجسام على الأهداف مع دعم البرنامج المساعد رابط.
-مقارنة-القضاء
بعد تخصيص السجل وتقسيم تعليمات التخصيص بعد التسجيل ، حدد
التعليمات الحسابية التي تحسب أعلام المعالج المشابهة لعملية المقارنة
بناء على هذا الحساب. إذا أمكن ، قم بإزالة عملية المقارنة الصريحة.
ينطبق هذا التمرير فقط على أهداف معينة لا يمكنها تمثيل
عملية المقارنة قبل اكتمال تخصيص التسجيل.
ممكن على المستويات -O, -O2, -O3, -أوس.
سجلات fcprop
بعد تخصيص السجل وتقسيم تعليمات التخصيص بعد التسجيل ، نفذ
تصريح نشر نسخة لمحاولة تقليل تبعيات الجدولة وأحيانًا
القضاء على النسخة.
ممكن على المستويات -O, -O2, -O3, -أوس.
-fprofile- تصحيح
قد تكون الملفات الشخصية التي تم جمعها باستخدام ثنائي مُجهز للبرامج متعددة الخيوط
غير متسق بسبب عدم وجود تحديثات عداد. عند تحديد هذا الخيار ، يستخدم GCC
الاستدلال لتصحيح أو تسوية مثل هذه التناقضات. بشكل افتراضي ، يصدر GCC ملف
رسالة خطأ عند اكتشاف ملف تعريف غير متناسق.
-fprofile- دير =مسار
قم بتعيين الدليل للبحث عن ملفات بيانات ملف التعريف في مسار. هذا الخيار
يؤثر فقط على بيانات الملف الشخصي التي تم إنشاؤها بواسطة -fprofile- توليد, -تغطية -ftest,
-fprofile- أقواس وتستخدم من قبل -fprofile- استخدام -احتمالات-فرع وما يتصل بها
والخيارات. يمكن استخدام كل من المسارات المطلقة والنسبية. بشكل افتراضي ، يستخدم GCC امتداد الملف
الدليل الحالي باسم مسار، وبالتالي يظهر ملف بيانات الملف الشخصي في نفس الدليل مثل
ملف الكائن.
-fprofile- توليد
-fprofile- تولد =مسار
تمكين الخيارات المستخدمة عادة لتطبيق الأدوات لإنتاج ملف تعريف مفيد
لإعادة التجميع لاحقًا مع التحسين المستند إلى ملاحظات الملف الشخصي. عليك أن تستعمل
-fprofile- توليد سواء عند التجميع أو عند ربط البرنامج الخاص بك.
تم تمكين الخيارات التالية: -fprofile- أقواس, -fprofile- القيم, -fvpt.
If مسار محدد ، دول مجلس التعاون الخليجي تبحث في مسار للعثور على ملفات بيانات ملاحظات الملف الشخصي.
يرى -fprofile- دير.
-fprofile- استخدام
-fprofile- استخدام =مسار
قم بتمكين التحسينات الموجهة للتعليقات والموجهة للملف الشخصي ، والتحسينات التالية التي
مربحة بشكل عام فقط مع توفر ملاحظات الملف الشخصي: -احتمالات-فرع,
-fvpt, حلقات -funroll, حلقات تقشير, -ftracer, -ftree-vectorizeو حلقة ftree-
توزيع الأنماط.
بشكل افتراضي ، يرسل GCC رسالة خطأ إذا لم تتطابق ملفات تعريف الملاحظات مع ملف
مصدر الرمز. يمكن تحويل هذا الخطأ إلى تحذير باستخدام -التغطية-عدم تطابق.
لاحظ أن هذا قد يؤدي إلى رمز محسن بشكل سيئ.
If مسار محدد ، دول مجلس التعاون الخليجي تبحث في مسار للعثور على ملفات بيانات ملاحظات الملف الشخصي.
يرى -fprofile- دير.
-فاوتو الملف الشخصي
-فاوتو- الملف الشخصي =مسار
تمكين التحسينات المستندة إلى العينات والموجهة بالتعليقات والتحسينات التالية
والتي تعتبر مربحة بشكل عام فقط مع توفر ملاحظات الملف الشخصي:
-احتمالات-فرع, -fvpt, حلقات -funroll, حلقات تقشير, -ftracer,
-ftree-vectorize, وظائف الخطوط الدقيقة, -فيبا- CP, -فيبا- cp- استنساخ,
- المشتركة التنبؤية, حلقات-funswitch, -fgcse- بعد إعادة التحميلو
-توزيع-حلقة-توزيع-أنماط.
مسار هو اسم الملف الذي يحتوي على معلومات ملف تعريف AutoFDO. إذا تم حذفه
التخلف عن fbdata.afdo في الدليل الحالي.
يتطلب إنشاء ملف بيانات ملف تعريف AutoFDO تشغيل البرنامج بامتداد الأداء الإقتصادي الأداء
على نظام هدف GNU / Linux مدعوم. لمزيد من المعلومات، راجع
<https://perf.wiki.kernel.org/>.
على سبيل المثال
سجل الأداء - br_inst_retired: near_taken -b -o perf.data \
- your_program
ثم استخدم ملف create_gcov أداة لتحويل بيانات الملف الشخصي الأولية إلى تنسيق يمكن أن يكون
تستخدم من قبل دول مجلس التعاون الخليجي. يجب عليك أيضًا توفير الملف الثنائي غير المقيد لبرنامجك لهذا الغرض
أداة. ارىhttps://github.com/google/autofdo>.
على سبيل المثال
create_gcov --binary = your_program.unstripped --profile = perf.data \
--gcov = profile.afdo
تتحكم الخيارات التالية في سلوك المترجم فيما يتعلق بحساب الفاصلة العائمة.
هذه الخيارات تقايض بين السرعة والصواب. يجب تمكين كل شيء على وجه التحديد.
-متجر طائر
لا تقم بتخزين متغيرات الفاصلة العائمة في السجلات ، وقم بمنع الخيارات الأخرى التي
قد يتغير ما إذا كانت قيمة الفاصلة العائمة مأخوذة من سجل أو من الذاكرة.
يمنع هذا الخيار الدقة الزائدة غير المرغوب فيها على آلات مثل 68000 حيث
السجلات العائمة (68881) تحافظ على دقة أكثر مما يفترض أن تكون "مضاعفة"
امتلاك. وبالمثل بالنسبة لعمارة x86. بالنسبة لمعظم البرامج ، فإن الدقة الزائدة
جيد فقط ، لكن بعض البرامج تعتمد على التعريف الدقيق لـ IEEE floating
نقطة. يستخدم -متجر طائر لمثل هذه البرامج بعد تعديلها لتخزين كل شيء
الحسابات الوسيطة ذات الصلة في المتغيرات.
- الدقة الزائدة =نمط
يتيح هذا الخيار مزيدًا من التحكم في الدقة الزائدة في الآلات التي -
تحتوي سجلات النقاط على دقة أكثر من أنواع IEEE "float" و "double" و
المعالج لا يدعم عمليات التقريب لتلك الأنواع. بشكل افتراضي،
- الدقة الزائدة = سريع ساري المفعول هذا يعني أن العمليات تنفذ في
دقة السجلات وأنه لا يمكن التنبؤ بها عند التقريب إلى الأنواع
المحدد في التعليمات البرمجية المصدر. عند تجميع C ، إذا
- الدقة الزائدة = المعيار يتم تحديد ثم تتبع الدقة الزائدة القواعد
المحدد في ISO C99 ؛ على وجه الخصوص ، يتسبب كل من الممثلين والتخصيصات في أن تكون القيم كذلك
تقريبًا إلى أنواعها الدلالية (بينما -متجر طائر يؤثر فقط على المهام).
يتم تمكين هذا الخيار افتراضيًا لـ C إذا كان خيار توافق صارم مثل
-std = c99 .
- الدقة الزائدة = المعيار لم يتم تطبيقه للغات أخرى غير C ، ولا يحتوي على
تأثير إذا -ممتعة-الرياضيات-التحسينات or -فاست-الرياضيات محدد. على x86 ، فإنه
أيضا ليس له تأثير إذا -mfpmath = sse or -mfpmath = sse + 387 محدد؛ في السابق
الحالة ، تنطبق دلالات IEEE دون دقة زائدة ، وفي الحالة الأخيرة ، يكون التقريب
لا يمكن التنبؤ به.
-فاست-الرياضيات
يضبط الخيارات -fno-Math-Errno, -ممتعة-الرياضيات-التحسينات, - غير محدد - الرياضيات فقط,
-لا تقريب-الرياضيات, -fno-الإشارات- nans -fcx- محدود المدى.
يؤدي هذا الخيار إلى تعريف ماكرو المعالج المسبق "__FAST_MATH__".
لم يتم تشغيل هذا الخيار من قبل أي -O بجانب الخيار -سريع لأنه يمكن أن يؤدي إلى
مخرجات غير صحيحة للبرامج التي تعتمد على التنفيذ الدقيق لـ IEEE أو ISO
قواعد / مواصفات وظائف الرياضيات. ومع ذلك ، قد ينتج عنه رمز أسرع لـ
البرامج التي لا تتطلب ضمانات هذه المواصفات.
-fno-Math-Errno
لا تقم بتعيين "errno" بعد استدعاء وظائف الرياضيات التي يتم تنفيذها باستخدام واحد
التعليمات ، على سبيل المثال ، "sqrt". برنامج يعتمد على استثناءات IEEE للخطأ الرياضي
قد ترغب المعالجة في استخدام هذه العلامة للسرعة مع الحفاظ على حساب IEEE
التوافق.
لم يتم تشغيل هذا الخيار من قبل أي -O الخيار لأنه يمكن أن يؤدي إلى إخراج غير صحيح
للبرامج التي تعتمد على التنفيذ الدقيق لـ IEEE أو ISO
قواعد / مواصفات وظائف الرياضيات. ومع ذلك ، قد ينتج عنه رمز أسرع لـ
البرامج التي لا تتطلب ضمانات هذه المواصفات.
الافتراضي هو -فماث- يورنو.
في أنظمة داروين ، لم تقم مكتبة الرياضيات بتعيين "errno" أبدًا. لذلك لا يوجد سبب
للمترجم للنظر في إمكانية ذلك ، و -fno-Math-Errno هل
افتراضي.
-ممتعة-الرياضيات-التحسينات
السماح بالتحسينات لحساب الفاصلة العائمة التي (أ) تفترض أن الوسيطات و
النتائج صحيحة و (ب) قد تنتهك معايير IEEE أو ANSI. عند استخدامها في وقت الارتباط ،
قد يتضمن مكتبات أو ملفات بدء التشغيل التي تغير كلمة التحكم الافتراضية FPU أو
تحسينات أخرى مماثلة.
لم يتم تشغيل هذا الخيار من قبل أي -O الخيار لأنه يمكن أن يؤدي إلى إخراج غير صحيح
للبرامج التي تعتمد على التنفيذ الدقيق لـ IEEE أو ISO
قواعد / مواصفات وظائف الرياضيات. ومع ذلك ، قد ينتج عنه رمز أسرع لـ
البرامج التي لا تتطلب ضمانات هذه المواصفات. تمكن
-fno- موقعة- الأصفار, - الرياضيات, -الرياضيات الرياضيات المتبادلة.
الافتراضي هو -fno- غير آمنة- الرياضيات- التحسينات.
-الرياضيات
السماح بإعادة اقتران المعاملات في سلسلة من عمليات الفاصلة العائمة. هذه
ينتهك معيار لغة ISO C و C ++ من خلال احتمال تغيير نتيجة الحساب.
ملاحظة: إعادة الطلب قد يغير علامة الصفر وكذلك تجاهل NaNs ويمنع أو
إنشاء تدفق أو تجاوز (وبالتالي لا يمكن استخدامه في الكود الذي يعتمد على التقريب
سلوك مثل "(x + 2 ** 52) - 2 ** 52". قد يعيد ترتيب مقارنات الفاصلة العائمة و
وبالتالي لا يجوز استخدامها عندما تكون المقارنات المطلوبة مطلوبة. هذا الخيار يتطلب ذلك
على حد سواء -fno- موقعة- الأصفار - الرياضيات تكون سارية المفعول. علاوة على ذلك ، فهو لا يصنع
مع الكثير من المعنى -الرياضيات. بالنسبة لـ Fortran ، يتم تمكين الخيار تلقائيًا عندما
على حد سواء -fno- موقعة- الأصفار - الرياضيات سارية المفعول.
الافتراضي هو - الرياضيات الترابطية.
الرياضيات المتبادلة
السماح باستخدام مقلوب القيمة بدلاً من القسمة على القيمة إذا كان هذا
تمكن من التحسينات. على سبيل المثال ، يمكن استبدال "x / y" بـ "x * (1 / y)" ، وهو
مفيد إذا كان "(1 / y)" خاضعًا للتخلص من التعابير الفرعية الشائعة. لاحظ أن هذا
يفقد الدقة ويزيد من عدد التخبطات التي تعمل على القيمة.
الافتراضي هو - الرياضيات المتبادلة.
- غير محدد - الرياضيات فقط
السماح بالتحسينات لحساب الفاصلة العائمة التي تفترض أن الوسيطات و
النتائج ليست NaNs أو + -Infs.
لم يتم تشغيل هذا الخيار من قبل أي -O الخيار لأنه يمكن أن يؤدي إلى إخراج غير صحيح
للبرامج التي تعتمد على التنفيذ الدقيق لـ IEEE أو ISO
قواعد / مواصفات وظائف الرياضيات. ومع ذلك ، قد ينتج عنه رمز أسرع لـ
البرامج التي لا تتطلب ضمانات هذه المواصفات.
الافتراضي هو -لا-الرياضيات-محدودة فقط.
-fno- موقعة- الأصفار
السماح بالتحسينات لحساب الفاصلة العائمة التي تتجاهل توقيع الصفر.
يحدد IEEE الحسابي سلوك قيم +0.0 و -0.0 المميزة ، والتي بعد ذلك
يحظر تبسيط التعبيرات مثل x + 0.0 أو 0.0 * x (حتى مع
- غير محدد - الرياضيات فقط). يشير هذا الخيار إلى أن علامة النتيجة الصفرية ليست كذلك
كبير.
الافتراضي هو -موقع-الأصفار.
- الرياضيات
تجميع التعليمات البرمجية على افتراض أن عمليات الفاصلة العائمة لا يمكن أن تولد مرئيًا للمستخدم
الفخاخ. تتضمن هذه المصائد القسمة على الصفر ، والفيضان ، والنتيجة غير الدقيقة و
عملية غير صالحة. هذا الخيار يتطلب ذلك -fno-الإشارات- nans تكون سارية المفعول.
قد يسمح تعيين هذا الخيار بتعليمة برمجية أسرع إذا اعتمد المرء على حساب IEEE "بدون توقف" ،
على سبيل المثال.
هذا الخيار لا ينبغي أبدا أن يتم تشغيله من قبل أي -O الخيار لأنه يمكن أن يؤدي إلى
مخرجات غير صحيحة للبرامج التي تعتمد على التنفيذ الدقيق لـ IEEE أو ISO
قواعد / مواصفات وظائف الرياضيات.
الافتراضي هو -ftrapping-Math.
-الرياضيات
قم بتعطيل عمليات التحويل والتحسينات التي تفترض التقريب الافتراضي للفاصلة العائمة
سلوك. هذا هو تقريب إلى الصفر لجميع تحويلات الفاصلة العائمة إلى عدد صحيح ، و
تقريب إلى أقرب لجميع الاقتطاعات الحسابية الأخرى. يجب أن يكون هذا الخيار
محدد للبرامج التي تغير وضع تقريب FP ديناميكيًا ، أو قد يكون كذلك
يتم تنفيذها باستخدام وضع التقريب غير الافتراضي. يقوم هذا الخيار بتعطيل الطي الثابت لـ
تعبيرات الفاصلة العائمة في وقت الترجمة (والتي قد تتأثر بوضع التقريب)
والتحولات الحسابية غير الآمنة في وجود إشارة معتمدة
أوضاع التقريب.
الافتراضي هو -لا تقريب-الرياضيات.
هذا الخيار تجريبي ولا يضمن حاليًا تعطيل جميع GCC
التحسينات التي تتأثر بوضع التقريب. قد توفر الإصدارات المستقبلية من دول مجلس التعاون الخليجي
تحكم أفضل في هذا الإعداد باستخدام براغما "FENV_ACCESS" في C99. هذا سطر الأوامر
سيتم استخدام الخيار لتحديد الحالة الافتراضية لـ "FENV_ACCESS".
-إشارة- nans
قم بتجميع الكود على افتراض أن إشارات IEEE قد تولد مصائد مرئية للمستخدم أثناءها
عمليات الفاصلة العائمة. يؤدي تعيين هذا الخيار إلى تعطيل التحسينات التي قد تتغير
عدد الاستثناءات المرئية مع إشارات NaNs. هذا الخيار يعني
-ftrapping-Math.
يؤدي هذا الخيار إلى تعريف ماكرو المعالج المسبق "__SUPPORT_SNAN__".
الافتراضي هو -fno-الإشارات- nans.
هذا الخيار تجريبي ولا يضمن حاليًا تعطيل جميع GCC
التحسينات التي تؤثر على سلوك الإشارة NaN.
- ثابت واحد - الدقة
تعامل مع ثوابت الفاصلة العائمة كدقة مفردة بدلاً من التحويل الضمني
لهم لمضاعفة الدقة الثوابت.
-fcx- محدود المدى
عند التمكين ، يشير هذا الخيار إلى أن خطوة تقليل النطاق ليست ضرورية عند
أداء تقسيم معقد. أيضًا ، لا يوجد فحص ما إذا كانت نتيجة ملف
الضرب أو القسمة المعقدة هي "NaN + I * NaN" ، في محاولة لإنقاذ
الوضع في هذه الحالة. الافتراضي هو -fno-cx- نطاق محدود، ولكن تم تمكينه بواسطة
-فاست-الرياضيات.
يتحكم هذا الخيار في الإعداد الافتراضي لبرنامج ISO C99 "CX_LIMITED_RANGE".
ومع ذلك ، فإن الخيار ينطبق على جميع اللغات.
قواعد فورتران FCX
يتبع الضرب والقسمة المعقدة قواعد فورتران. يتم تقليل النطاق كما
جزء من القسمة المعقدة ، ولكن لا يوجد فحص ما إذا كانت نتيجة معقدة
الضرب أو القسمة هو "NaN + I * NaN" ، في محاولة لإنقاذ الموقف
في هذه الحالة.
الافتراضي هو قواعد -fno-cx-fortran.
تتحكم الخيارات التالية في التحسينات التي قد تعمل على تحسين الأداء ، ولكنها ليست كذلك
تم تمكينه من قبل أي -O والخيارات. يتضمن هذا القسم الخيارات التجريبية التي قد تنتج
كود معطل.
-احتمالات-فرع
بعد تشغيل برنامج المترجمة مع -fprofile- أقواس، يمكنك تجميعها مرة ثانية
استخدام -احتمالات-فرع، لتحسين عمليات التحسين بناءً على عدد المرات
تم أخذ كل فرع. عندما يتم تجميع البرنامج باستخدام -fprofile- أقواس مخارج ، فإنه يحفظ
يحسب تنفيذ القوس إلى ملف يسمى sourcename.gcda لكل ملف مصدر. ال
المعلومات في ملف البيانات هذا تعتمد بشكل كبير على بنية الملف الذي تم إنشاؤه
لذلك يجب عليك استخدام نفس شفرة المصدر ونفس خيارات التحسين لكليهما
مصنفات.
بدافع -احتمالات-فرع، دول مجلس التعاون الخليجي يضع أ REG_BR_PROB ملاحظة على كل منها JUMP_INSN
CALL_INSN. يمكن استخدام هذه لتحسين التحسين. حاليًا ، يتم استخدامها فقط
في مكان واحد: في reorg.c، بدلاً من تخمين المسار الذي من المرجح أن يقوم به الفرع
خذ REG_BR_PROB يتم استخدام القيم لتحديد المسار الذي يتم اتخاذه أكثر
في كثير من الأحيان.
-fprofile- القيم
إذا تم دمجها مع -fprofile- أقواس، فإنه يضيف التعليمات البرمجية بحيث تكون بعض البيانات حول قيم
يتم جمع التعبيرات في البرنامج.
بدافع -احتمالات-فرع، يقوم بقراءة البيانات التي تم جمعها من قيم التنميط
تعابير للاستخدام في التحسينات.
ممكن مع -fprofile- توليد -fprofile- استخدام.
-fprofile-reorder-وظائف
تقوم إعادة ترتيب الوظائف على أساس أدوات الملف الشخصي بجمع أول مرة يتم تنفيذها
للدالة وترتيب هذه الوظائف بترتيب تصاعدي.
ممكن مع -fprofile- استخدام.
-fvpt
إذا تم دمجها مع -fprofile- أقواس، هذا الخيار يوجه المترجم لإضافة رمز إلى
جمع معلومات حول قيم التعبيرات.
بدافع -احتمالات-فرع، يقوم بقراءة البيانات التي تم جمعها ويقوم بالفعل بتنفيذ
التحسينات على أساسها. تشمل التحسينات حاليًا تخصص
عمليات القسمة باستخدام المعرفة حول قيمة المقام.
-frename- تسجيلات
حاول تجنب التبعيات الخاطئة في التعليمات البرمجية المجدولة من خلال الاستفادة من السجلات المتبقية
أكثر بعد تخصيص التسجيل. هذا التحسين يفيد معظم المعالجات التي لديها الكثير
من السجلات. اعتمادًا على تنسيق معلومات التصحيح الذي يعتمده الهدف ،
ومع ذلك ، يمكن أن يجعل التصحيح مستحيلاً ، لأن المتغيرات لم تعد تبقى في "المنزل
تسجيل".
ممكن بشكل افتراضي مع حلقات -funroll حلقات تقشير.
-fschedule-الانصهار
يقوم بتمرير يعتمد على الهدف عبر تدفق التعليمات لجدولة التعليمات
من نفس النوع معًا لأن الآلة المستهدفة يمكنها تنفيذها بكفاءة أكبر إذا كانت كذلك
متاخمة لبعضها البعض في تدفق التعليمات.
ممكن على المستويات -O2, -O3, -أوس.
-ftracer
إجراء تكرار الذيل لتكبير حجم الكتلة الفائقة. يبسط هذا التحول
تدفق التحكم في الوظيفة مما يسمح بالتحسينات الأخرى للقيام بعمل أفضل.
ممكن مع -fprofile- استخدام.
حلقات -funroll
قم بفك الحلقات التي يمكن تحديد عدد تكراراتها في وقت الترجمة أو بناءً عليها
الدخول إلى الحلقة. حلقات -funroll يدل -frerun-cse-بعد الحلقة, -ويب
-frename- تسجيلات. يقوم أيضًا بتشغيل تقشير الحلقة الكامل (أي الإزالة الكاملة لـ
حلقات مع عدد صغير ثابت من التكرارات). هذا الخيار يجعل التعليمات البرمجية أكبر ، و
قد تجعلها تعمل بشكل أسرع أو لا.
ممكن مع -fprofile- استخدام.
-funroll- جميع الحلقات
قم بفك جميع الحلقات ، حتى إذا كان عدد التكرارات فيها غير مؤكد عندما تكون الحلقة
دخلت. هذا عادة ما يجعل البرامج تعمل بشكل أبطأ. -funroll- جميع الحلقات يعني أن
نفس الخيارات مثل حلقات -funroll.
حلقات تقشير
حلقات التقشير التي يوجد عنها معلومات كافية لا تتدحرج كثيرًا (من
ملاحظات الملف الشخصي). يقوم أيضًا بتشغيل تقشير الحلقة الكامل (أي الإزالة الكاملة لـ
حلقات مع عدد صغير ثابت من التكرارات).
ممكن مع -fprofile- استخدام.
-ثوابت حلقة -fmove
يُمكّن تمرير الحركة غير المتغيرة للحلقة في مُحسِّن حلقة RTL. ممكن على المستوى
-O1
حلقات-funswitch
انقل الفروع بشروط حلقة ثابتة خارج الحلقة ، مع نسخ مكررة من
حلقة على كلا الفرعين (معدلة حسب نتيجة الشرط).
- أقسام الوظائف
أقسام البيانات
ضع كل وظيفة أو عنصر بيانات في القسم الخاص به في ملف الإخراج إذا كان الهدف
يدعم الأقسام التعسفية. اسم الوظيفة أو اسم عنصر البيانات
يحدد اسم القسم في ملف الإخراج.
استخدم هذه الخيارات على الأنظمة حيث يمكن للرابط إجراء تحسينات لتحسينها
موقع المرجع في مساحة التعليمات. تستخدم معظم الأنظمة كائن ELF
تحتوي معالجات SPARC التي تعمل بنظام Solaris 2 على روابط بمثل هذه التحسينات.
قد يكون لدى AIX هذه التحسينات في المستقبل.
استخدم هذه الخيارات فقط عندما تكون هناك فوائد كبيرة من القيام بذلك. عندما انت
حدد هذه الخيارات ، يقوم المجمّع والرابط بإنشاء كائن أكبر وقابل للتنفيذ
الملفات وأيضا أبطأ. لا يمكنك استخدام GPROF على جميع الأنظمة إذا حددت هذا
الخيار ، وقد تواجهك مشكلات في تصحيح الأخطاء إذا حددت كلاً من هذا الخيار و
-g.
-متفروع- الهدف- تحميل- الأمثل
قم بإجراء تحسين تحميل سجل الهدف الفرعي قبل خيوط التمهيد / الخاتمة.
يمكن عادةً الكشف عن استخدام سجلات الهدف فقط أثناء إعادة التحميل ، وبالتالي الرفع
الأحمال من الحلقات والقيام بالجدولة بين الكتل يحتاج إلى تحسين منفصل
البشري.
-fbranch-target-load-optimize2
قم بإجراء تحسين تحميل سجل الهدف الفرعي بعد خيوط التمهيد / الخاتمة.
-fbtr- ب ب- خاص
عند إجراء تحسين تحميل سجل هدف الفرع ، لا تعيد استخدام هدف الفرع
يسجل داخل أي كتلة أساسية.
-حامي-فسك
قم بإصدار تعليمات برمجية إضافية للتحقق من وجود فائض في المخزن المؤقت ، مثل هجمات تحطيم المكدس. هذه
يتم عن طريق إضافة متغير guard إلى وظائف ذات كائنات ضعيفة. هذه
يتضمن الوظائف التي تستدعي "التخصيص" ، والوظائف ذات المخازن المؤقتة الأكبر من 8 بايت.
تتم تهيئة الواقيات عند إدخال وظيفة ثم فحصها عند ملف
وظيفة المخارج. إذا فشل فحص الحارس ، فستتم طباعة رسالة خطأ والبرنامج
المخارج.
-حامي-فستيك-الكل
اعجاب -حامي-فسك فيما عدا أن جميع الوظائف محمية.
- حامي - قوي
اعجاب -حامي-فسك ولكنها تتضمن وظائف إضافية يجب حمايتها --- هؤلاء
التي لها تعريفات مصفوفة محلية ، أو لها مراجع لعناوين الإطارات المحلية.
-فستاك-حامي-صريح
اعجاب -حامي-فسك ولكنه يحمي فقط تلك الوظائف التي لها الامتداد
سمة "stack_protect"
-fstdarg- اختيار
تحسين مقدمة وظائف الوسيطة المتغيرة فيما يتعلق باستخدام هؤلاء
الحجج.
ملاحظة: في Ubuntu 14.10 والإصدارات الأحدث ، - حامي - قوي تم تمكينه بواسطة
الافتراضي لـ C ، C ++ ، ObjC ، ObjC ++ ، إذا لم يكن أي من -fno-كومة-حامي, -نوستدليبولا
-تقرير تم العثور على.
-fsection- المراسي
حاول تقليل عدد حسابات العنوان الرمزي باستخدام "المرساة" المشتركة
الرموز لمعالجة الأشياء القريبة. يمكن أن يساعد هذا التحول في تقليل العدد
من إدخالات GOT وحصلت على وصول على بعض الأهداف.
على سبيل المثال ، تنفيذ الوظيفة التالية "foo":
ثابت الباحث أ ، ب ، ج ؛
int foo (void) {return a + b + c؛ }
عادةً ما تحسب عناوين المتغيرات الثلاثة ، ولكن إذا جمعتها باستخدام
-fsection- المراسي، فإنه يصل إلى المتغيرات من نقطة ربط مشتركة بدلاً من ذلك. ال
التأثير مشابه للرمز الكاذب التالي (وهو غير صالح C):
إنت فو (باطل)
{
تسجيل int * xr = & x ؛
إرجاع xr [& a - & x] + xr [& b - & x] + xr [& c - & x] ؛
}
لا تدعم جميع الأهداف هذا الخيار.
- معلمة الاسم=قيمنا
في بعض الأماكن ، يستخدم GCC ثوابت مختلفة للتحكم في مقدار التحسين
تم. على سبيل المثال ، لا يتضمن GCC وظائف مضمنة تحتوي على أكثر من معين
عدد التعليمات. يمكنك التحكم في بعض هذه الثوابت في سطر الأوامر
يستخدم ال - معلمة الخيار.
ترتبط أسماء المعلمات المحددة ومعنى القيم بـ
الداخلية للمترجم ، وخاضعة للتغيير دون إشعار في المستقبل
إطلاق.
في كل حالة ، فإن قيمنا هو عدد صحيح. الاختيارات المسموح بها ل الاسم هي:
نتيجة فرع متوقعة
عندما يُتوقع أن يتم أخذ الفرع باحتمالية أقل من هذه العتبة
(بالنسبة المئوية) ، إذًا يمكن التنبؤ بها جيدًا. الافتراضي هو 10.
أقصى حواف القفزة المتقاطعة
الحد الأقصى لعدد الحواف الواردة التي يجب مراعاتها في القفز المتقاطع. الخوارزمية
استعمل من قبل -القفز المتقاطع هو O (N ^ 2) في عدد الحواف الواردة لكل كتلة.
زيادة القيم تعني تحسينًا أكثر قوة ، مما يجعل وقت التجميع
زيادة مع تحسن طفيف على الأرجح في حجم الملف القابل للتنفيذ.
min-crossjump-insns
الحد الأدنى لعدد التعليمات التي يجب مطابقتها في نهاية كتلتين
قبل أداء القفز المتقاطع عليهم. يتم تجاهل هذه القيمة في الحالة
حيث يتم مطابقة جميع التعليمات الموجودة في الكتلة التي يتم القفز المتقاطع منها. ال
القيمة الافتراضية هي 5.
max-Grow-Copy-bb-insns
عامل توسيع حجم الكود الأقصى عند نسخ الكتل الأساسية بدلاً من
القفز. التوسع متعلق بتعليمات القفز. النظام الأساسي
8.
max-goto-الازدواجية الداخلية
الحد الأقصى لعدد التعليمات المراد نسخها إلى كتلة تنتقل إلى ملف
الانتقال المحسوب. لتجنب سلوك O (N ^ 2) في عدد من التمريرات ، عوامل دول مجلس التعاون الخليجي
تم حسابها في وقت مبكر من عملية التجميع ، وإلغاء عواملها حتى وقت متأخر
المستطاع. القفزات المحسوبة فقط في نهاية الكتل الأساسية بما لا يزيد عن الحد الأقصى-
إدخال التكرار غير محسوب. القيمة الافتراضية هي 8.
ماكس تأخير فتحة بحث insn
أقصى عدد من التعليمات التي يجب مراعاتها عند البحث عن تعليمات
املأ خانة التأخير. إذا كان أكثر من هذا العدد التعسفي من التعليمات
تم البحث عنها ، فإن توفير الوقت من ملء خانة التأخير ضئيل للغاية ، لذا توقف
يبحث. زيادة القيم تعني تحسينًا أكثر قوة ، مما يجعل
زيادة وقت التجميع مع تحسن طفيف ربما في وقت التنفيذ.
ماكس تأخير فتحة البحث المباشر
عند محاولة ملء فترات التأخير ، يجب مراعاة أقصى عدد من التعليمات
عند البحث عن كتلة بها معلومات تسجيل حية صالحة. زيادة هذا
القيمة المختارة بشكل تعسفي تعني تحسينًا أكثر قوة ، وزيادة
وقت التجميع. يجب إزالة هذه المعلمة عندما تكون شفرة فتحة التأخير
أعيد كتابتها للحفاظ على الرسم البياني للتحكم في التدفق.
ذاكرة max-gcse
الحد الأقصى التقريبي لمقدار الذاكرة الذي يمكن تخصيصه لأداء
التحسين الشامل للقضاء على التعبيرات الفرعية الشائعة. إذا كانت الذاكرة أكثر من
المحدد مطلوب ، لم يتم التحسين.
نسبة إدخال max-gcse
إذا كانت نسبة إدراجات التعبير إلى عمليات الحذف أكبر من هذه القيمة لـ
أي تعبير ، ثم يقوم RTL PRE بإدراج التعبير أو إزالته وبالتالي يترك
عمليات حسابية زائدة عن الحاجة جزئيًا في مسار التعليمات. النظام الأساسي
20
الحد الأقصى لطول القائمة المعلقة
يسمح العدد الأقصى لجدولة التبعيات المعلقة قبل مسح ملف
الوضع الحالي والبدء من جديد. يمكن وظائف كبيرة مع عدد قليل من الفروع أو المكالمات
إنشاء قوائم كبيرة بشكل مفرط تستهلك الذاكرة والموارد دون داع.
max-modulo-backtrack- محاولات
الحد الأقصى لعدد محاولات التراجع التي يجب أن يقوم بها المجدول عند الوضع
جدولة حلقة. يمكن أن تزيد القيم الأكبر وقت الترجمة بشكل كبير.
max-inline-insns- واحد
تتحكم العديد من المعلمات في بطانة الشجرة المستخدمة في دول مجلس التعاون الخليجي. هذا الرقم يحدد ال
الحد الأقصى لعدد التعليمات (المحسوبة في التمثيل الداخلي لدول مجلس التعاون الخليجي) في أ
وظيفة واحدة يعتبرها بطانة الشجرة للتضمين. هذا يؤثر فقط
تم الإعلان عن الدالات المضمنة والأساليب المطبقة في إعلان الفئة (C ++).
القيمة الافتراضية هي 400.
max-inline-insns- السيارات
عند استخدام وظائف الخطوط الدقيقة (متضمن في -O3) ، والكثير من الوظائف التي من شأنها
خلاف ذلك لا يتم النظر في تضمينها من قبل المترجم. إلى
هذه الوظائف ، حد مختلف (أكثر تقييدًا) مقارنة بالوظائف
يمكن تطبيق مضمن المعلن. القيمة الافتراضية هي 40.
سرعة مضمنة دقيقة
عندما يتجاوز تحسين الأداء المقدر للمتصل + وقت تشغيل المستدعى هذا
عتبة (في سابقة) ، يمكن أن تكون الوظيفة مضمنة بغض النظر عن الحد
- معلمة max-inline-insns- واحد - معلمة max-inline-insns- السيارات.
الوظائف الكبيرة
الحد الذي يحدد وظائف كبيرة حقًا. للوظائف الأكبر من هذا الحد
بعد التضمين ، يتم تقييد التضمين بواسطة - معلمة وظيفة كبيرة النمو. هذا
المعلمة مفيدة في المقام الأول لتجنب وقت التجميع الشديد الناتج عن عدم
الخوارزميات الخطية المستخدمة من قبل النهاية الخلفية. القيمة الافتراضية هي 2700.
وظيفة كبيرة النمو
يحدد أقصى نمو للوظيفة الكبيرة الناتجة عن التضمين في النسب المئوية. ال
القيمة الافتراضية هي 100 والتي تحد من نمو الدالة الكبير إلى 2.0 مرة من الأصل
حجم.
وحدات كبيرة
الحد الذي يحدد وحدة الترجمة الكبيرة. النمو الناجم عن تطعيم الوحدات
أكبر من هذا الحد مقيد بـ - معلمة نمو وحدة مضمنة. للوحدات الصغيرة
قد يكون هذا ضيقًا جدًا. على سبيل المثال ، ضع في اعتبارك وحدة تتكون من الوظيفة أ
هذا مضمن و B الذي يستدعي A ثلاث مرات فقط. إذا كانت B صغيرة بالنسبة إلى A ،
نمو الوحدة هو 300 \٪ ومع ذلك فإن هذا التضمين عاقل جدا. لكبير جدا
تتكون من وظائف صغيرة غير مبطنة ، ومع ذلك ، فإن النمو الكلي للوحدة
الحد مطلوب لتجنب الانفجار الأسي لحجم الكود. وهكذا لأصغر
وحدة ، يتم زيادة الحجم إلى - معلمة وحدات كبيرة قبل التقديم - معلمة
نمو وحدة مضمنة. الافتراضي هو 10000.
نمو وحدة مضمنة
يحدد أقصى نمو إجمالي لوحدة الترجمة الناتجة عن التضمين. ال
القيمة الافتراضية هي 20 مما يحد من نمو الوحدة إلى 1.2 مرة من الحجم الأصلي. البرد
الوظائف (سواء تم تمييزها بأنها باردة عبر سمة أو من خلال ملاحظات الملف الشخصي) ليست كذلك
تحتسب في حجم الوحدة.
ipcp- وحدة النمو
يحدد أقصى نمو إجمالي لوحدة الترجمة الناتجة عن interprocedural
التكاثر المستمر. القيمة الافتراضية هي 10 مما يحد من نمو الوحدة إلى 1.1
أضعاف الحجم الأصلي.
إطار مكدس كبير
الحد الذي يحدد إطارات مكدس كبيرة. بينما تحاول تضمين الخوارزمية
لعدم تجاوز هذا الحد كثيرا. القيمة الافتراضية هي 256 بايت.
نمو إطار مكدس كبير
يحدد أقصى نمو لإطارات المكدس الكبيرة الناتجة عن التضمين في النسب المئوية.
القيمة الافتراضية هي 1000 مما يحد من نمو إطار المكدس الكبير إلى 11 ضعفًا
الحجم الأصلي.
max-inline-insns- العودية
max-inline-insns- متكرر-تلقائي
يحدد الحد الأقصى لعدد التعليمات نسخة خارج الخط من self-
يمكن أن تنمو الدالة المضمنة العودية إلى عن طريق إجراء التبطين العودي.
- معلمة max-inline-insns- العودية ينطبق على الوظائف المعلنة مضمنة. ل
الدوال التي لم يتم التصريح عنها مضمنة ، يحدث التكرار المتكرر فقط عندما
وظائف الخطوط الدقيقة (متضمن في -O3) ممكّن ؛ - معلمة ماكس مضمنة insNS-
العودية التلقائي ينطبق بدلا من ذلك. القيمة الافتراضية هي 450.
أقصى عمق متكرر
ماكس مضمنة العودية العمق التلقائي
يحدد الحد الأقصى لعمق العودية المستخدم للتضمين العودي.
- معلمة أقصى عمق متكرر ينطبق على الوظائف المعلنة مضمنة. ل
الدوال التي لم يتم التصريح عنها مضمنة ، يحدث التكرار المتكرر فقط عندما
وظائف الخطوط الدقيقة (متضمن في -O3) ممكّن ؛ - معلمة ماكس-مضمنة- العودية-
العمق التلقائي ينطبق بدلا من ذلك. القيمة الافتراضية هي 8.
مين-مضمنة-العودية-الاحتمال
يعتبر التضمين العودي مربحًا فقط للوظيفة التي لها تكرار عميق في
متوسط ويمكن أن يضر لوظيفة ذات عمق عودي قليل عن طريق زيادة
حجم مقدمة أو مدى تعقيد جسم الوظيفة لمحسّنات أخرى.
عندما تتوفر ملاحظات الملف الشخصي (انظر -fprofile- توليد) العودية الفعلية
يمكن تخمين العمق من خلال احتمال تكرار الوظيفة عبر مكالمة معينة
التعبير. تحدد هذه المعلمة التضمين فقط لتعبيرات الاستدعاء التي
يتجاوز الاحتمال الحد المعطى (بالنسب المئوية). القيمة الافتراضية هي 10.
التطعيم المبكر
حدد النمو الذي يمكن أن يحققه البطانة المبكرة. في الواقع يزيد من المبلغ
للتضمين في الكود مع وجود عقوبة تجريدية كبيرة. القيمة الافتراضية هي 14.
ماكس في وقت مبكر inliner التكرارات
حد التكرارات للخط الداخلي المبكر. هذا يحد بشكل أساسي عدد
استدعاءات غير مباشرة متداخلة يمكن للخط الداخلي المبكر حلها. لا تزال سلاسل أعمق
تم التعامل معها عن طريق التطعيم المتأخر.
كومدات-تقاسم-احتمال
الاحتمال (بالنسبة المئوية) أن دالة C ++ المضمنة مع رؤية comdat هي
مشتركة عبر وحدات تجميع متعددة. القيمة الافتراضية هي 20.
الملف الشخصي- func- معرف داخلي
معلمة للتحكم في استخدام المعرف الداخلي للوظيفة في قاعدة بيانات ملف التعريف
ابحث عن. إذا كانت القيمة 0 ، يستخدم المترجم معرفًا يعتمد على الوظيفة
اسم المجمع واسم الملف ، مما يجعل بيانات الملف الشخصي القديمة أكثر تسامحًا مع المصدر
التغييرات مثل إعادة ترتيب الوظيفة وما إلى ذلك القيمة الافتراضية هي 0.
min-vect-loop-ملزمة
الحد الأدنى لعدد التكرارات التي لا يتم توجيه الحلقات في ظلها
-ftree-vectorize يستخدم. عدد التكرارات بعد التوجيه يحتاج إلى
تكون أكبر من القيمة المحددة بواسطة هذا الخيار للسماح بالاتجاه. ال
القيمة الافتراضية هي 0.
نسبة التكلفة والمسافة
عامل القياس في حساب المسافة القصوى يمكن تحريك التعبير بواسطتها
تحسينات GCSE. هذا مدعوم حاليًا فقط في ممر رفع الكود.
كلما كانت النسبة أكبر ، كلما كان رفع الشفرة أكثر عدوانية بسهولة
التعبيرات ، أي التعبيرات التي تكلف أقل من gcse- غير مقيد-
كلف. يؤدي تحديد 0 إلى تعطيل رفع التعبيرات البسيطة. النظام الأساسي
10
تكلفة GCSE غير المقيدة
التكلفة ، مُقاسة تقريبًا كتكلفة تعليمات آلة نموذجية واحدة ، عند
التي تحسينات GCSE لا تقيد المسافة التي يمكن أن يقطعها التعبير.
هذا مدعوم حاليًا فقط في ممر رفع الكود. كلما قلت التكلفة ،
الأكثر عدوانية هو رفع التعليمات البرمجية. تحديد 0 يسمح لجميع التعبيرات بـ
السفر مسافات غير مقيدة. القيمة الافتراضية هي 3.
أقصى عمق للرافعة
عمق البحث في شجرة المسيطر عن التعبيرات التي يجب رفعها. هذا مستخدم
لتجنب السلوك التربيعي في خوارزمية الرفع. قيمة 0 لا تحد
في البحث ، ولكن قد يبطئ تجميع وظائف ضخمة. القيمة الافتراضية
هو 30.
مقارنات max-tail-merge
أقصى قدر من bbs مماثلة لمقارنة bb مع. يستخدم هذا لتجنب
السلوك التربيعي في دمج ذيل الشجرة. القيمة الافتراضية هي 10.
ماكس الذيل دمج التكرارات
الحد الأقصى لمقدار تكرارات التمرير فوق الوظيفة. هذا معتاد على
الحد من وقت التجميع في دمج ذيل الشجرة. القيمة الافتراضية هي 2.
الحد الأقصى للإضافات غير المسجلة
الحد الأقصى من التعليمات التي قد يلزم فصلها عن حلقة. إذا كان هناك حلقة
غير مرتبط ، تحدد هذه المعلمة أيضًا عدد مرات رمز الحلقة
غير مقيد.
max-average-unrolled-insns. الحد الأقصى لمتوسط الإدخال
أقصى عدد من التعليمات منحازة باحتمالات تنفيذها
قد تضطر الحلقة إلى أن تكون غير منضبطة. إذا كانت حلقة غير منتهية ، فإن هذا المعامل أيضًا
يحدد عدد المرات التي يتم فيها إلغاء تسجيل رمز الحلقة.
ماكس-فتح مرات
الحد الأقصى لعدد عمليات فتح حلقة واحدة.
ماكس مقشر
الحد الأقصى من التعليمات التي قد يلزم تقشير الحلقة. إذا كان هناك حلقة
مقشر ، تحدد هذه المعلمة أيضًا عدد مرات تقشير رمز الحلقة.
مرات التقشير القصوى
الحد الأقصى لعدد التقشير في حلقة واحدة.
فروع ماكس قشر
أقصى عدد من الفروع على المسار الساخن خلال تسلسل التقشير.
ماكس مقشر تماما
الحد الأقصى لعدد الدعامات لحلقة مقشرة تمامًا.
مرات التقشير القصوى
الحد الأقصى لعدد التكرارات للحلقة لتكون مناسبة للتقشير الكامل.
max-full-peel-loop-nest-عمق
أقصى عمق لعش حلقي مناسب للتقشير الكامل.
الحد الأقصى لإلغاء التبديل-insns
الحد الأقصى لعدد إدخالات الحلقة غير المحولة.
ماكس أون سويتش المستوى
الحد الأقصى لعدد الفروع غير المحولة في حلقة واحدة.
ليم باهظة الثمن
التكلفة الدنيا لتعبير باهظ الثمن في حركة الحلقة الثابتة.
رابعا - مراعاة - جميع المرشحين ملزمة
ملزمة بعدد المرشحين لمتغيرات الاستقراء ، والتي تحتها جميع المرشحين
تعتبر لكل استخدام في تحسينات متغيرة الاستقراء. اذا كان هناك
مرشحين أكثر من هذا ، فقط المرشحون الأكثر صلة هم من يجب تجنبهم
تعقيد الوقت التربيعي.
رابعا - ماكس - الاستخدامات المدروسة
تتخلى التحسينات المتغيرة الاستقرائية عن الحلقات التي تحتوي على مزيد من الاستقراء
استخدامات متغيرة.
رابعًا - دائمًا - خوخ - مرتبط بالشموع
إذا كان عدد المرشحين في المجموعة أقل من هذه القيمة ، فحاول دائمًا ذلك
قم بإزالة ivs غير الضرورية من المجموعة عند إضافة واحدة جديدة.
scev-max-expr-size
ملزم بحجم التعبيرات المستخدمة في محلل التطورات العددية. كبير
التعبيرات تبطئ المحلل.
تعقيد scev-max-expr
مقيد بتعقيد التعبيرات في محلل التطور القياسي.
التعبيرات المعقدة تبطئ المحلل.
أوميغا ماكس فارز
أقصى عدد من المتغيرات في نظام قيود أوميغا. القيمة الافتراضية
هو 128.
أوميغا ماكس geqs
العدد الأقصى من التفاوتات في نظام قيود أوميغا. الافتراضي
القيمة 256.
أوميغا ماكس مكافئ
أقصى عدد من المساواة في نظام قيود أوميغا. القيمة الافتراضية
هو 128.
أوميغا ماكس وايلد بطاقات
الحد الأقصى لعدد متغيرات أحرف البدل التي يمكن لبرنامج أوميغا إدراجها.
القيمة الافتراضية هي 18.
أوميغا حجم الجدول
حجم جدول التجزئة في أداة حل أوميغا. القيمة الافتراضية هي 550.
مفاتيح أوميغا ماكس
العدد الأقصى للمفاتيح المستخدمة بواسطة أداة حل أوميغا. القيمة الافتراضية هي 500.
أوميغا القضاء على القيود الزائدة عن الحاجة
عند الضبط على 1 ، استخدم طرقًا باهظة الثمن لإزالة جميع القيود الزائدة عن الحاجة. ال
القيمة الافتراضية هي 0.
vect-max-version-for-alignment-check. فحص المحاذاة
الحد الأقصى لعدد فحوصات وقت التشغيل التي يمكن إجراؤها عند إجراء التكرار
إصدار للمحاذاة في vectorizer.
اختبارات vect-max-version-for-alias-check
الحد الأقصى لعدد فحوصات وقت التشغيل التي يمكن إجراؤها عند إجراء التكرار
تعيين الإصدار للاسم المستعار في Vectorizer.
vect-max-peeling-for-alignment
العدد الأقصى من التقشير الحلقي لتحسين محاذاة الوصول لـ vectorizer. قيمة
-1 يعني "بلا حدود".
الحد الأقصى لتكرار المسار
الحد الأقصى لعدد التكرارات لحلقة خوارزمية القوة الغاشمة للتحليل
من عدد مرات تكرار الحلقة التي تحاول تقييمها.
hot-bb-count-ws-permille
يعتبر تعداد ملف تعريف الكتلة الأساسي ساخنًا إذا كان يساهم في المعطى
النفاذية (أي 0 ... 1000) للتنفيذ الكامل.
حار-ب-تردد-جزء
حدد جزءًا من تكرار كتلة الإدخال لعمليات تنفيذ الكتلة الأساسية في
الوظيفة التي تعطى الكتلة الأساسية يجب أن تعتبر ساخنة.
التكرارات القصوى المتوقعة
الحد الأقصى لعدد تكرارات الحلقة التي نتوقعها بشكل ثابت. هذا مفيد في
الحالات التي تحتوي فيها الوظيفة على حلقة مفردة ذات حدود معروفة وحلقة أخرى
مع حدود غير معروفة. يتم توقع العدد المعروف من التكرارات بشكل صحيح ، بينما
متوسط عدد التكرارات غير المعروف إلى ما يقرب من 10. وهذا يعني أن الحلقة
بدون حدود يبدو باردًا بشكل مصطنع بالنسبة إلى الآخر.
احتمالية متوقعة مضمنة
التحكم في احتمالية امتلاك التعبير للقيمة المحددة. هذه
تأخذ المعلمة نسبة مئوية (أي 0 ... 100) كمدخلات. الاحتمال الافتراضي
90 تم الحصول عليها تجريبيا.
عتبة المحاذاة
حدد جزءًا من الحد الأقصى لتكرار عمليات الإعدام لكتلة أساسية في ملف
وظيفة لمحاذاة الكتلة الأساسية.
محاذاة حلقة التكرارات
حلقة من المتوقع أن تتكرر على الأقل تتم محاذاة العدد المحدد من التكرارات.
تغطية التتبع الديناميكي
التتبع الديناميكي للتغطية-التغذية الراجعة
تُستخدم هذه القيمة للحد من تكوين الكتلة الفائقة بمجرد النسبة المئوية المعطاة لـ
يتم تغطية التعليمات المنفذة. هذا يحد من توسيع حجم الكود غير الضروري.
تشير التتبع الديناميكي للتغطية-التغذية الراجعة يتم استخدام المعلمة فقط عند ملاحظات الملف الشخصي
متاح. الملفات الشخصية الحقيقية (على عكس تلك المقدرة بشكل ثابت) هي
أقل توازناً مما يسمح للعتبة بأن تكون ذات قيمة أكبر.
تتبع- ماكس- كود- النمو
أوقف ازدواجية الذيل بمجرد أن يصل نمو الكود إلى نسبة معينة. هذا ال
حد مصطنع إلى حد ما ، حيث يتم حذف معظم التكرارات لاحقًا في العرض
القفز ، لذلك قد يتم تعيينه على قيم أعلى بكثير من نمو الكود المطلوب.
نسبة تتبع دقيقة فرع
أوقف النمو العكسي عندما يكون الاحتمال العكسي لأفضل حافة أقل من ذلك
عتبة (بالنسبة المئوية).
نسبة تتبع دقيقة فرع
تتبع دقيقة دقيقة نسبة الفرع ردود الفعل
أوقف النمو إلى الأمام إذا كان احتمال أفضل ميزة أقل من هذه العتبة.
مشابه ل تغطية التتبع الديناميكي توجد قيمتان ، واحدة للتجميع
لتعليقات الملف الشخصي وواحد للتجميع بدون. قيمة الترجمة
مع ملاحظات الملف الشخصي يجب أن تكون أكثر تحفظًا (أعلى) من أجل القيام بذلك
التتبع فعال.
أقصى طول مسار cse
أقصى عدد من الكتل الأساسية على المسار الذي يعتبره محرك البحث المخصص. الافتراضي هو 10.
max-cse-insns
أقصى عدد من التعليمات التي يعالجها محرك البحث المخصص قبل التنظيف. الافتراضي هو
1000
ggc- min- توسيع
يستخدم GCC جامع البيانات المهملة لإدارة تخصيص الذاكرة الخاصة به. هذه المعلمة
يحدد الحد الأدنى للنسبة المئوية التي يجب أن تكون بها كومة أداة تجميع البيانات المهملة
يسمح بالتوسع بين المجموعات. قد يؤدي ضبط هذا إلى تحسين سرعة الترجمة ؛
ليس له أي تأثير على إنشاء الكود.
الافتراضي هو 30٪ + 70٪ * (RAM / 1 جيجا بايت) بحد أعلى 100٪ عندما تكون ذاكرة الوصول العشوائي> = 1 جيجا بايت.
إذا كان "getrlimit" متاحًا ، فإن فكرة "RAM" هي أصغر ذاكرة RAM فعلية و
"RLIMIT_DATA" أو "RLIMIT_AS". إذا كان GCC غير قادر على حساب ذاكرة الوصول العشوائي على معين
النظام الأساسي ، يتم استخدام الحد الأدنى بنسبة 30٪. تعيين هذه المعلمة و ggc- مين-
حجم كومة إلى الصفر يؤدي إلى حدوث مجموعة كاملة في كل فرصة. هذا هو
بطيء للغاية ، ولكن يمكن أن يكون مفيدًا في التصحيح.
GGC-دقيقة-حجم الكومة
الحد الأدنى لحجم كومة أداة تجميع القمامة قبل أن تبدأ في عناء التجميع
قمامة. تحدث المجموعة الأولى بعد توسيع الكومة بمقدار ggc- min- توسيع%
تتعدى GGC-دقيقة-حجم الكومة. مرة أخرى ، قد يؤدي ضبط هذا إلى تحسين سرعة الترجمة و
ليس له تأثير على إنشاء الكود.
الافتراضي هو أصغر RAM / 8 ، RLIMIT_RSS ، أو الحد الذي يحاول التأكد
لا يتم تجاوز RLIMIT_DATA أو RLIMIT_AS ، ولكن بحد أدنى يبلغ 4096
(أربعة ميغا بايت) وحد أعلى 131072 (128 ميغا بايت). إذا كان مجلس التعاون الخليجي غير قادر
لحساب ذاكرة الوصول العشوائي على منصة معينة ، يتم استخدام الحد الأدنى. تحديد هذا
المعلمة كبيرة جدًا بشكل فعال لتعطيل جمع القمامة. تحديد هذا
المعلمة و ggc- min- توسيع إلى الصفر يؤدي إلى حدوث مجموعة كاملة في كل مرة
الفرصة.
max-reoad-search-insns
يجب أن ينظر الحد الأقصى لعدد إعادة تحميل التعليمات إلى الخلف للحصول على ما يعادله
تسجيل. زيادة القيم تعني تحسينًا أكثر قوة ، مما يجعل
زيادة وقت الترجمة مع أداء أفضل قليلاً على الأرجح. الافتراضي
القيمة 100.
مواقع ذاكرة- max-cselib
يجب أن يأخذ الحد الأقصى لعدد مواقع الذاكرة cselib في الاعتبار.
زيادة القيم تعني تحسينًا أكثر قوة ، مما يجعل وقت التجميع
زيادة مع ربما أداء أفضل قليلا. القيمة الافتراضية هي 500.
إعادة ترتيب الكتل مكررة
إعادة ترتيب الكتل ردود الفعل المكررة
مستخدم بواسطة التمريرة الأساسية لإعادة ترتيب الكتلة لتقرير ما إذا كان سيتم استخدام غير مشروط
فرع أو تكرار الرمز في وجهته. يتم تكرار الرمز عندما يكون
الحجم المقدر أصغر من هذه القيمة مضروبًا في الحجم المقدر لـ
قفزة غير مشروطة في النقاط الساخنة في البرنامج.
تشير إعادة ترتيب ردود الفعل كتلة مكررة يتم استخدام المعلمة فقط عند ملاحظات الملف الشخصي
متاح. قد يتم تعيينه على قيم أعلى من إعادة ترتيب كتلة مكررة منذ
المعلومات حول النقاط الساخنة أكثر دقة.
ماكس جدولة ادسنسس
يجب أن يتم إصدار الحد الأقصى من التعليمات الجاهزة لإصدار المجدول
ضع في اعتبارك في أي وقت خلال تمريرة الجدولة الأولى. زيادة القيم
يعني المزيد من عمليات البحث الشاملة ، مما يزيد من وقت التجميع مع احتمال
فائدة قليلة. القيمة الافتراضية هي 100.
ماكس جدولة منطقة الكتل
الحد الأقصى لعدد الكتل في المنطقة التي يجب أخذها في الاعتبار للكتل المتداخل
الجدولة. القيمة الافتراضية هي 10.
ماكس-خط الأنابيب-المنطقة-كتل
الحد الأقصى لعدد الكتل في المنطقة التي يجب مراعاتها لتخطيط الأنابيب في
جدولة انتقائية. القيمة الافتراضية هي 15.
ماكس جدولة المنطقة الداخلية
الحد الأقصى لعدد الإدخالات في المنطقة التي يجب مراعاتها للتداخل
الجدولة. القيمة الافتراضية هي 100.
ماكس-خطوط الأنابيب-insns
الحد الأقصى لعدد الأجزاء الداخلية في المنطقة التي يجب مراعاتها في خطوط الأنابيب في
جدولة انتقائية. القيمة الافتراضية هي 200.
دقيقة المواصفات- prob
الحد الأدنى لاحتمال (بالنسب المئوية) للوصول إلى كتلة مصدر للكتلة الداخلية
جدولة المضاربة. القيمة الافتراضية هي 40.
ماكس جدولة توسيع مناطق التكرار
أقصى عدد من التكرارات من خلال CFG لتوسيع المناطق. قيمة 0 (
افتراضي) تعطيل ملحقات المنطقة.
max-Sched-insn- تعارض-تأخير
الحد الأقصى لتأخير التعارض لـ insn يجب أن يؤخذ في الاعتبار للحركة التخمينية.
القيمة الافتراضية هي 3.
جدولة المواصفات- مشكلة- قطع
الحد الأدنى من احتمال نجاح المضاربة (بالنسب المئوية) ، بحيث تكون المضاربة
يتم جدولة insns. القيمة الافتراضية هي 40.
جدولة المواصفات-الحالة-حافة- مشكلة- قطع
الحد الأدنى من الاحتمال الذي يجب أن تتوفر به الحافة حتى يتمكن المجدول من حفظ حالته
عبرها. القيمة الافتراضية هي 10.
جدولة-mem-true-dep-cost
الحد الأدنى للمسافة (في دورات وحدة المعالجة المركزية) بين المتجر والحمل الذي يستهدف نفس الذاكرة
المواقع. القيمة الافتراضية هي 1.
selsched-max-lookahead
الحجم الأقصى لنافذة lookahead للجدولة الانتقائية. إنه عمق
من البحث عن التعليمات المتاحة. القيمة الافتراضية هي 50.
selsched-max-Sched-times
الحد الأقصى لعدد مرات جدولة التعليمات أثناء التحديد
الجدولة. هذا هو الحد الأقصى لعدد التكرارات التي يتم من خلالها
قد تكون التعليمات مخططة بالأنابيب. القيمة الافتراضية هي 2.
selsched-max-insns to-tename
أقصى عدد من أفضل الإرشادات في القائمة الجاهزة التي يتم أخذها في الاعتبار
إعادة التسمية في المجدول الانتقائي. القيمة الافتراضية هي 2.
الرسائل القصيرة دقيقة الشوري
الحد الأدنى لقيمة عدد المرحلة التي يولدها برنامج جدولة نمط التأرجح. ال
القيمة الافتراضية هي 2.
الحد الأقصى للقيمة الأخيرة-rtl
الحجم الأقصى المُقاس بعدد RTLs التي يمكن تسجيلها في تعبير
في موحد لسجل زائف كآخر قيمة معروفة لهذا السجل. ال
الافتراضي هو 10000.
ماكس-الجمع بين insns
أقصى عدد من التعليمات التي يحاول المجمع من اليمين إلى اليسار أن يجمعها. الافتراضي
القيمة 2 في -عوج و 4 خلاف ذلك.
عدد صحيح حصة حد
يمكن أن تستخدم ثوابت الأعداد الصحيحة الصغيرة بنية بيانات مشتركة ، مما يقلل من المترجم
استخدام الذاكرة وزيادة سرعتها. هذا يحدد الحد الأقصى لقيمة ملف
ثابت عدد صحيح. القيمة الافتراضية هي 256.
ssp- حجم المخزن المؤقت
الحد الأدنى لحجم المخازن المؤقتة (أي المصفوفات) التي تتلقى الحماية من تحطيم المكدس
متى -حماية التكديس .
هذا الإعداد الافتراضي قبل Ubuntu 10.10 كان "8". حاليا هو "4" ، لزيادة
عدد الوظائف التي يحميها واقي المكدس.
الحجم الأدنى لتقاسم المكدس
الحد الأدنى لحجم المتغيرات المشاركة في مشاركة فتحة المكدس عندما لا تكون كذلك
التحسين. القيمة الافتراضية هي 32.
ماكس القفز موضوع الازدواجية stmts
الحد الأقصى من العبارات المسموح بها في الكتلة التي تحتاج إلى تكرار عندما
خيوط يقفز.
max-Fields للحقول الحساسة
الحد الأقصى لعدد الحقول في هيكل تمت معالجته بطريقة حساسة للمجال أثناء
تحليل المؤشر. الافتراضي هو صفر من أجل -O0 -O1و 100 من أجل -أوس, -O2و
-O3.
الجلب المسبق الكمون
تقدير متوسط عدد التعليمات التي يتم تنفيذها قبل الجلب المسبق
التشطيبات. المسافة المحددة مسبقًا متناسبة مع هذا الثابت.
قد تؤدي زيادة هذا العدد أيضًا إلى تقليل الجلب المسبق للتدفقات (انظر
عمليات تمهيدية متزامنة).
عمليات تمهيدية متزامنة
أقصى عدد من عمليات الإعداد المسبق التي يمكن تشغيلها في نفس الوقت.
l1 حجم خط ذاكرة التخزين المؤقت
حجم سطر ذاكرة التخزين المؤقت في ذاكرة التخزين المؤقت L1 بالبايت.
l1-حجم ذاكرة التخزين المؤقت
حجم ذاكرة التخزين المؤقت L1 بالكيلو بايت.
l2-حجم ذاكرة التخزين المؤقت
حجم ذاكرة التخزين المؤقت L2 بالكيلو بايت.
min-insn-to-pre -etch-ratio
الحد الأدنى للنسبة بين عدد التعليمات وعدد عمليات الإعداد المسبق
لتمكين الجلب المسبق في حلقة.
نسبة الجلب المسبق دقيقة إلى الذاكرة
الحد الأدنى للنسبة بين عدد التعليمات وعدد الذاكرة
مراجع لتمكين الجلب المسبق في حلقة.
استخدام الأنواع المتعارف عليها
ما إذا كان يجب على المترجم استخدام نظام النوع "المتعارف عليه". افتراضيا ، هذا
يجب أن تكون دائمًا 1 ، والتي تستخدم آلية داخلية أكثر كفاءة للمقارنة
الأنواع في C ++ و Objective-C ++. ومع ذلك ، إذا كانت الأخطاء في نظام النوع المتعارف عليه هي
تسبب في فشل الترجمة ، اضبط هذه القيمة على 0 لتعطيل الأنواع الأساسية.
تحويل التحويل الأقصى نسبة الفرع
تحويل تهيئة التبديل يرفض إنشاء مصفوفات أكبر من
تحويل التحويل الأقصى نسبة الفرع أضعاف عدد الفروع في التبديل.
الحد الأقصى للطول الجزئي المضاد
الحد الأقصى لطول مجموعة antic الجزئية المحسوبة أثناء الشجرة الجزئية
تحسين القضاء على التكرار (-ftree- قبل) عند التحسين في -O3 و ما فوق.
بالنسبة لبعض أنواع الكود المصدري ، يتم حذف التكرار الجزئي المحسن
يمكن أن يهرب التحسين ، مستهلكًا كل الذاكرة المتوفرة على المضيف
آلة. تضع هذه المعلمة حدًا لطول المجموعات المحسوبة ،
مما يمنع السلوك الجامح. تحديد قيمة 0 لهذه المعلمة
يسمح بمجموعة غير محدودة من الطول.
sccvn-ماكس-scc-الحجم
الحجم الأقصى لمكون متصل بقوة (SCC) أثناء معالجة SCCVN. لو
تم الوصول إلى هذا الحد ، ولم تتم معالجة SCCVN للوظيفة بأكملها و
يتم تعطيل التحسينات بناءً على ذلك. الحد الأقصى الافتراضي لحجم SCC هو
10000
استعلامات sccvn-max-alias-per-access
أقصى عدد من استعلامات Alias-oracle التي نجريها عند البحث عن التكرار
للأحمال والمخازن. إذا تم الوصول إلى هذا الحد ، يتم إلغاء البحث ويتم تحميل أو
لا يعتبر المتجر زائدا عن الحاجة. عدد الاستعلامات خوارزميًا
يقتصر على عدد المخازن على جميع المسارات من التحميل إلى إدخال الوظيفة.
الحد الأقصى الافتراضي لعدد الاستعلامات هو 1000.
إيرا ماكس حلقات الأسطوانات
يستخدم IRA تخصيص السجل الإقليمي افتراضيًا. إذا كانت الوظيفة تحتوي على المزيد
حلقات من الرقم المعطى بواسطة هذه المعلمة ، فقط على الأكثر عدد معين من
تشكل الحلقات الأكثر تنفيذًا مناطق لتخصيص السجل الإقليمي.
القيمة الافتراضية للمعلمة هي 100.
حجم طاولة الصراع
على الرغم من أن IRA يستخدم خوارزمية معقدة لضغط جدول التعارض ، فإن ملف
الجدول لا يزال يتطلب كميات زائدة من الذاكرة لوظائف ضخمة. إذا كان
يمكن أن يكون جدول التعارض لوظيفة أكبر من الحجم بالميغابايت المعطى بواسطة هذا
المعلمة ، يستخدم مخصص السجل بدلاً من ذلك أسرع وأبسط وأقل-
خوارزمية الجودة التي لا تتطلب بناء جدول تعارض السجل الزائف.
القيمة الافتراضية للمعلمة هي 2000.
إيرا حلقة محجوزة
يمكن استخدام IRA لتقييم ضغط التسجيل الأكثر دقة في الحلقات لاتخاذ القرارات
لتحريك ثوابت الحلقة (انظر -O3). عدد السجلات المتاحة المحجوزة لـ
يتم إعطاء بعض الأغراض الأخرى بواسطة هذه المعلمة. القيمة الافتراضية لملف
المعلمة هي 2 ، وهو الحد الأدنى من عدد السجلات التي يحتاجها النموذج
تعليمات. هذه القيمة هي أفضل ما تم العثور عليه من تجارب عديدة.
lra- الميراث- المد- احتمالية- قطع
يحاول LRA إعادة استخدام القيم المعاد تحميلها في السجلات في الإدخالات اللاحقة. هذه
التحسين يسمى الوراثة. يستخدم EBB كمنطقة للقيام بذلك
الاقوي. تحدد المعلمة الحد الأدنى من احتمال حافة السقوط في
النسبة المئوية المستخدمة لإضافة BB إلى الميراث EBB في LRA. القيمة الافتراضية لملف
المعلمة هي 40. تم اختيار القيمة من عدة عمليات تشغيل لـ SPEC2000 على x86-64.
حلقة-ثابت- max-bbs-in-loop
يمكن أن تكون حركة الحلقة الثابتة باهظة الثمن ، سواء في وقت التجميع أو في
مقدار ذاكرة وقت الترجمة المطلوبة ، مع حلقات كبيرة جدًا. حلقات مع المزيد
لن تحتوي الكتل الأساسية من هذه المعلمة على تحسين حركة ثابتة للحلقة
يؤدى عليهم. القيمة الافتراضية للمعلمة هي 1000 لـ -O1 و 10000
For -O2 و ما فوق.
حلقة ماكس datarefs مقابل datadeps
يعد بناء البيانات المتراصة مكلفًا للحلقات الكبيرة جدًا. هذه المعلمة
يحد من عدد مراجع البيانات في الحلقات التي يتم أخذها في الاعتبار للبيانات
تحليل الاعتماد. لا يتم التعامل مع هذه الحلقات الكبيرة عن طريق التحسينات باستخدام
تبعيات البيانات حلقة. القيمة الافتراضية هي 1000.
ماكس-حجم vartrack
يعيّن الحد الأقصى لعدد فتحات جدول التجزئة لاستخدامها أثناء تدفق بيانات التعقب المتغير
تحليل أي وظيفة. إذا تم تجاوز هذا الحد مع تتبع متغير في
تم تمكين التعيينات ، تتم إعادة محاولة تحليل هذه الوظيفة بدونها ، بعد ذلك
إزالة كافة إدخالات التصحيح من الوظيفة. إذا تم تجاوز الحد حتى بدون
debug insns ، تم تعطيل تحليل تتبع var تمامًا للوظيفة.
تعيين المعلمة على الصفر يجعلها غير محدودة.
max-vartrack-expr-عمق
يضبط الحد الأقصى لعدد مستويات العودية عند محاولة تعيين أسماء المتغيرات أو
تصحيح الموقتات لقيمة التعبيرات. هذا مقايضة وقت التجميع لأكثر من ذلك
معلومات التصحيح الكاملة. إذا تم تعيين هذا على قيمة منخفضة جدًا ، فقم بتعبيرات القيمة
متوفر ويمكن تمثيله في معلومات التصحيح قد ينتهي به الأمر إلى عدم استخدامه ؛
قد يؤدي تعيين هذا الإعداد إلى أعلى إلى تمكين المترجم من العثور على تصحيح أخطاء أكثر تعقيدًا
التعبيرات ، ولكن قد ينمو استخدام الوقت والذاكرة في الترجمة. الافتراضي هو 12.
min-nondebug-insn-uid
استخدم uids بدءًا من هذه المعلمة لـ nondebug insns. النطاق أدناه
المعلمة محجوزة حصريًا لإدخالات التصحيح التي تم إنشاؤها بواسطة
-fvar- تتبع- التخصيصات، ولكن قد تحصل عناصر تصحيح الأخطاء على مستخدِمات (غير متداخلة) أعلاه
إذا تم استنفاد النطاق المحجوز.
عامل النمو ipa-sra-ptr
يستبدل IPA-SRA مؤشرًا بمجموع واحد أو أكثر من المعلمات الجديدة فقط
عندما يكون حجمها التراكمي أقل أو يساوي عامل النمو ipa-sra-ptr أضعاف
حجم معلمة المؤشر الأصلية.
sra-max-Scalarization-size-Ospeed
sra-max-scalarization-size-Osize
يهدف التخفيض القياسي للركام (SRA و IPA-SRA) إلى استبدالهما
الأجزاء العددية من الركام باستخدام المتغيرات العددية المستقلة. هؤلاء
تتحكم المعلمات في الحجم الأقصى ، في وحدات التخزين ، للركام وهو
يعتبر للاستبدال عند التجميع من أجل السرعة (sra-max-Scalarization-size-
السرعة) أو الحجم (sra-max-scalarization-size-Osize) على التوالي.
الحجم الكلي tm max
عند عمل نسخ من المتغيرات المحلية الخيطية في معاملة ، هذه المعلمة
يحدد الحجم بالبايت وبعد ذلك يتم حفظ المتغيرات مع التسجيل
وظائف بدلاً من حفظ / استعادة أزواج تسلسل التعليمات البرمجية. هذا الخيار فقط
ينطبق عند استخدام -فنو- tm.
الجرافيت-max-nb-scop-params
لتجنب التأثيرات الأسية في تحويلات حلقة الجرافيت ، فإن عدد
المعلمات في جزء التحكم الثابت (SCoP) محدودة. القيمة الافتراضية هي 10
العوامل. متغير قيمته غير معروفة في وقت التجميع ومحددة
خارج SCoP معلمة من SCoP.
الجرافيت- max-bbs- لكل وظيفة
لتجنب التأثيرات الأسية في اكتشاف SCoPs ، حجم الوظائف
تحليلها بواسطة الجرافيت يحدها. القيمة الافتراضية هي 100 كتلة أساسية.
حلقة-كتلة-حجم البلاط
يتم تمكين حجب الحلقة أو تحويلات التعدين الشريطية مع - كتلة طيارة or
-قريب-شريط-الألغام، قم بتجريد كل حلقة في عش الحلقة بعدد معين من
التكرارات. يمكن تغيير طول الشريط باستخدام حلقة-كتلة-حجم البلاط
معامل. القيمة الافتراضية هي 51 تكرارا.
حلقة-فتح-حجم المربى
حدد عامل فتح الملف -تقلب-فتح-والمربى اختيار. القيمة الافتراضية
هو 4.
حلقة-فتح-جام-عمق
حدد البعد المراد إلغاء تسجيله (العد من أكثر حلقة داخلية) لـ
-تقلب-فتح-والمربى. القيمة الافتراضية هي 2.
ipa-cp-قيمة-حجم القائمة
يحاول IPA-CP تتبع جميع القيم والأنواع الممكنة التي تم تمريرها إلى الوظيفة
المعلمة من أجل تكاثرها وتنفيذ devirtualization. قيمة ipa-cp-
حجم القائمة هو الحد الأقصى لعدد القيم والأنواع التي يخزنها لكل رسمية
معلمة وظيفة.
عتبة ipa-cp-Eval-threshold
تحسب IPA-CP درجاتها الخاصة في الاستدلال على استدلال الربحية وأدائها
فرص الاستنساخ التي تتجاوز الدرجات عتبة ipa-cp-Eval-threshold.
عقوبة ipa-cp- العودية
النسبة المئوية للعقوبة التي ستتلقاها الوظائف العودية عند تقييمها
للاستنساخ.
عقوبة المكالمة الفردية ipa-cp
وظائف عقوبة النسبة المئوية التي تحتوي على مكالمة واحدة إلى وظيفة أخرى سوف
يتلقونها عندما يتم تقييمهم للاستنساخ.
ipa-max-agg-items
IPA-CP قادر أيضًا على نشر عدد من القيم العددية التي يتم تمريرها في نطاق
مجموع. ipa-max-agg-items يتحكم في الحد الأقصى لعدد هذه القيم لكل واحد
المعلمة.
ipa-cp- حلقة-تلميح-مكافأة
عندما يقرر IPA-CP أن مرشح الاستنساخ سيحقق عدد
تكرار حلقة معروفة ، فإنه يضيف مكافأة ipa-cp- حلقة-تلميح-مكافأة إلى
درجة ربحية المرشح.
ipa-cp-array-index-hint-bonus
عندما يقرر IPA-CP أن مرشح الاستنساخ سوف يصنع فهرس المصفوفة
الوصول المعروف ، يضيف مكافأة ipa-cp-array-index-hint-bonus إلى
درجة ربحية المرشح.
ipa-max-aa- الخطوات
أثناء تحليل الهيئات الوظيفية ، يستخدم IPA-CP تحليل الاسم المستعار من أجل
تشير قيم المسار إلى معلمات الوظيفة. لكي لا تضيع الكثير من الوقت
بتحليل وظائف ضخمة ، فإنه يستسلم ويأخذ في الاعتبار كل الذاكرة المضطربة بعد ذلك
دراسة ipa-max-aa- الخطوات بيانات تعديل الذاكرة.
أقسام lto
حدد العدد المطلوب من الأقسام التي تم إنتاجها أثناء تجميع WHOPR. ال
يجب أن يتجاوز عدد الأقسام عدد وحدات المعالجة المركزية المستخدمة في التجميع. ال
القيمة الافتراضية هي 32.
lto-minpartition
حجم الحد الأدنى من التقسيم لـ WHOPR (في التعليمات المقدرة). هذا يمنع
نفقات تقسيم البرامج الصغيرة جدًا إلى أقسام كثيرة جدًا.
مساحات الأسماء cxx-max-for-التشخيص-التعليمات
الحد الأقصى لعدد مساحات الأسماء التي يمكن الرجوع إليها للحصول على اقتراحات عند البحث عن اسم C ++
فشل للحصول على معرّف. الافتراضي هو 1000.
عتبة التردد بالوعة
الحد الأقصى لتكرار التنفيذ النسبي (بالنسب المئوية) للكتلة المستهدفة
بالنسبة إلى الكتلة الأصلية للبيان للسماح بغرق العبارة لـ
بيان. تؤدي الأرقام الكبيرة إلى المزيد من الغرق العدواني في العبارات. ال
القيمة الافتراضية هي 75. يتم تطبيق تعديل إيجابي صغير على البيانات ذات
معاملات الذاكرة لأنها أكثر ربحية لذا تغرق.
ماكس-مخازن للحوض
أقصى عدد من أزواج المتاجر الشرطية التي يمكن غرقها. اضبط على 0 إذا
إما vectorization (-ftree-vectorize) أو إذا-التحويل (-ftree- حلقة- إذا- تحويل)
معطل. الافتراضي هو 2.
سماح-تخزين-بيانات-سباقات
السماح للمحسّنين بتقديم سباقات بيانات جديدة في المتاجر. اضبط على 1 للسماح ،
بخلاف ذلك إلى 0. يتم تمكين هذا الخيار افتراضيًا على مستوى التحسين -سريع.
عتبة قيم الحالة
أصغر عدد من القيم المختلفة من الأفضل استخدام جدول انتقال
بدلا من شجرة الفروع الشرطية. إذا كانت القيمة 0 ، فاستخدم الإعداد الافتراضي لـ
الآلة. الافتراضي هو 0.
عرض الشجرة reassoc
قم بتعيين الحد الأقصى لعدد التعليمات التي يتم تنفيذها بالتوازي في الشجرة المعاد إقرانها.
تتجاوز هذه المعلمة الأساليب البحثية التابعة للهدف المستخدمة افتراضيًا إذا لم يكن بها
قيمة صفرية.
جدول-ضغط-خوارزمية
اختر من بين التطبيقين المتاحين لـ ضغط ضغط. الخوارزمية 1
هو التنفيذ الأصلي ويزيد احتمال منع التعليمات من
يتم إعادة ترتيبها. تم تصميم الخوارزمية 2 لتكون بمثابة حل وسط بين
نهج متحفظ نسبيًا تتبعه الخوارزمية 1 والعدوانية نوعًا ما
النهج الذي يتبعه المجدول الافتراضي. إنه يعتمد بشكل أكبر على وجود ملف
ملف تسجيل منتظم ودقيق تسجيل فئات الضغط. ارى حيفا جدولة ج
في مصادر دول مجلس التعاون الخليجي لمزيد من التفاصيل.
يعتمد الاختيار الافتراضي على الهدف.
ماكس-slsr-cand-scan
قم بتعيين الحد الأقصى لعدد المرشحين الحاليين الذين يتم أخذهم في الاعتبار عند البحث عن ملف
أساس لمرشح جديد لتخفيض قوة الخط المستقيم.
اسان جلوبالس
تفعيل الكشف عن تجاوز سعة المخزن المؤقت للكائنات العامة. هذا النوع من الحماية
ممكّنًا بشكل افتراضي إذا كنت تستخدم -fsanitize = العنوان اختيار. لتعطيل العالمية
استخدام حماية الكائنات - معلمة أسان-غلوبالس = 0.
أسان كومة
تمكين الكشف عن تجاوز سعة المخزن المؤقت لكائنات المكدس. هذا النوع من الحماية
ممكّنًا افتراضيًا عند استخدام-fsanitize = العنوان. لتعطيل استخدام حماية المكدس
- معلمة كومة أسان = 0 الخيار.
يقرأ اسان الصك
تفعيل الكشف عن تجاوز سعة المخزن المؤقت لقراءات الذاكرة. هذا النوع من الحماية
ممكّنًا افتراضيًا عند استخدام -fsanitize = العنوان. لتعطيل الذاكرة يقرأ
استخدام الحماية - معلمة يقرأ asan-Instrument- يقرأ = 0.
أسان-صك-يكتب
تفعيل اكتشاف تجاوز سعة المخزن المؤقت لعمليات الكتابة في الذاكرة. هذا النوع من الحماية
ممكّنًا افتراضيًا عند استخدام -fsanitize = العنوان. لتعطيل ذاكرة يكتب
استخدام الحماية - معلمة asan-Instrument-writes = 0 الخيار.
أسان ميمينترين
تمكين الكشف عن الوظائف المضمنة. يتم تمكين هذا النوع من الحماية بواسطة
الافتراضي عند استخدام -fsanitize = العنوان. لتعطيل حماية الوظائف المدمجة
تستخدم - معلمة أسان ميمينترين = 0.
أسان-استخدام-بعد العودة
تمكين الكشف عن الاستخدام بعد العودة. يتم تمكين هذا النوع من الحماية بواسطة
الافتراضي عند استخدام -fsanitize = العنوان اختيار. لتعطيل الاستخدام بعد الإرجاع
استخدام الكشف - معلمة asan-use-after-return = 0.
asan-Instrumation-with-call-threshold
إذا كان عدد مرات الوصول إلى الذاكرة في الوظيفة التي يتم تشغيلها أكبر أو يساوي
هذا الرقم ، استخدم عمليات الاسترجاعات بدلاً من عمليات التحقق المضمنة. على سبيل المثال لتعطيل التعليمات البرمجية المضمنة
تستخدم - معلمة asan-Instrumation-with-call-threshold = 0.
chkp-max-ctor-size
قد تصبح المنشئات الثابتة التي تم إنشاؤها بواسطة Pointer Bounds Checker كبيرة جدًا و
زيادة وقت الترجمة بشكل كبير على مستوى التحسين -O1 وأعلى. هذه
المعلمة هي الحد الأقصى من العبارات في مُنشئ واحد تم إنشاؤه.
القيمة الافتراضية هي 5000.
max-fsm-thread-path-insns
العدد الأقصى من التعليمات المراد نسخها عند نسخ الكتل في حالة محدودة
مسار موضوع القفز الآلي. الافتراضي هو 100.
max-fsm- طول الخيط
أقصى عدد من الكتل الأساسية على مسار خيط انتقال آلي ذي حالة محدودة. ال
الافتراضي هو 10.
مسارات خيط max-fsm
الحد الأقصى لعدد مسارات خيط الانتقال الجديدة التي يتم إنشاؤها لحالة آلية محدودة.
الافتراضي هو 50.
مزيد من الخيارات السيطرة ال قبل المعالج
تتحكم هذه الخيارات في معالج C ، والذي يتم تشغيله على كل ملف مصدر C قبل الفعلي
التحويل البرمجي.
إذا كنت تستخدم -E الخيار ، لا شيء يتم القيام به باستثناء المعالجة المسبقة. بعض هذه الخيارات
منطقي فقط مع -E لأنهم يتسببون في إخراج المعالج المسبق
غير مناسب للترجمة الفعلية.
-Wp ،خيار
يمكنك استخدام -Wp ،خيار لتجاوز سائق المترجم وتمرير خيار مباشرة من خلال
إلى المعالج. لو خيار يحتوي على فواصل ، يتم تقسيمه إلى خيارات متعددة في
الفواصل. ومع ذلك ، يتم تعديل العديد من الخيارات أو ترجمتها أو تفسيرها بواسطة
برنامج تشغيل المترجم قبل أن يتم تمريره إلى المعالج المسبق ، و -Wp يتجاوز بالقوة
هذه المرحلة. الواجهة المباشرة للمعالج غير موثقة وتخضع لـ
التغيير ، لذا يجب تجنب استخدام -Wp ودع السائق يتعامل مع ملف
خيارات بدلا من ذلك.
-المعالج X خيار
تجاوز خيار كخيار للمعالج. يمكنك استخدام هذا لتزويد النظام-
خيارات المعالجات المحددة التي لا يتعرف عليها GCC.
إذا كنت تريد تمرير خيار يأخذ حجة ، فيجب عليك استخدام -المعالج X
مرتين ، مرة للخيار ومرة للحجة.
-لا- متكامل- CPP
قم بإجراء المعالجة المسبقة كمرور منفصل قبل التجميع. بشكل افتراضي ، يؤدي GCC
المعالجة المسبقة كجزء لا يتجزأ من تحويل الرموز إلى المدخلات والتحليل. إذا كان هذا الخيار
يتم توفير الواجهة الأمامية باللغة المناسبة (cc1, cc1plusالطرق أو cc1obj لـ C و C ++ ،
و Objective-C ، على التوالي) بدلاً من ذلك مرتين ، مرة واحدة للمعالجة المسبقة فقط
ومرة واحدة للتجميع الفعلي للمدخلات المجهزة مسبقًا. قد يكون هذا الخيار مفيدا
جنبا إلى جنب مع -B or -غلاف خيارات لتحديد معالج مسبق بديل أو
إجراء معالجة إضافية لمصدر البرنامج بين المعالجة المسبقة العادية و
التحويل البرمجي.
-D الاسم
محدد مسبقا الاسم كماكرو ، مع التعريف 1.
-D الاسم=تعريف
محتويات تعريف يتم ترميزها ومعالجتها كما لو ظهرت أثناء
مرحلة الترجمة الثالثة في أ # تعريف التوجيه. على وجه الخصوص ، سيكون التعريف
تم اقتطاعه بواسطة أحرف سطر جديد مضمنة.
إذا كنت تستدعي المعالج المسبق من قذيفة أو برنامج يشبه القشرة ، فقد تحتاج
لاستخدام صيغة اقتباس الصدفة لحماية الأحرف مثل المسافات التي تحتوي على
المعنى في بناء الجملة.
إذا كنت ترغب في تحديد ماكرو يشبه الوظيفة في سطر الأوامر ، فاكتب وسيطته
قائمة بالأقواس المحيطة قبل علامة التساوي (إن وجدت). الأقواس
مفيد لمعظم الأصداف ، لذلك ستحتاج إلى اقتباس الخيار. مع sh مستشفى الدعم القتالي,
-د'الاسم(أرجس ...)=تعريف' الأشغال.
-D -U تتم معالجة الخيارات بالترتيب الوارد في سطر الأوامر. الجميع
-يماكروس ملف -تضمن ملف يتم معالجة الخيارات بعد كل شيء -D -U خيارات.
-U الاسم
إلغاء أي تعريف سابق لـ الاسم، سواء مدمجة أو مزودة بامتداد -D الخيار.
- صندوق
لا تقم بإجراء تعريف مسبق لأي وحدات ماكرو خاصة بالنظام أو خاصة بمجلس التعاون الخليجي. المعيار المحدد مسبقًا
تظل وحدات الماكرو معرّفة.
-I دير
أضف الدليل دير إلى قائمة الدلائل التي سيتم البحث فيها عن ملفات الرأس.
الدلائل التي تم تسميتها بواسطة -I يتم البحث قبل تضمين النظام القياسي الدلائل.
إذا كان الدليل دير هو نظام قياسي يشمل الدليل ، يتم تجاهل الخيار إلى
تأكد من أن ترتيب البحث الافتراضي لأدلة النظام والمعالجة الخاصة
لم يتم هزيمة رؤوس النظام. لو دير يبدأ بـ "=" ، ثم "=" سيكون
استبدالها ببادئة sysroot ؛ ارى - الجذور -ايسروت.
-o ملف
كتابة الإخراج إلى ملف. هذا هو نفس التحديد ملف باعتباره الخيار الثاني
حجة ل حزب الشعب الكمبودي. دول مجلس التعاون الخليجي له تفسير مختلف للحجة الثانية غير الخيار ،
لذلك يجب عليك استخدام -o لتحديد ملف الإخراج.
الجدار شاحن
يقوم بتشغيل جميع التحذيرات الاختيارية المرغوبة للكود العادي. في الوقت الحاضر هذا
is - تعليق, -كتابات, -مولتيشار وتحذيرًا بشأن ترقية عدد صحيح تسبب أ
تغيير تعبيرات تسجيل الدخول "#if". لاحظ أن العديد من تحذيرات المعالج
بشكل افتراضي وليس لديك خيارات للتحكم فيها.
- تعليق
-ملاحظات
تحذير عند تسلسل بدء تعليق /* يظهر في /* التعليق ، أو كلما أ
يظهر الخط المائل العكسي الجديد في ملف // تعليق. (كلا الشكلين لهما نفس التأثير.)
-كتابات
لا يمكن أن تؤثر معظم الأشكال الثلاثية في التعليقات على معنى البرنامج. ومع ذلك ، أ
خط الرسم البياني الذي من شأنه أن يشكل سطرًا جديدًا هاربًا (؟؟ / في نهاية السطر) يمكن ، بواسطة
تغيير مكان بدء التعليق أو نهايته. لذلك ، فقط الأشكال الثلاثية التي من شأنها أن تتشكل
تُصدر الأسطر الجديدة التي تم تخطيها تحذيرات داخل تعليق.
هذا الخيار متضمن بواسطة الجدار شاحن. إذا الجدار شاحن لا يزال هذا الخيار ممكّنًا
ما لم يتم تمكين أشكال الرسم البياني. للحصول على تحويل ثلاثي الأبعاد بدون تحذيرات ، ولكن احصل على
الآخر الجدار شاحن تحذيرات ، استخدم -الخط الجدار شاحن -لا-تريغرافس.
-تقليدي
تحذير من بعض التركيبات التي تتصرف بشكل مختلف في المعيار التقليدي و ISO C. أيضًا
تحذير بشأن تركيبات ISO C التي لا تحتوي على مكافئ C تقليدي ، وتشكل مشكلة
التركيبات التي يجب تجنبها.
- وندف
تحذير عند مواجهة معرّف ليس ماكروًا في ملف #إذا التوجيه،
خارج تعريف. يتم استبدال هذه المعرفات بصفر.
-فاخر-وحدات الماكرو
تحذير من وحدات الماكرو المحددة في الملف الرئيسي غير المستخدمة. الماكرو مستعمل اذا كانت
توسعت أو اختبرت من أجل الوجود مرة واحدة على الأقل. سوف يحذر المعالج المسبق أيضًا إذا
لم يتم استخدام الماكرو في وقت إعادة تعريفه أو عدم تحديده.
تضمين وحدات الماكرو المضمنة ووحدات الماكرو المحددة في سطر الأوامر ووحدات الماكرو المحددة في
لا يتم تحذير الملفات منها.
ملحوظة: إذا تم استخدام ماكرو بالفعل ، ولكن تم استخدامه فقط في الكتل الشرطية التي تم تخطيها ، إذن
ستقوم CPP بالإبلاغ عنها على أنها غير مستخدمة. لتجنب التحذير في مثل هذه الحالة ، قد تتحسن
نطاق تعريف الماكرو ، على سبيل المثال ، نقله إلى أول تم تخطيه
منع. بدلاً من ذلك ، يمكنك تقديم استخدام وهمي بشيء مثل:
# إذا حددت the_macro_causing_the_warning
#endif
-وينديف- تسميات
تحذير عندما يكون ملف #else أو #endif تليها نص. يحدث هذا عادة في
كود النموذج
#إذا فو
# آخر FOO
#endif فو
يجب أن يكون "FOO" الثاني والثالث في التعليقات ، لكن غالبًا ما لا يكونا في البرامج القديمة.
يتم تشغيل هذا التحذير بشكل افتراضي.
-خطأ
تحويل جميع التحذيرات إلى أخطاء جسيمة. سيكون كود المصدر الذي يطلق التحذيرات
مرفوض.
-Wsystem- رؤوس
إصدار تحذيرات للتعليمات البرمجية في رؤوس النظام. عادة ما تكون هذه غير مفيدة في العثور عليها
الأخطاء في التعليمات البرمجية الخاصة بك ، وبالتالي قمعها. إذا كنت مسؤولاً عن النظام
مكتبة ، قد ترغب في رؤيتها.
-w قم بإلغاء جميع التحذيرات ، بما في ذلك تلك التي يصدرها GNU CPP افتراضيًا.
-متحذلق
إصدار كافة التشخيصات الإلزامية المدرجة في المعيار C. بقي بعضهم
بشكل افتراضي ، حيث يتم تشغيلها بشكل متكرر على رمز غير ضار.
- أخطاء متداخلة
قم بإصدار جميع التشخيصات الإلزامية ، وجعل جميع التشخيصات الإلزامية في أخطاء.
وهذا يشمل التشخيصات الإلزامية التي تصدر دول مجلس التعاون الخليجي بدونها -متحذلق ولكن يعامل مثل
التحذيرات.
-M بدلاً من إخراج نتيجة المعالجة المسبقة ، أخرج قاعدة مناسبة لـ جعل
يصف تبعيات الملف المصدر الرئيسي. يخرج المعالج المسبق واحد
جعل القاعدة التي تحتوي على اسم ملف الكائن لملف المصدر هذا ، ونقطتان ، والأسماء
لجميع الملفات المضمنة ، بما في ذلك تلك الواردة من -تضمن or -يماكروس أمر-
خيارات الخط.
ما لم يتم تحديد ذلك صراحة (مع -MT or -MQ) ، يتكون اسم ملف الكائن من امتداد
اسم الملف المصدر مع أي لاحقة تم استبدالها بلاحقة ملف الكائن وبأي
إزالة أجزاء الدليل الرائدة. إذا كان هناك العديد من الملفات المضمنة ، فإن القاعدة هي
تنقسم إلى عدة أسطر باستخدام \-خط جديد. القاعدة ليس لها أوامر.
لا يمنع هذا الخيار إخراج تصحيح المعالج ، مثل -dM. لتجنب
خلط إخراج التصحيح هذا مع قواعد التبعية يجب أن تحدد بشكل صريح
ملف الإخراج مع التبعية -مف، أو استخدام متغير بيئة مثل
DEPENDENCIES_OUTPUT. سيظل إخراج التصحيح يتم إرساله إلى دفق الإخراج العادي كـ
العادية.
مرور -M للسائق يعني -E، ويمنع التحذيرات بضمنة -w.
-MM اعجاب -M لكن لا تذكر ملفات الرأس الموجودة في أدلة رؤوس النظام ،
ولا ملفات الرأس التي تم تضمينها ، بشكل مباشر أو غير مباشر ، من هذا الرأس.
هذا يعني أن اختيار الأقواس الزاوية أو علامات الاقتباس المزدوجة في تتضمن #
التوجيه في حد ذاته لا يحدد ما إذا كان هذا الرأس سيظهر في -MM
ناتج التبعية. هذا هو تغيير طفيف في دلالات من الإصدارات الخليجية 3.0 و
سابقا.
-مف ملف
عند استخدامها مع -M or -MM، يحدد ملفًا لكتابة التبعيات إليه. إذا كان الجواب لا -مف
يُعطى التبديل ، يرسل المعالج المسبق القواعد إلى نفس المكان الذي كان من الممكن أن يرسله
الإخراج المجهزة.
عند استخدامها مع خيارات السائق -MD or - MMD, -مف يتجاوز التبعية الافتراضية
ملف إلاخراج.
-مغ بالتزامن مع خيار مثل -M طلب توليد التبعية ، -مغ يفترض
ملفات الرأس المفقودة هي ملفات يتم إنشاؤها وإضافتها إلى قائمة التبعية بدون
رفع خطأ. اسم ملف التبعية مأخوذ مباشرة من "#include"
التوجيه بدون مسبقة أي مسار. -مغ يمنع أيضًا الإخراج المجهز مسبقًا ، مثل ملف
ملف رأس مفقود يجعل هذا عديم الفائدة.
تُستخدم هذه الميزة في التحديث التلقائي لملفات makefiles.
-MP يوجه هذا الخيار CPP إلى إضافة هدف زائف لكل تبعية بخلاف
الملف الرئيسي ، مما يجعل كل منها يعتمد على لا شيء. تعمل هذه القواعد الوهمية على حل الأخطاء
جعل يعطي إذا قمت بإزالة ملفات الرأس دون تحديث ملف ماكيفيلي كثيرا.
هذا هو الناتج النموذجي:
test.o: test.c test.h
اختبار.ح:
-MT الهدف
قم بتغيير هدف القاعدة المنبعث من إنشاء التبعية. افتراضيا CPP يأخذ
اسم ملف الإدخال الرئيسي ، يحذف أي مكونات دليل وأي لاحقة ملف
مثل .c، وإلحاق لاحقة الكائن المعتادة للنظام الأساسي. والنتيجة هي الهدف.
An -MT الخيار سيحدد الهدف ليكون بالضبط السلسلة التي تحددها. إن أردت
أهداف متعددة ، يمكنك تحديدها كوسيطة واحدة ل -MT، أو استخدام ملفات متعددة
-MT خيارات.
على سبيل المثال، -MT "$ (objpfx) foo.o" ممكن يعطي
$ (objpfx) foo.o: foo.c
-MQ الهدف
مثل -MT، ولكنه يقتبس أي أحرف خاصة لعملها.
-MQ "$ (objpfx) foo.o" يعطي
$$ (objpfx) foo.o: foo.c
يتم اقتباس الهدف الافتراضي تلقائيًا ، كما لو تم إعطاؤه مع -MQ.
-MD -MD ما يعادل -M -مف ملف، ما عدا ذلك -E ليس ضمنيا. السائق
يحدد ملف بناءً على ما إذا كان ملف -o يتم إعطاء الخيار. إذا كان الأمر كذلك ، يستخدم السائق ملف
حجة ولكن مع لاحقة .dوإلا فإنه يأخذ اسم ملف الإدخال ،
يزيل أي مكونات الدليل واللاحقة ، ويطبق أ .d لاحقة.
If -MD يستخدم بالتزامن مع -Eاي -o من المفهوم أن التبديل لتحديد
ملف الإخراج التبعية ، ولكن إذا تم استخدامه بدون -E، كل -o من المفهوم أن تحدد أ
الهدف ملف.
منذ -E ليس ضمنيا ، -MD يمكن استخدامها لإنشاء ملف مخرجات التبعية كملف
الآثار الجانبية لعملية التجميع.
- MMD
اعجاب -MD باستثناء ذكر ملفات رأس المستخدم فقط ، وليس ملفات رأس النظام.
-fpch-deps
عند استخدام الرؤوس المترجمة مسبقًا ، ستؤدي هذه العلامة إلى ظهور إشارات التبعية-الإخراج إلى
يسرد أيضًا الملفات من تبعيات الرأس المترجمة مسبقًا. إذا لم يتم تحديده فقط
سيتم سرد الرأس المترجم مسبقًا وليس الملفات التي تم استخدامها لإنشائه
لأنه لا يتم استشارة هذه الملفات عند استخدام رأس مترجم مسبقًا.
-fpch-المعالجة المسبقة
يسمح هذا الخيار باستخدام رأس مترجم مسبقًا مع -E. يقوم بإدراج ملف
"#pragma"، "#pragma GCC pch_preprocess"اسم الملف"" في الإخراج لتحديد المكان
حيث تم العثور على الرأس المترجمة مسبقًا ، و اسم الملف. عندما -مجهزة في
استخدام ، يتعرف GCC على هذا "#pragma" ويقوم بتحميل PCH.
يتم إيقاف تشغيل هذا الخيار افتراضيًا ، لأن الناتج الناتج المعالج مسبقًا هو فقط
مناسب حقًا كمدخل إلى دول مجلس التعاون الخليجي. يتم تشغيله بواسطة حفظ مؤقت.
يجب ألا تكتب هذا "#pragma" في التعليمات البرمجية الخاصة بك ، ولكن يمكنك تحرير ملف
اسم الملف إذا كان ملف PCH متاحًا في موقع مختلف. قد يكون اسم الملف
مطلق أو قد يكون متعلقًا بالدليل الحالي لدول مجلس التعاون الخليجي.
-x c
-x ج ++
-x ج موضوعية
-x المجمع مع cpp
حدد لغة المصدر: C أو C ++ أو Objective-C أو التجميع. هذا لا علاقة له به
بمطابقة المعايير أو الامتدادات ؛ إنه يختار فقط بناء الجملة الأساسي
توقع. إذا لم تقدم أيًا من هذه الخيارات ، فسوف يستنتج cpp اللغة من
امتداد الملف المصدر: .c, . سم مكعب, .mالطرق أو .S. بعض الامتدادات الشائعة الأخرى لـ
يتم التعرف أيضًا على C ++ والتجميع. إذا لم يتعرف cpp على الامتداد ، فسيتم
سيعامل الملف على أنه C ؛ هذا هو الوضع الأكثر عمومية.
ملحوظة: الإصدارات السابقة من cpp قبلت ملف -لانغ الخيار الذي حدد كلا من
اللغة ومستوى توافق المعايير. تم حذف هذا الخيار لأن
يتعارض مع -l الخيار.
-std =معيار
-انسى
حدد المعيار الذي يجب أن يتوافق معه الرمز. يعرف CPP حاليًا عن C
ومعايير C ++ ؛ يمكن إضافة الآخرين في المستقبل.
معيار قد يكون أحد:
"c90"
"c89"
"iso9899: 1990"
معيار ISO C من عام 1990. c90 هو الاختصار المعتاد لهذا الإصدار من
المعيار.
تشير -انسى الخيار يعادل -std = c90.
"iso9899: 199409"
معيار 1990 C ، بصيغته المعدلة في 1994.
"iso9899: 1999"
"c99"
"iso9899: 199x"
"c9x"
معيار ISO C المنقح ، المنشور في ديسمبر 1999. قبل النشر ، هذا
كان يعرف باسم C9X.
"iso9899: 2011"
"c11"
"c1x"
معيار ISO C المنقح ، المنشور في ديسمبر 2011. قبل النشر ، هذا
كان يعرف باسم C1X.
"gnu90"
"gnu89"
معيار C لعام 1990 بالإضافة إلى امتدادات GNU. هذا هو الافتراضي.
"gnu99"
"gnu9x"
معيار 1999 C بالإضافة إلى امتدادات GNU.
"gnu11"
"gnu1x"
معيار 2011 C بالإضافة إلى امتدادات GNU.
"c ++ 98"
معيار ISO C ++ لعام 1998 بالإضافة إلى التعديلات.
"gnu ++ 98"
كمثل -std = c ++ 98 بالإضافة إلى امتدادات جنو. هذا هو الإعداد الافتراضي لرمز C ++.
-أنا- تقسيم مسار التضمين. أي أدلة محددة مع -I خيارات من قبل -أنا- .
تم البحث فقط عن الرؤوس المطلوبة بـ "#include"ملف""؛ لم يتم البحث عنها
"#يشململف> ". إذا تم تحديد أدلة إضافية مع -I خيارات بعد
-أنا-، يتم البحث عن تلك الدلائل للجميع تتضمن # توجيهات.
بالإضافة إلى ذلك، -أنا- يمنع استخدام دليل دليل الملف الحالي كملف
دليل البحث الأول عن "#include"ملف"". تم إهمال هذا الخيار.
-نوستدينك
لا تبحث في دلائل النظام القياسية عن ملفات الرأس. الدلائل فقط
التي حددتها مع -I الخيارات (ودليل الملف الحالي ، إذا كان
المناسب).
-نوستدينك ++
لا تبحث عن ملفات الرأس في الدلائل المعيارية الخاصة بـ C ++ ، ولكن لا تزال تفعل ذلك
البحث في الدلائل القياسية الأخرى. (يُستخدم هذا الخيار عند إنشاء C ++
مكتبة.)
-تضمن ملف
طريقة عملنا ملف كما لو أن "#include" file "" ظهر على أنه السطر الأول من المصدر الأساسي
ملف. ومع ذلك ، تم البحث عن الدليل الأول ملف هو عمل المعالج
دليل بدلًا من ذلك of الدليل الذي يحتوي على ملف المصدر الرئيسي. إذا لم يتم العثور عليها
هناك ، يتم البحث عنه في باقي سلسلة البحث "# include" ... "" كـ
العادية.
إذا كانت متعددة -تضمن الخيارات معطاة ، يتم تضمين الملفات بالترتيب
تظهر في سطر الأوامر.
-يماكروس ملف
بالضبط مثل -تضمن، باستثناء أن أي ناتج ينتج عن المسح ملف هذا خطئ
بعيدا. تظل وحدات الماكرو التي تحددها محددة. هذا يسمح لك بالحصول على كافة وحدات الماكرو
من رأس بدون معالجة إعلاناتها أيضًا.
جميع الملفات المحددة بواسطة -يماكروس تتم معالجة قبل كافة الملفات المحددة بواسطة -تضمن.
- بعد دير
بحث دير لملفات الرأس ، ولكن قم بذلك بعد كل الدلائل المحددة مع -I و
تم استنفاد دلائل النظام القياسية. دير يتم التعامل معها كنظام تشمل
الدليل. لو دير يبدأ بـ "=" ، ثم سيتم استبدال "=" بـ sysroot
اختصار؛ ارى - الجذور -ايسروت.
-iprefix بادئة
تحديد بادئة كبادئة لما يلي -iwithprefix والخيارات. إذا كانت البادئة
يمثل دليلاً ، يجب عليك تضمين الملف النهائي /.
-iwithprefix دير
-iwithprefix قبل ذلك دير
ألحق دير إلى البادئة المحددة مسبقًا بـ -iprefix، وأضف الناتج
دليل لتضمين مسار البحث. -iwithprefix قبل ذلك يضعها في نفس المكان -I
سيكون؛ -iwithprefix يضعها حيث - بعد سيكون.
-ايسروت دير
هذا الخيار مثل - الجذور الخيار ، ولكنه ينطبق فقط على ملفات الرأس (باستثناء ملفات
أهداف داروين ، حيث تنطبق على كل من ملفات الرأس والمكتبات). انظر
- الجذور خيار لمزيد من المعلومات.
-متعدد دير
استعمل دير كدليل فرعي للدليل الذي يحتوي على رؤوس C ++ الخاصة بالهدف.
-نظام دير
بحث دير لملفات الرأس ، بعد كل الدلائل المحددة بواسطة -I ولكن قبل
دلائل النظام القياسية. قم بتمييزه كدليل نظام ، بحيث يحصل على نفس الشيء
معاملة خاصة كما يتم تطبيقها على أدلة النظام القياسية. لو دير يبدأ
بـ "=" ، ثم سيتم استبدال "=" ببادئة sysroot ؛ ارى - الجذور
-ايسروت.
-انا اقتبس دير
بحث دير فقط لملفات الرأس المطلوبة مع "#include"ملف""؛ هم ليسوا
بحثت عن "# includeملف> "، قبل كافة الدلائل المحددة بواسطة -I وقبل
دلائل النظام القياسية. لو دير تبدأ بـ "=" ، ثم سيتم استبدال "=" بـ
بادئة sysroot ؛ ارى - الجذور -ايسروت.
- التوجيهات فقط
عند المعالجة المسبقة ، تعامل مع التوجيهات ، لكن لا تقم بتوسيع وحدات الماكرو.
يعتمد سلوك الخيار على -E -مجهزة خيارات.
بدافع -E، المعالجة المسبقة تقتصر على التعامل مع التوجيهات مثل "#define" ،
"#ifdef" و "# Error". عمليات المعالجة الأولية الأخرى ، مثل توسيع الماكرو و
لا يتم تنفيذ تحويل الرسم البياني. بالإضافة إلى ذلك ، فإن -د الخيار ضمنيًا
تمكين.
بدافع -مجهزة، التحديد المسبق لسطر الأوامر ومعظم وحدات الماكرو المضمنة هو
معاق. يتم التعامل مع وحدات الماكرو مثل "__LINE__" ، والتي تعتمد على السياق
بشكل طبيعي. يتيح ذلك تجميع الملفات التي سبق معالجتها بـ "-E
-fdirectives-only ".
مع كلاهما -E -مجهزة، قواعد ل -مجهزة حق الاولويه او حق التقدم. هذه
يتيح المعالجة المسبقة الكاملة للملفات التي سبق معالجتها بـ "-E
-fdirectives-only ".
-fdollars- في-المعرفات
استمر $ في المعرفات.
- المعرفات الموسعة
قبول أسماء الأحرف العالمية في المعرفات. يتم تمكين هذا الخيار افتراضيًا
لـ C99 (والإصدارات اللاحقة C القياسية) و C ++.
-رؤوس-نظام-متعارف عليه-
عند المعالجة المسبقة ، لا تقصر مسارات رأس النظام باستخدام تحديد العنوان المتعارف عليه.
-مجهزة
وضح للمعالج أن ملف الإدخال قد تمت معالجته مسبقًا. هذه
يمنع أشياء مثل توسيع الماكرو ، وتحويل المثلثات ، وهروب السطر الجديد ،
وتجهيز معظم التوجيهات. المعالج لا يزال يتعرف ويزيل
من التعليقات ، بحيث يمكنك تمرير ملف تمت معالجته مسبقًا -C إلى المترجم بدون
مشاكل. في هذا الوضع ، يكون المعالج الأولي المدمج أكثر بقليل من رمز مميز
للأطراف الأمامية.
-مجهزة ضمنيًا إذا كان ملف الإدخال يحتوي على أحد الامتدادات .i, .ثانيا or .mi.
هذه هي الامتدادات التي يستخدمها GCC للملفات المعالجة مسبقًا التي تم إنشاؤها بواسطة حفظ مؤقت.
-ftabstop =عرض
اضبط المسافة بين علامات الجدولة. هذا يساعد تقرير المعالج المسبق العمود الصحيح
الأرقام في التحذيرات أو الأخطاء ، حتى إذا ظهرت علامات التبويب على السطر. إذا كانت القيمة أقل
من 1 أو أكبر من 100 ، يتم تجاهل الخيار. الافتراضي هو 8.
-fdebug-CPP
هذا الخيار مفيد فقط لتصحيح أخطاء GCC. عند استخدامها مع -E، مقالب التصحيح
معلومات حول خرائط الموقع. يسبق كل رمز مميز في الإخراج تفريغ
الخريطة التي ينتمي إليها موقعها. تفريغ الخريطة التي تحتوي على موقع الرمز المميز
سيكون:
{"P": F ؛ "F": F ؛ "L": ؛ "ج": ؛"س": ؛ "م": ؛ "ه": ، "loc": }
عند استخدامها بدون -E، هذا الخيار ليس له أي تأثير.
التوسع الكلي[=مستوى]
تتبع مواقع الرموز المميزة عبر التوسعات الكلية. هذا يسمح للمترجم بالبث
التشخيص حول مكدس توسيع الماكرو الحالي عند حدوث خطأ تجميع في
توسع ماكرو. استخدام هذا الخيار يجعل المعالج والمجمع يستهلكان
المزيد من الذاكرة. ال مستوى يمكن استخدام المعلمة لاختيار مستوى دقة الرمز المميز
تتبع الموقع وبالتالي تقليل استهلاك الذاكرة إذا لزم الأمر. قيمة 0 of
مستوى يقوم بإلغاء تنشيط هذا الخيار تمامًا كما لو كان لا التوسع الكلي كان حاضرًا في
سطر الأوامر. قيمة 1 يتتبع مواقع الرموز المميزة في الوضع المتدهور من أجل
الحد الأدنى من سعة الذاكرة. في هذا الوضع ، تكون جميع الرموز المميزة الناتجة عن توسيع ملف
حجة الماكرو الشبيه بالوظيفة لها نفس الموقع. قيمة 2 المسارات المميزة
مواقع بالكامل. هذه القيمة هي الذاكرة الأكثر جوعًا. عندما يتم إعطاء هذا الخيار
لا توجد وسيطة ، قيمة المعلمة الافتراضية هي 2.
لاحظ أنه يتم تنشيط "-ftrack-macro-extension = 2" افتراضيًا.
-fexec-charset =محارف
قم بتعيين مجموعة أحرف التنفيذ ، المستخدمة في ثوابت السلسلة والحرف. الافتراضي
هو UTF-8. محارف يمكن أن يكون أي ترميز تدعمه مكتبة "iconv" للنظام
نمط.
-fwide-exec-charset =محارف
عيّن مجموعة أحرف التنفيذ العريضة ، والمستخدمة لسلسلة واسعة وثوابت الأحرف.
الافتراضي هو UTF-32 أو UTF-16 ، أيهما يتوافق مع عرض "wchar_t". كما
مع -fexec-charset, محارف يمكن أن يكون أي ترميز يدعمه رمز "iconv" الخاص بالنظام
روتين المكتبة ومع ذلك ، ستواجه مشاكل مع الترميزات غير الملائمة
بالضبط في "wchar_t".
- إدخال - محارف =محارف
قم بتعيين مجموعة أحرف الإدخال ، المستخدمة للترجمة من مجموعة أحرف الإدخال
ملف إلى مجموعة الأحرف المصدر المستخدمة من قبل GCC. إذا لم تحدد الإعدادات المحلية ، أو GCC
لا يمكن الحصول على هذه المعلومات من الإعدادات المحلية ، الافتراضي هو UTF-8. هذا يمكن أن يكون
تم تجاوزه بواسطة الإعدادات المحلية أو خيار سطر الأوامر هذا. حاليا الأمر-
يكون لخيار الخط الأسبقية إذا كان هناك تعارض. محارف يمكن أن يكون أي ترميز
بدعم من روتين مكتبة النظام "iconv".
-العمل-الدليل
قم بتمكين إنشاء علامات خطية في إخراج المعالج المسبق التي ستسمح للمترجم
تعرف على دليل العمل الحالي في وقت المعالجة المسبقة. عندما يكون هذا الخيار
ممكّنًا ، سيصدر المعالج ، بعد علامة الخط الأولي ، علامة خطية ثانية
مع دليل العمل الحالي متبوعًا بشرطتين مائلتين. سيستخدم دول مجلس التعاون الخليجي هذا
الدليل ، عندما يكون موجودًا في المدخلات المعالجة مسبقًا ، حيث ينبعث الدليل بتنسيق
دليل العمل الحالي في بعض تنسيقات معلومات التصحيح. هذا الخيار هو
ممكّنًا ضمنيًا إذا تم تمكين معلومات تصحيح الأخطاء ، ولكن يمكن منع ذلك باستخدام
الشكل المنفي -fno- العمل- الدليل. إذا كان -P العلم موجود في الأمر
سطر ، هذا الخيار ليس له أي تأثير ، حيث لا يتم إصدار أي توجيهات "# line" على الإطلاق.
-fno-show-العمود
لا تطبع أرقام الأعمدة في التشخيص. قد يكون هذا ضروريًا إذا كانت التشخيصات
يتم فحصها بواسطة برنامج لا يفهم أرقام الأعمدة ، مثل
ديجانو.
-A فاعل=إجابة
قم بعمل تأكيد مع المسند فاعل والجواب إجابة. هذا النموذج
يفضل الشكل الأقدم -A فاعل(إجابة)، والذي لا يزال مدعومًا ، لأنه
لا يستخدم رموز شل الخاصة.
-A -فاعل=إجابة
إلغاء تأكيد مع المسند فاعل والجواب إجابة.
-دكار
الرسوم هي سلسلة من واحد أو أكثر من الأحرف التالية ، ويجب ألا تكون كذلك
مسبوقة بمسافة. يتم تفسير الأحرف الأخرى من قبل المترجم الصحيح ، أو
محفوظة للإصدارات المستقبلية من GCC ، وبالتالي يتم تجاهلها بصمت. إذا حددت
الشخصيات التي يتعارض سلوكها ، والنتيجة غير محددة.
M بدلاً من الإخراج العادي ، قم بإنشاء قائمة بـ # تعريف توجيهات لجميع
وحدات الماكرو المحددة أثناء تنفيذ المعالج المسبق ، بما في ذلك المحدد مسبقًا
وحدات الماكرو. يمنحك هذا طريقة لمعرفة ما تم تحديده مسبقًا في نسختك من
المعالج. بافتراض عدم وجود ملف لديك foo.h، الامر
لمس foo.h ؛ cpp -dM foo.h
سيعرض كافة وحدات الماكرو المحددة مسبقًا.
إذا كنت تستخدم -dM بدون ال -E اختيار، -dM يتم تفسيره على أنه مرادف لـ
-fdump- rtl- ماخ.
D اعجاب M إلا من ناحيتين: إنه كذلك ليس تضمين وحدات الماكرو المحددة مسبقًا ، و
النتائج على حد سواء ال # تعريف التوجيهات ونتيجة المعالجة المسبقة. كلا النوعين
من الإخراج انتقل إلى ملف الإخراج القياسي.
N اعجاب D، ولكن ينبعث منها أسماء الماكرو فقط ، وليس توسعاتها.
I الناتج تتضمن # التوجيهات بالإضافة إلى نتيجة المعالجة المسبقة.
U اعجاب D فيما عدا ذلك فقط وحدات الماكرو الموسعة أو التي يتم اختبار تعريفها
في توجيهات المعالج ، هي الإخراج ؛ الإخراج يتأخر حتى استخدام أو
اختبار الماكرو و # صندوق يتم أيضًا إخراج التوجيهات لوحدات الماكرو التي تم اختبارها ولكن
غير محدد في ذلك الوقت.
-P منع إنشاء علامات خطية في الإخراج من المعالج المسبق. هذا قد يكون
مفيد عند تشغيل المعالج على شيء ليس رمز C ، وسيتم إرساله
إلى برنامج قد يتم الخلط بينه وبين محددات الخطوط.
-C لا تتجاهل التعليقات. يتم تمرير جميع التعليقات إلى ملف الإخراج ، باستثناء
للتعليقات في التعليمات التي تمت معالجتها ، والتي يتم حذفها مع التوجيه.
يجب أن تكون مستعدًا للآثار الجانبية عند الاستخدام -C؛ يؤدي إلى المعالج المسبق
التعامل مع التعليقات كرموز في حد ذاتها. على سبيل المثال ، التعليقات التي تظهر في
بداية ما يمكن أن يكون سطرًا توجيهيًا لها تأثير تحويل هذا الخط إلى ملف
خط المصدر العادي ، لأن الرمز المميز الأول على السطر لم يعد ملف #.
-نسخة لا تتجاهل التعليقات ، بما في ذلك أثناء توسيع الماكرو. هذا مثل -C، إلا
يتم أيضًا تمرير تلك التعليقات المضمنة في وحدات الماكرو إلى ملف الإخراج حيث
يتم توسيع الماكرو.
بالإضافة إلى الآثار الجانبية لل -C الخيار ، و -نسخة الخيار يسبب كل نمط C ++
التعليقات داخل ماكرو ليتم تحويلها إلى تعليقات على النمط C. هذا لمنع في وقت لاحق
استخدام هذا الماكرو من التعليق بدون قصد على باقي سطر المصدر.
تشير -نسخة يستخدم الخيار بشكل عام لدعم تعليقات الوبر.
-التقليدية- CPP
حاول تقليد سلوك معالجات C القديمة ، على عكس ISO C
المعالجات.
-الخط
تسلسل الرسم البياني. هذه تسلسلات من ثلاثة أحرف ، تبدأ جميعها بـ
??، التي يتم تحديدها بواسطة ISO C لتقف على الأحرف الفردية. على سبيل المثال، ؟؟ / المدرجات
For \، وبالتالي '؟؟/ن' هو ثابت حرف لسطر جديد. بشكل افتراضي ، يتجاهل GCC
الأشكال الثلاثية ، ولكن في أوضاع المطابقة القياسية تقوم بتحويلها. انظر -الأمراض المنقولة جنسيا -انسى
خيارات.
الأشكال التسعة وبدائلها هي
Trigraph: ؟؟ (؟؟) ؟؟ <؟؟> ؟؟ = ؟؟ / ؟؟ ' ؟؟! ؟؟ -
الاستبدال: [] {} # \ ^ | ~
-Remap
قم بتمكين رمز خاص للتغلب على أنظمة الملفات التي تسمح فقط بالملفات القصيرة جدًا
أسماء ، مثل MS-DOS.
--مساعدة
--تهدف المساعدة
اطبع نصًا يصف جميع خيارات سطر الأوامر بدلاً من المعالجة المسبقة لأي شيء.
-v وضع مفصل. اطبع رقم إصدار GNU CPP في بداية التنفيذ ، و
تقرير الشكل النهائي لمسار التضمين.
-H اطبع اسم كل ملف رأس مستخدم ، بالإضافة إلى الأنشطة العادية الأخرى. كل
تم وضع مسافة بادئة للاسم لإظهار مدى عمق تتضمن # كومة هو عليه. رأس مترجمة مسبقًا
تتم أيضًا طباعة الملفات ، حتى لو تبين أنها غير صالحة ؛ مترجم غير صالح
تتم طباعة ملف الرأس باستخدام ... x وواحد صالح به ...! .
-الإصدار
--الإصدار
اطبع رقم إصدار GNU CPP. بشرطة واحدة ، انتقل إلى المعالجة المسبقة كالمعتاد.
بشرطتين ، اخرج فورًا.
مرور مزيد من الخيارات إلى ال المجمع
يمكنك تمرير الخيارات إلى المجمّع.
-وا ،خيار
تجاوز خيار كخيار للمجمع. لو خيار يحتوي على فواصل ، وهو مقسم
في خيارات متعددة بالفواصل.
-مجمع اكس خيار
تجاوز خيار كخيار للمجمع. يمكنك استخدام هذا لتوفير نظام معين
خيارات المجمّع التي لا يتعرف عليها مجلس التعاون الخليجي.
إذا كنت تريد تمرير خيار يأخذ حجة ، فيجب عليك استخدام -مجمع اكس مرتين،
مرة واحدة للخيار ومرة للحجة.
مزيد من الخيارات For ربط
تدخل هذه الخيارات حيز التنفيذ عندما يربط المترجم ملفات الكائنات في ملف تنفيذي
ملف إلاخراج. لا معنى لها إذا كان المترجم لا يقوم بخطوة الارتباط.
اسم ملف الكائن
يعتبر اسم الملف الذي لا ينتهي بلاحقة خاصة معترف بها لتسمية ملف
ملف الكائن أو المكتبة. (يتم تمييز ملفات الكائنات عن المكتبات بواسطة الرابط
وفقًا لمحتويات الملف.) في حالة إجراء الارتباط ، يتم استخدام ملفات الكائنات هذه كملف
المدخلات للرابط.
-c
-S
-E إذا تم استخدام أي من هذه الخيارات ، فلن يتم تشغيل الرابط ، وأسماء ملفات الكائن
لا ينبغي أن تستخدم الحجج.
-fuse-ld = bfd
استخدم BFD رابط بدلاً من الرابط الافتراضي.
-fuse-ld = ذهب
استخدم الذهب رابط بدلاً من الرابط الافتراضي.
-lمكتبة
-l مكتبة
ابحث في المكتبة المسماة مكتبة عند الربط. (البديل الثاني مع
مكتبة كوسيطة منفصلة فقط للامتثال POSIX ولا يوصى به.)
يحدث فرقًا حيث تكتب هذا الخيار في الأمر ؛ يبحث الرابط
ويعالج المكتبات وملفات الكائنات بالترتيب المحدد لها. هكذا، foo.o
-lz بار يبحث في المكتبة z بعد الملف foo.o لكن قبل بار. إذا بار يشير إلى
وظائف في z، قد لا يتم تحميل هذه الوظائف.
يبحث الرابط في قائمة قياسية من الدلائل للمكتبة ، وهي في الواقع
ملف اسمه مكتبة.أ. ثم يستخدم الرابط هذا الملف كما لو تم تحديده
بالتحديد بالاسم.
تتضمن الدلائل التي تم البحث عنها العديد من أدلة النظام القياسية بالإضافة إلى أي منها أنت
حدد مع -L.
عادةً ما تكون الملفات التي يتم العثور عليها بهذه الطريقة هي ملفات مكتبة --- ملفات أرشيفية يكون أعضاؤها
ملفات الكائن. يتعامل الرابط مع ملف أرشيف عن طريق مسحه بحثًا عن الأعضاء
التي تحدد الرموز التي تمت الإشارة إليها حتى الآن ولكن لم يتم تعريفها. ولكن إذا كان
الملف الذي تم العثور عليه هو ملف كائن عادي ، وهو مرتبط بالطريقة المعتادة. ال
فقط الاختلاف بين استخدام -l الخيار وتحديد اسم الملف هو أن -l
يحيط مكتبة مع ليب .a ويبحث في عدة أدلة.
-lobjc
أنت بحاجة إلى هذه الحالة الخاصة من -l الخيار لربط Objective-C أو
برنامج Objective-C ++.
-نوستارتفيليس
لا تستخدم ملفات بدء تشغيل النظام القياسية عند الربط. النظام القياسي
يتم استخدام المكتبات بشكل طبيعي ، ما لم يتم استخدام -نوستدليب or -Nodefaultlibs .
-Nodefaultlibs
لا تستخدم مكتبات النظام القياسية عند الارتباط. فقط المكتبات التي تحددها
يتم تمريرها إلى الرابط ، والخيارات التي تحدد ارتباط مكتبات النظام ، مثل
as -static-libgcc or -libgcc المشتركة، يتم تجاهله. يتم استخدام ملفات بدء التشغيل القياسية
بشكل طبيعي ، إلا إذا -نوستارتفيليس .
قد يقوم المترجم بإنشاء استدعاءات لـ "memcmp" و "memset" و "memcpy" و "memmove". هؤلاء
عادة ما يتم حل الإدخالات من خلال إدخالات في libc. يجب أن تكون نقاط الدخول هذه
يتم توفيره من خلال آلية أخرى عند تحديد هذا الخيار.
-نوستدليب
لا تستخدم ملفات أو مكتبات بدء تشغيل النظام القياسية عند الارتباط. لا يوجد بدء تشغيل
يتم تمرير الملفات والمكتبات التي تحددها فقط إلى الرابط والخيارات
تحديد ارتباط مكتبات النظام مثل -static-libgcc or -libgcc المشتركة,
يتم تجاهلها.
قد يقوم المترجم بإنشاء استدعاءات لـ "memcmp" و "memset" و "memcpy" و "memmove". هؤلاء
عادة ما يتم حل الإدخالات من خلال إدخالات في libc. يجب أن تكون نقاط الدخول هذه
يتم توفيره من خلال آلية أخرى عند تحديد هذا الخيار.
واحدة من المكتبات القياسية التي تم تجاوزها -نوستدليب -Nodefaultlibs is libgcc.aأو المعلم
مكتبة من الإجراءات الفرعية الداخلية التي تستخدمها دول مجلس التعاون الخليجي للتغلب على أوجه القصور الخاصة
آلات أو احتياجات خاصة لبعض اللغات.
في معظم الحالات ، أنت بحاجة libgcc.a حتى عندما تريد تجنب المكتبات القياسية الأخرى.
بمعنى آخر ، عندما تحدد -نوستدليب or -Nodefaultlibs يجب عليك عادة
تحديد -lgcc أيضا. هذا يضمن عدم وجود مراجع لم يتم حلها إلى
إجراءات فرعية داخلية للمكتبات الخليجية. (مثال على مثل هذا الروتين الفرعي الداخلي
"__main" ، تُستخدم لضمان استدعاء مُنشئ C ++.)
-فطيرة
قم بإنتاج منصب مستقل قابل للتنفيذ على الأهداف التي تدعمه. للتنبؤ
النتائج ، يجب عليك أيضًا تحديد نفس مجموعة الخيارات المستخدمة في التجميع (-fpie,
-fPIE، أو خيارات فرعية للنموذج) عند تحديد خيار الرابط هذا.
-لا-فطيرة
لا تنتج منصب مستقل قابل للتنفيذ.
-ديناميكي
مرر العلم - ديناميكية التصدير إلى رابط ELF ، على الأهداف التي تدعمه. هذه
يوجه الرابط لإضافة جميع الرموز ، وليس الرموز المستخدمة فقط ، إلى الرمز الديناميكي
طاولة. هذا الخيار ضروري لبعض استخدامات "dlopen" أو للسماح بالحصول عليها
backtraces من داخل البرنامج.
-s قم بإزالة كل جدول الرموز ومعلومات النقل من الملف القابل للتنفيذ.
-ثابتة
في الأنظمة التي تدعم الارتباط الديناميكي ، يمنع هذا الارتباط بالملفات المشتركة
المكتبات. على الأنظمة الأخرى ، هذا الخيار ليس له أي تأثير.
-مشاركة
أنتج عنصرًا مشتركًا يمكن ربطه بعد ذلك بكائنات أخرى لتكوين ملف
تنفيذ. لا تدعم كل الأنظمة هذا الخيار. للحصول على نتائج يمكن التنبؤ بها ، يجب عليك
حدد أيضًا نفس مجموعة الخيارات المستخدمة في التجميع (-fpic, -fPICأو نموذج
suboptions) عند تحديد خيار الرابط هذا. [1]
-libgcc المشتركة
-static-libgcc
على الأنظمة التي تقدم libgcc كمكتبة مشتركة ، تفرض هذه الخيارات استخدام
إما النسخة المشتركة أو الثابتة ، على التوالي. إذا لم يكن هناك نسخة مشتركة من libgcc وكان
عندما تم تكوين المترجم ، فإن هذه الخيارات ليس لها أي تأثير.
هناك العديد من المواقف التي يجب أن يستخدم فيها التطبيق ملف libgcc
بدلاً من الإصدار الثابت. الأكثر شيوعًا هو عند التطبيق
يرغب في طرح الاستثناءات والتقاطها عبر مكتبات مشتركة مختلفة. في هذه الحالة،
يجب أن يستخدم كل من المكتبات وكذلك التطبيق نفسه ملفات libgcc.
لذلك ، تضيف برامج تشغيل G ++ و GCJ تلقائيًا -libgcc المشتركة كلما بنيت
مكتبة مشتركة أو ملف تنفيذي رئيسي ، لأن برامج C ++ و Java تستخدم عادةً
استثناءات ، لذلك هذا هو الشيء الصحيح الذي ينبغي عمله.
إذا كنت تستخدم بدلاً من ذلك برنامج التشغيل GCC لإنشاء مكتبات مشتركة ، فقد تجدها
لا ترتبط دائمًا بالمشاركة libgcc. إذا وجد GCC ، في تكوينه
الوقت ، أن لديك رابط غير جنو أو رابط جنو لا يدعم الخيار
--eh- الإطار- تقرير التنمية البشرية، فهو يربط النسخة المشتركة من libgcc في المكتبات المشتركة عن طريق
إفتراضي. وإلا فإنه يستفيد من الرابط ويحسن الارتباط
مع النسخة المشتركة من libgcc، والربط مع الإصدار الثابت من libgcc بواسطة
إفتراضي. هذا يسمح للاستثناءات بالنشر من خلال هذه المكتبات المشتركة ، بدون
تكبد تكاليف الانتقال في وقت تحميل المكتبة.
ومع ذلك ، إذا كان من المفترض أن تقوم مكتبة أو ملف تنفيذي رئيسي برمي أو التقاط استثناءات ، فأنت
يجب ربطه باستخدام برنامج التشغيل G ++ أو GCJ ، بما يتناسب مع اللغات المستخدمة في ملف
البرنامج أو باستخدام الخيار -libgcc المشتركة، بحيث يتم ربطها بالمشاركة
libgcc.
-استاتيك-ليباسان
عندما -fsanitize = العنوان يستخدم الخيار لربط برنامج سائق مجلس التعاون الخليجي
الروابط تلقائيا ضد ليباسان. إذا ليباسان متاح كمكتبة مشتركة ، و
ال -ثابتة الخيار غير مستخدم ، فهذه الروابط مقابل النسخة المشتركة من ليباسان.
تشير -استاتيك-ليباسان الخيار يوجه سائق مجلس التعاون الخليجي للربط ليباسان بشكل ثابت ، بدون
بالضرورة ربط المكتبات الأخرى بشكل ثابت.
-استاتيك-ليبتسان
عندما -فسانيتيز = خيط يستخدم الخيار لربط برنامج سائق مجلس التعاون الخليجي
الروابط تلقائيا ضد ليبتسان. إذا ليبتسان متاح كمكتبة مشتركة ، و
ال -ثابتة الخيار غير مستخدم ، فهذه الروابط مقابل النسخة المشتركة من ليبتسان.
تشير -استاتيك-ليبتسان الخيار يوجه سائق مجلس التعاون الخليجي للربط ليبتسان بشكل ثابت ، بدون
بالضرورة ربط المكتبات الأخرى بشكل ثابت.
-استاتيك- liblsan
عندما -فسانيتيز = تسرب يستخدم الخيار لربط برنامج سائق مجلس التعاون الخليجي
الروابط تلقائيا ضد com.liblsan. إذا com.liblsan متاح كمكتبة مشتركة ، و
ال -ثابتة الخيار غير مستخدم ، فهذه الروابط مقابل النسخة المشتركة من com.liblsan.
تشير -استاتيك- liblsan الخيار يوجه سائق مجلس التعاون الخليجي للربط com.liblsan بشكل ثابت ، بدون
بالضرورة ربط المكتبات الأخرى بشكل ثابت.
-ستاتيك-ليبوبسان
عندما -fsanitize = غير محدد يستخدم الخيار لربط برنامج سائق مجلس التعاون الخليجي
الروابط تلقائيا ضد libubsan. إذا libubsan متاح كمكتبة مشتركة ،
و -ثابتة الخيار غير مستخدم ، فهذه الروابط مقابل النسخة المشتركة من
libubsan. -ستاتيك-ليبوبسان الخيار يوجه سائق مجلس التعاون الخليجي للربط libubsan
بشكل ثابت ، دون بالضرورة ربط المكتبات الأخرى بشكل ثابت.
-الثابت- libmpx
عندما - تحقق - مؤشر حدود -مبكسل الخيارات المستخدمة لربط برنامج دول مجلس التعاون الخليجي
السائق تلقائيا الروابط ضد libmpx. إذا libmpx متاح كملف
مكتبة و -ثابتة لم يتم استخدام الخيار ، ثم هذه الروابط ضد المشتركة
نسخة من libmpx. -الثابت- libmpx الخيار يوجه سائق مجلس التعاون الخليجي للربط libmpx
بشكل ثابت ، دون بالضرورة ربط المكتبات الأخرى بشكل ثابت.
-static-libmpxwrappers
عندما - تحقق - مؤشر حدود -مبكسل الخيارات تستخدم لربط برنامج بدون
تستخدم أيضا أغلفة -fno- chkp- استخدام، يقوم برنامج التشغيل GCC تلقائيًا بالارتباط بملفات
libmpxwrappers. إذا libmpxwrappers متاح كمكتبة مشتركة ، و -ثابتة
الخيار غير مستخدم ، فهذه الروابط مقابل النسخة المشتركة من libmpxwrappers.
-static-libmpxwrappers الخيار يوجه سائق مجلس التعاون الخليجي للربط libmpxwrappers
بشكل ثابت ، دون بالضرورة ربط المكتبات الأخرى بشكل ثابت.
-static-libstdc ++
عندما ز ++ يستخدم البرنامج لربط برنامج C ++ ، وعادة ما يتم ربطه تلقائيًا
ضد libstdc ++. إذا libstdc ++ متاح كمكتبة مشتركة ، و -ثابتة
الخيار غير مستخدم ، فهذه الروابط مقابل النسخة المشتركة من libstdc ++. هذا هو
عادة بخير. ومع ذلك ، من المفيد أحيانًا تجميد إصدار libstdc ++
يستخدمه البرنامج دون الانتقال إلى ارتباط ثابت بالكامل. ال
-static-libstdc ++ الخيار يوجه ز ++ سائق لربط libstdc ++ بشكل ثابت ، بدون
بالضرورة ربط المكتبات الأخرى بشكل ثابت.
-رمزي
ربط المراجع بالرموز العالمية عند إنشاء كائن مشترك. تحذير بشأن أي
المراجع التي لم يتم حلها (ما لم يتم تجاوزها بواسطة خيار محرر الارتباط -إكسلينكر -z
-إكسلينكر defs). فقط عدد قليل من الأنظمة تدعم هذا الخيار.
-T سيناريو
استعمل سيناريو باعتباره البرنامج النصي رابط. هذا الخيار مدعوم من قبل معظم الأنظمة التي تستخدم الامتداد
رابط جنو. في بعض الأهداف ، مثل أهداف عارية بدون نظام تشغيل ،
ال -T قد يكون الخيار مطلوبًا عند الربط لتجنب الإشارات إلى رموز غير محددة.
-إكسلينكر خيار
تجاوز خيار كخيار للرابط. يمكنك استخدام هذا لتوفير نظام معين
خيارات الرابط التي لا يتعرف عليها GCC.
إذا كنت تريد تمرير خيار يأخذ وسيطة منفصلة ، فيجب عليك استخدام -إكسلينكر
مرتين ، مرة للخيار ومرة للحجة. على سبيل المثال ، لتمرير -يجزم
التعاريف، يجب أن تكتب -إكسلينكر -يجزم -إكسلينكر التعاريف. انه لا يعمل
لكتابة -إكسلينكر "-يجزم تعريفات"، لأن هذا يمرر السلسلة بأكملها كملف
حجة واحدة ، وهو ما لا يتوقعه الرابط.
عند استخدام رابط GNU ، يكون عادةً أكثر ملاءمة لتمرير الوسائط إلى الرابط
الخيارات باستخدام خيار=قيمنا بناء الجملة من الحجج المنفصلة. علي سبيل المثال انت
يمكن أن تحدد -إكسلينكر -خريطة = خريطة الإخراج بدلا من -إكسلينكر -خريطة -إكسلينكر الإخراج.
قد لا تدعم الروابط الأخرى بناء الجملة هذا لخيارات سطر الأوامر.
-Wl ،خيار
تجاوز خيار كخيار للرابط. لو خيار يحتوي على فواصل ، يتم تقسيمه إلى
خيارات متعددة في الفواصل. يمكنك استخدام بناء الجملة هذا لتمرير وسيطة إلى ملف
اختيار. على سبيل المثال، -Wl ، -خريطة ، الإخراج يمر -خريطة الإخراج للرابط. متي
باستخدام رابط جنو ، يمكنك أيضًا الحصول على نفس التأثير مع -Wl، -Map = output.map.
ملاحظة: في Ubuntu 8.10 والإصدارات الأحدث ، لـ LDFLAGS ، الخيار -Wl، -z، relro .
للتعطيل ، استخدم -Wl، -z، norelro.
-u رمز
تظاهر بالرمز رمز غير محدد ، لفرض ربط وحدات المكتبة لتعريفها
هو - هي. يمكنك استخدام -u عدة مرات مع رموز مختلفة لفرض تحميل
وحدات مكتبة إضافية.
-z الكلمة
-z يتم تمريرها مباشرة إلى الرابط مع الكلمة الرئيسية الكلمة. انظر القسم
في توثيق الرابط الخاص بك عن القيم المسموح بها ومعانيها.
مزيد من الخيارات For الدليل بحث
تحدد هذه الخيارات أدلة للبحث عن ملفات الرأس والمكتبات والأجزاء
من المترجم:
-Iدير
أضف الدليل دير إلى رأس قائمة الدلائل المراد البحث عنها في العنوان
الملفات. يمكن استخدام هذا لتجاوز ملف رأس النظام ، واستبدال الملف الخاص بك
الإصدار ، حيث يتم البحث في هذه الدلائل قبل ملف رأس النظام
الدلائل. ومع ذلك ، لا يجب استخدام هذا الخيار لإضافة الدلائل التي تحتوي على
ملفات رأس النظام التي يوفرها البائع (استخدام -نظام من أجل هذا). إذا كنت تستخدم أكثر من واحد
-I الخيار ، يتم فحص الدلائل بالترتيب من اليسار إلى اليمين ؛ النظام القياسي
الدلائل تأتي بعد.
إذا كان النظام القياسي يتضمن دليلًا ، أو دليلًا محددًا بـ -نظام، هل
المحدد أيضًا بـ -Iأطلقت حملة -I يتم تجاهل الخيار. الدليل لا يزال قيد البحث ولكن
كدليل نظام في موقعه الطبيعي في النظام يتضمن سلسلة. هذا هو ل
تأكد من أن إجراءات دول مجلس التعاون الخليجي لإصلاح رؤوس نظام عربات التي تجرها الدواب وطلب
لم يتم تغيير التوجيه "include_next" بدون قصد. إذا كنت حقا بحاجة للتغيير
ترتيب البحث عن دلائل النظام ، استخدم -نوستدينك و / أو -نظام خيارات.
-بلوجيندير =دير
اضبط الدليل للبحث عن المكونات الإضافية التي تم تمريرها من خلالها -فلوجين =الاسم بدلا من
-فلوجين =مسار/الاسم.وبالتالي. هذا الخيار ليس مخصصًا لاستخدامه من قبل المستخدم ، ولكن فقط
مرت من قبل السائق.
-انا اقتبسدير
أضف الدليل دير إلى رأس قائمة الدلائل المراد البحث عنها في العنوان
ملفات فقط لحالة "#include"ملف""؛ لا يتم البحث عن "# تضمين
<ملف> "، وإلا فقط مثل -I.
-Lدير
أضف الدليل دير إلى قائمة الدلائل التي سيتم البحث عنها -l.
-Bبادئة
يحدد هذا الخيار مكان العثور على الملفات التنفيذية والمكتبات وتضمين الملفات وملفات
ملفات البيانات للمترجم نفسه.
يقوم برنامج تشغيل المترجم بتشغيل واحد أو أكثر من البرامج الفرعية حزب الشعب الكمبودي, cc1, as ld.
يحاول بادئة كبادئة لكل برنامج يحاول تشغيله ، سواء مع أو بدون
آلة/الإصدار/.
لكل برنامج فرعي ليتم تشغيله ، يحاول برنامج تشغيل المترجم أولاً -B البادئة ، إن وجدت.
إذا لم يتم العثور على هذا الاسم ، أو إذا -B لم يتم تحديد ، السائق يحاول معيارين
البادئات / usr / lib / gcc / / usr / local / lib / gcc /. إذا لم ينتج عن أي من هذه النتائج أ
اسم الملف الذي تم العثور عليه ، يتم البحث عن اسم البرنامج غير المعدل باستخدام امتداد
الدلائل المحددة في الخاص بك PATH متغيرات البيئة.
يتحقق المترجم لمعرفة ما إذا كان المسار يوفره -B يشير إلى دليل ، وإذا كان
من الضروري إضافة حرف فاصل دليل في نهاية المسار.
-B البادئات التي تحدد أسماء الدلائل بشكل فعال تنطبق أيضًا على المكتبات في ملف
linker ، لأن المترجم يترجم هذه الخيارات إلى -L خيارات الرابط.
تنطبق أيضًا على تضمين الملفات في المعالج المسبق ، لأن المترجم يترجم
هذه الخيارات -نظام خيارات للمعالج. في هذه الحالة ، المترجم
يلحق تتضمن إلى البادئة.
ملف دعم وقت التشغيل libgcc.a يمكن أيضًا البحث عنها باستخدام ملف -B البادئة ، إذا
بحاجة. إذا لم يتم العثور عليها هناك ، تتم تجربة البادتين القياسيتين أعلاه ، وذاك
هو كل شيء. يتم ترك الملف خارج الارتباط إذا لم يتم العثور عليه بهذه الوسائل.
هناك طريقة أخرى لتحديد بادئة تشبه إلى حد كبير -B البادئة هي استخدام البيئة
متغير مجلس التعاون الخليجي_EXEC_PREFIX.
كوحل خاص ، إذا تم توفير المسار بواسطة -B is [دير /] stageN /، حيث N هو رقم
في النطاق من 0 إلى 9 ، ثم يتم استبداله بـ [دير /] تشمل. هذا للمساعدة في التمهيد-
ربط المترجم.
-النوع =ملف
طريقة عملنا ملف بعد أن يقرأ المترجم في المعيار المواصفات ملف ، من أجل تجاوز
الافتراضات التي دول مجلس التعاون الخليجي يستخدم برنامج السائق عند تحديد مفاتيح التبديل
إلى cc1, cc1plus, as, ld، إلخ. أكثر من واحد -النوع =ملف يمكن تحديدها في
سطر الأوامر ، وتتم معالجتها بالترتيب ، من اليسار إلى اليمين.
- sysroot =دير
استعمل دير كدليل جذر منطقي للعناوين والمكتبات. على سبيل المثال ، إذا كان ملف
يبحث المترجم عادةً عن رؤوس الملفات بتنسيق / البيرة / تتضمن والمكتبات في / البيرة / ليب، فإنه
بدلا من البحث دير / البيرة / تشمل دير / البيرة / ليب.
إذا كنت تستخدم كل من هذا الخيار و -ايسروت الخيار ، ثم - الجذور خيار
ينطبق على المكتبات ، ولكن -ايسروت ينطبق الخيار على ملفات الرأس.
رابط جنو (بدءًا من الإصدار 2.16) لديه الدعم اللازم لذلك
اختيار. إذا كان الرابط الخاص بك لا يدعم هذا الخيار ، فإن جانب ملف الرأس الخاص بـ
- الجذور لا يزال يعمل ، لكن جانب المكتبة لا يعمل.
--لا sysroot- لاحقة
بالنسبة لبعض الأهداف ، يتم إضافة لاحقة إلى الدليل الجذر المحدد بـ - الجذور,
اعتمادًا على الخيارات الأخرى المستخدمة ، بحيث يمكن العثور على الرؤوس على سبيل المثال في
dir / لاحقة / usr / include بدلا من دير / البيرة / تشمل. هذا الخيار يعطل الإضافة
من هذه اللاحقة.
-أنا- تم إهمال هذا الخيار. يرجى استخدام -انا اقتبس بدلا من ذلك -I الدلائل من قبل
ال -أنا- وإزالة -أنا- اختيار. أي أدلة تحددها مع -I خيارات من قبل
ال -أنا- يتم البحث عن الخيار فقط في حالة "#include"ملف""؛ هم ليسوا
بحثت عن "# includeملف> ".
إذا تم تحديد أدلة إضافية مع -I خيارات بعد -أنا- الخيار ، هؤلاء
يتم البحث في الدلائل عن كافة توجيهات "#include". (عادة الكل -I
يتم استخدام الدلائل بهذه الطريقة.)
بالإضافة إلى ذلك، -أنا- الخيار يمنع استخدام الدليل الحالي (حيث
جاء ملف الإدخال الحالي من) كأول دليل بحث عن "#include"ملف"".
لا توجد طريقة لتجاوز هذا التأثير -أنا-. مع من أنا. يمكنك تحديد البحث
الدليل الحالي عند استدعاء المترجم. هذا ليس بالضبط
نفس ما يفعله المعالج المسبق افتراضيًا ، ولكنه غالبًا ما يكون مرضيًا.
-أنا- لا يمنع استخدام دلائل النظام القياسية لملفات الرأس.
وهكذا، -أنا- -نوستدينك مستقلة.
تحديد الهدف تشمل مترجم التجريبية
الطريقة المعتادة لتشغيل GCC هي تشغيل الملف التنفيذي المسمى دول مجلس التعاون الخليجيالطرق أو آلة-مجلس التعاون الخليجي عندما عبر-
تجميع أو آلة-مجلس التعاون الخليجي-الإصدار لتشغيل إصدار غير الإصدار الذي تم تثبيته
الاخير.
أجهزة التبخير الموديلات تكوينات
يمكن أن يكون لكل نوع من أنواع الآلات المستهدفة خياراته الخاصة ، بدءًا من -m، لإختيار
بين نماذج أو تكوينات الأجهزة المختلفة - على سبيل المثال ، 68010 مقابل 68020 ، عائم
معالج مساعد أو لا شيء. يمكن لنسخة واحدة مثبتة من المترجم أن تترجم لأي نموذج
أو التكوين ، وفقًا للخيارات المحددة.
تدعم بعض تكوينات المترجم أيضًا خيارات خاصة إضافية ، عادةً لـ
التوافق مع المجمعين الآخرين على نفس النظام الأساسي.
آرتش64 مزيد من الخيارات
تم تحديد هذه الخيارات لتطبيقات AArch64:
-مابي =الاسم
توليد رمز لنموذج البيانات المحدد. القيم المسموح بها هي ilp32 لـ SysV-
مثل نموذج البيانات حيث تكون int و long int والمؤشر 32 بت و lp64 لـ SysV-like
نموذج البيانات حيث يكون int 32 بت ، لكن int طويلة ومؤشر 64 بت.
يعتمد الإعداد الافتراضي على التكوين الهدف المحدد. لاحظ أن LP64 و
ILP32 ABIs غير متوافقة مع الارتباط ؛ يجب عليك تجميع البرنامج بأكمله بنفس الشيء
ABI ، وربطها بمجموعة متوافقة من المكتبات.
-mbig-endian
إنشاء رمز كبير Endian. هذا هو الإعداد الافتراضي عندما يتم تكوين GCC لـ
aarch64_be - * - * استهداف.
عام-regs-only
توليد التعليمات البرمجية التي تستخدم فقط السجلات العامة.
-ملل-endian
قم بتوليد كود صغير. هذا هو الإعداد الافتراضي عندما يتم تكوين GCC لـ
aarch64 - * - * ولكن ليس aarch64_be - * - * استهداف.
-mcmodel = صغير
قم بإنشاء رمز لنموذج الشفرة الصغير. البرنامج ورموزه المحددة بشكل ثابت
يجب أن تكون في حدود 1 غيغابايت من بعضها البعض. المؤشرات 64 بت. يمكن أن تكون البرامج ثابتة
أو مرتبطة ديناميكيًا. لم يتم تنفيذ هذا النموذج بالكامل ويتم التعامل معه في الغالب على أنه
صغير.
-mcmodel = صغير
إنشاء رمز لنموذج التعليمات البرمجية الصغيرة. البرنامج ومعرفته بشكل ثابت
يجب أن تكون الرموز في حدود 4 غيغابايت من بعضها البعض. المؤشرات 64 بت. يمكن أن تكون البرامج
مرتبطة بشكل ثابت أو ديناميكي. هذا هو نموذج الكود الافتراضي.
-mcmodel = كبير
توليد كود لنموذج الكود الكبير. هذا لا يجعل أي افتراضات حول العناوين و
أحجام الأقسام. المؤشرات 64 بت. يمكن ربط البرامج بشكل ثابت فقط.
-mstrict- محاذاة
لا تفترض أن النظام يعالج مراجع الذاكرة غير المحاذاة.
-موميت-أوراق-إطار-مؤشر
-رقم-حذف-أوراق-إطار-مؤشر
احذف أو احتفظ بمؤشر الإطار في وظائف الورقة. السلوك السابق هو
افتراضي.
-mtls- لهجة = تنازلي
استخدم واصفات TLS كآلية تخزين لمؤشر الترابط المحلي لعمليات الوصول الديناميكية لـ TLS
المتغيرات. هذا هو الافتراضي.
-mtls- اللهجة = التقليدية
استخدم TLS التقليدية كآلية تخزين خيطية محلية للوصول الديناميكي لـ TLS
المتغيرات.
-مفيكس قشرة- a53-835769
-منو-فيكس-القشرة-a53-835769
تمكين أو تعطيل الحل البديل لرقم الخطأ ARM Cortex-A53 835769. هذا
يتضمن إدخال تعليمات NOP بين تعليمات الذاكرة وعدد صحيح 64 بت
تعليمات الضرب والمراكم.
-مفيكس قشرة- a53-843419
-منو-فيكس-القشرة-a53-843419
تمكين أو تعطيل الحل البديل لرقم الخطأ ARM Cortex-A53 843419. هذا
يتم إجراء حل الخطأ الخطأ في وقت الارتباط وهذا سيؤدي فقط إلى تمرير الإشارة المقابلة
للرابط.
- مسيرة =الاسم
حدد اسم بنية الهدف ، مُلحقًا اختياريًا بواحد أو أكثر
معدِّلات الميزات. هذا الخيار له الشكل - مسيرة =قوس{+[لا]ميزة}*، أين ال
فقط القيمة المسموح بها ل قوس is armv8 أ. القيم المسموح بها ل ميزة .
موثقة في القسم الفرعي أدناه.
عند تحديد معدِّلات الميزات المتعارضة ، يتم استخدام الميزة الموجودة في أقصى اليمين.
يستخدم GCC هذا الاسم لتحديد نوع التعليمات التي يمكنه إصدارها عند الإنشاء
كود التجميع.
في -مارس محدد بدون أي من -متوني or - وحدة المعالجة المركزية كما يتم تحديدها ، فإن
تم ضبط الكود لأداء جيد عبر مجموعة من المعالجات المستهدفة التي تنفذ
الهدف العمارة.
-mtune =الاسم
حدد اسم المعالج الهدف الذي يجب أن يقوم GCC بضبط أداءه
الرمز. القيم المسموح بها لهذا الخيار هي: عام, القشرة- A53, القشرة- A57,
القشرة- A72, إكسينوس إم 1, الرعد, xgene1.
بالإضافة إلى ذلك ، يمكن أن يحدد هذا الخيار أنه يجب على GCC ضبط أداء الكود
لنظام LITTLE كبير. القيم المسموح بها لهذا الخيار هي:
القشرة A57.Cortex-A53, القشرة A72.Cortex-A53.
حيث لا يوجد من -mtune =, -mcpu = or - مسيرة = تم تحديد الرمز ، يتم ضبطه لأداء
بشكل جيد عبر مجموعة من المعالجات المستهدفة.
لا يمكن إلحاق هذا الخيار بمعدلات الميزات.
-mcpu =الاسم
حدد اسم المعالج الهدف ، مُلحقًا اختياريًا بميزة واحدة أو أكثر
الصفات التعريفية. هذا الخيار له الشكل -mcpu =وحدة المعالجة المركزية{+[لا]ميزة} * حيث جاز ذلك
قيم وحدة المعالجة المركزية هي نفس تلك المتوفرة لـ -متوني.
القيم المسموح بها ل ميزة موثقة في القسم الفرعي أدناه.
عند تحديد معدِّلات الميزات المتعارضة ، يتم استخدام الميزة الموجودة في أقصى اليمين.
يستخدم GCC هذا الاسم لتحديد نوع التعليمات التي يمكنه إصدارها عند الإنشاء
كود التجميع (كما لو كان بواسطة -مارس) ولتحديد المعالج المستهدف
لحن للأداء (كما لو كان -متوني). حيث يتم استخدام هذا الخيار بالاشتراك مع
-مارس or -متوني، فهذه الخيارات لها الأسبقية على الجزء المناسب من هذا
الخيار.
-مارس - وحدة المعالجة المركزية معدِّلات الميزات
تستخدم معدِّلات الميزات مع -مارس - وحدة المعالجة المركزية يمكن أن يكون أحد ما يلي:
اتفاقية حقوق الطفل تفعيل تمديد CRC.
التشفير
تمكين امتداد التشفير. هذا يعني أن SIMD المتقدمة ممكّنة.
fp تفعيل تعليمات النقطة العائمة.
سيمد
تفعيل تعليمات SIMD المتقدمة. هذا يعني أن تعليمات الفاصلة العائمة هي
ممكن. هذا هو الإعداد الافتراضي لجميع القيم الحالية الممكنة للخيارات -مارس
-mcpu =.
ادابتيفا عيد الغطاس مزيد من الخيارات
تشبه -m تم تحديد خيارات Adapteva Epiphany:
-نصف- ريج- ملف
لا تخصص أي سجل في النطاق "r32" ... "r63". يسمح بتشغيل التعليمات البرمجية
متغيرات الأجهزة التي تفتقر إلى هذه السجلات.
-مبرفر-قصير-insn-regs
يفضل تخصيص السجلات التي تسمح بإنشاء تعليمات قصيرة. هذا يمكن
يؤدي إلى زيادة عدد التعليمات ، لذلك قد يقلل هذا أو يزيد بشكل عام
حجم الكود.
- تكلفة الامتياز =NUM
اضبط تكلفة الفروع على تقريبًا NUM تعليمات "بسيطة". هذه التكلفة ليست سوى
إرشادي وليس مضمونًا لتحقيق نتائج متسقة عبر الإصدارات.
-Mcmove
تمكين توليد الحركات الشرطية.
-منوبس =NUM
ينبعث NUM NOPs قبل كل تعليمات أخرى تم إنشاؤها.
-mno- لينة- cmpsf
لمقارنات الفاصلة العائمة أحادية الدقة ، أرسل تعليمات واختبار "fsub"
الأعلام. هذا أسرع من مقارنة البرامج ، ولكن يمكن أن يحصل على نتائج غير صحيحة
في وجود NaNs ، أو عند مقارنة رقمين صغيرين مختلفين بهذا الشكل
يتم احتساب فرقهم على أنه صفر. الافتراضي هو -msoft- cmpsf، والذي يستخدم
أبطأ ، ولكن مقارنات البرامج المتوافقة مع IEEE.
-mstack-offset =NUM
عيّن الإزاحة بين أعلى المكدس ومؤشر المكدس. على سبيل المثال ، القيمة 8
يعني أنه يمكن استخدام الثمانية بايت في النطاق "sp + 0 ... sp + 7" بواسطة دوال الطرفية
بدون تخصيص مكدس. قيم بخلاف 8 or 16 لم يتم اختبارها ومن غير المرجح أن يتم اختبارها
الشغل. لاحظ أيضًا أن هذا الخيار يغير ABI ؛ تجميع برنامج بامتداد
لم يتم تجميع إزاحة المكدس المختلفة عن المكتبات التي تم تجميعها باستخدامها بشكل عام
الشغل. يمكن أن يكون هذا الخيار مفيدًا إذا كنت تريد تقييم ما إذا كانت إزاحة مكدس مختلفة
قد يمنحك رمزًا أفضل ، ولكن في الواقع لاستخدام إزاحة مكدس مختلفة للبناء
في برامج العمل ، يوصى بتكوين سلسلة الأدوات باستخدام ملف
- مع-المكدس-الإزاحة =NUM الخيار.
-منو-الجولة-الأقرب
اجعل المجدول يفترض أن وضع التقريب قد تم ضبطه على القطع. ال
الافتراضي هو -طائرة-أقرب.
- مكالمات طويلة
إذا لم يتم تحديد خلاف ذلك بواسطة إحدى السمات ، افترض أن جميع المكالمات قد تكون خارج نطاق
نطاق الإزاحة لتعليمات "b" / "bl" ، وبالتالي قم بتحميل عنوان الوظيفة
في سجل قبل إجراء مكالمة (بخلاف ذلك مباشرة). هذا هو الافتراضي.
- مكالمات قصيرة
إذا لم يتم تحديد خلاف ذلك بواسطة إحدى السمات ، افترض أن جميع المكالمات المباشرة تقع في النطاق
من تعليمات "b" / "bl" ، لذا استخدم هذه التعليمات للمكالمات المباشرة. ال
الافتراضي هو - مكالمات طويلة.
- صغير 16
افترض أنه يمكن تحميل العناوين كقيم غير موقعة ذات 16 بت. هذا لا ينطبق على
عناوين الوظائف التي - مكالمات طويلة الدلالات سارية المفعول.
-mfp- الوضع =طريقة
اضبط الوضع السائد لوحدة النقطة العائمة. هذا يحدد العائمة-
وضع النقطة الذي يتم توفيره والمتوقع عند استدعاء الوظيفة ووقت العودة. تحضير
هذا الوضع يتطابق مع الوضع الذي تحتاجه في الغالب عند بدء الوظيفة يمكن أن يجعلك
برامج أصغر وأسرع عن طريق تجنب مفاتيح الوضع غير الضرورية.
طريقة يمكن ضبطها على إحدى القيم التالية:
المتصل
أي وضع في إدخال الوظيفة صالح ، ويتم الاحتفاظ بها أو استعادتها عند الوظيفة
يعود ، وعندما يستدعي وظائف أخرى. هذا الوضع مفيد للترجمة
مكتبات أو وحدات تجميع أخرى قد ترغب في دمجها في ملفات
برامج ذات أوضاع FPU سائدة مختلفة ، وراحة القدرة على ذلك
استخدام ملف كائن واحد يفوق حجم وسرعة الحمل لأي وضع إضافي
التبديل التي قد تكون مطلوبة ، مقارنة بما هو مطلوب مع المزيد
اختيار محدد لوضع FPU السائد.
بتر
هذا هو الوضع المستخدم في حسابات الفاصلة العائمة مع الاقتطاع (على سبيل المثال ، دائري
نحو الصفر) وضع التقريب. يتضمن التحويل من النقطة العائمة إلى
عدد صحيح.
جولة أقرب
هذا هو الوضع المستخدم لحسابات الفاصلة العائمة مع تقريب لأقرب أو-
حتى وضع التقريب.
مادبا هذا هو الوضع المستخدم لإجراء حسابات الأعداد الصحيحة في FPU ، على سبيل المثال عدد صحيح
تتكاثر أو تتضاعف وتتراكم الأعداد الصحيحة.
الافتراضي هو -mfp- الوضع = المتصل
-منوسبليت- لوهي
-منو بوستينك
-لا تعديل لاحق
تعديلات إنشاء الكود التي تعطل ، على التوالي ، تقسيم أحمال 32 بت ،
إنشاء عناوين ما بعد الزيادة وإنشاء عناوين ما بعد التعديل. ال
الافتراضات msplit-lohi, -موقع- المؤتمر الوطني العراقيو -تعديل-الشباك.
-منوفكت- مزدوج
قم بتغيير وضع SIMD المفضل إلى SImode. الافتراضي هو -مفيكت- مزدوج، والذي يستخدم
DImode كوضع SIMD المفضل.
ماكس- vect- محاذاة =NUM
أقصى محاذاة لأنواع وضع متجه SIMD. NUM قد يكون 4 أو 8. الافتراضي هو
8. لاحظ أن هذا تغيير ABI ، على الرغم من وجود العديد من واجهات وظائف المكتبة
غير متأثر إذا لم يستخدموا أوضاع متجه SIMD في الأماكن التي تؤثر على الحجم و / أو
محاذاة الأنواع ذات الصلة.
-mplit-vecmove-early
ينتقل ناقل الانقسام إلى تحركات كلمة واحدة قبل إعادة التحميل. من الناحية النظرية يمكن أن يعطي هذا
تخصيص سجل أفضل ، ولكن حتى الآن يبدو أن العكس هو الحال بشكل عام.
-m1reg-ريج
حدد سجلاً للاحتفاظ بالثابت -1 ، مما يجعل التحميل صغيرًا سلبيًا
الثوابت وبعض أقنعة البت بشكل أسرع. القيم المسموح بها لـ ريج . r43 r63,
التي تحدد استخدام هذا السجل كسجل ثابت ، و لا شيء، مما يعني أن لا
يستخدم السجل لهذا الغرض. الافتراضي هو -m1reg- لا شيء.
ARC مزيد من الخيارات
تتحكم الخيارات التالية في متغير البنية التي يتم تجميع التعليمات البرمجية من أجلها:
-برميل-شيفتر
توليد التعليمات بدعم من برميل شيفتر. هذا هو الافتراضي ما لم
-mcpu = ARC601 ساري المفعول.
-mcpu =وحدة المعالجة المركزية
قم بتعيين نوع البنية ، وتسجيل الاستخدام ، ومعلمات جدولة التعليمات لـ وحدة المعالجة المركزية.
تتوفر أيضًا خيارات الاسم المستعار المختصر للتوافق مع الإصدارات السابقة وملفات
السهولة أو الراحة. القيم المدعومة لـ وحدة المعالجة المركزية .
ARC600
تجميع ل ARC600. اسماء مستعارة: -mA6, مارك 600.
ARC601
تجميع لـ ARC601. الاسم المستعار: مارك 601.
ARC700
تجميع ل ARC700. اسماء مستعارة: -mA7, مارك 700. هذا هو الإعداد الافتراضي عند تكوينه
مع - مع وحدة المعالجة المركزية = arc700.
-mdpfp
-mdpfp- المضغوط
FPX: قم بإنشاء تعليمات Double Precision FPX ، مضبوطة للتنفيذ المضغوط.
-mdpfp- سريع
FPX: قم بإنشاء تعليمات Double Precision FPX ، مضبوطة للتنفيذ السريع.
-mno-dpfp-lrsr
قم بتعطيل تعليمات LR و SR من استخدام سجلات Aux بامتداد FPX.
-مي
إنشاء تعليمات حسابية موسعة. حاليًا فقط "divaw" ، "يضيف" ، "subs" ،
ويتم دعم "sat16". يتم تمكين هذا دائمًا لـ -mcpu = ARC700.
-منو- mpy
لا تقم بإنشاء تعليمات mpy لـ ARC700.
-ممول
توليد 32x16 بت تعليمات الضرب وماك.
-ممول 64
إنشاء تعليمات mul64 و mulu64. صالح فقط لـ -mcpu = ARC600.
-غير طبيعي
توليد تعليمات القاعدة. هذا هو الافتراضي إذا -mcpu = ARC700 ساري المفعول.
-mspfp
-mspfp- المضغوط
FPX: قم بإنشاء تعليمات FPX أحادية الدقة ، مضبوطة للتنفيذ المضغوط.
-mspfp- سريع
FPX: قم بإنشاء تعليمات FPX أحادية الدقة ، تم ضبطها للتنفيذ السريع.
-مسمد
قم بتمكين إنشاء تعليمات ARC SIMD عبر مدمجة خاصة بالهدف. صالحة فقط
For -mcpu = ARC700.
-مسنة- تعويم
تم تجاهل هذا الخيار ؛ تم توفيره لأغراض التوافق فقط. برمجة
يتم إصدار رمز النقطة العائمة افتراضيًا ، ويمكن تجاوز هذا الإعداد الافتراضي بواسطة FPX
خيارات؛ com.mspfp, mspfp- المضغوطالطرق أو سريع mspfp لدقة واحدة ، و com.mdpfp, mdpfp-
اتفاقالطرق أو mdpfp سريع لدقة مضاعفة.
-mswap
إنشاء تعليمات المبادلة.
يتم تمرير الخيارات التالية إلى المجمع ، وكذلك تحديد المعالج المسبق
رموز الماكرو.
-mdsp-packa
تم تمريره إلى المجمّع لتمكين امتدادات DSP Pack A. يعيّن أيضًا ملف
رمز المعالج المسبق "__Xdsp_packa".
-مدفبف
تم تمريره إلى المجمع لتمكين تمديد فراشة viterbi المزدوجة. أيضا
يحدد رمز المعالج المسبق "__Xdvbf".
-لوك
تم تمريره إلى المجمّع لتمكين الامتداد الشرطي للحمل / التخزين المؤمّن.
يعيّن أيضًا رمز المعالج المسبق "__Xlock".
-mmac-d16
مرت إلى المجمع. يعيّن أيضًا رمز المعالج المسبق "__Xxmac_d16".
-مماك -24
مرت إلى المجمع. يعيّن أيضًا رمز المعالج المسبق "__Xxmac_24".
-Mrtsc
تم تمريره إلى المجمّع لتمكين تمديد عداد الطوابع الزمنية 64 بت
تعليمات. يعيّن أيضًا رمز المعالج المسبق "__Xrtsc".
-مسواب
تم تمريره إلى المجمّع لتمكين تعليمات التمديد لطلب تبديل البايت.
يعيّن أيضًا رمز المعالج المسبق "__Xswape".
-الهاتف
تم تمريره إلى المجمّع لتمكين تعليمات المعامل المزدوج والمفرد لـ
المهاتفة. يعيّن أيضًا رمز المعالج المسبق "__تليفوني".
-مكسي
تم تمريره إلى المجمّع لتمكين امتداد ذاكرة XY. يعيّن أيضًا ملف
رمز المعالج المسبق "__Xxy".
تتحكم الخيارات التالية في كيفية شرح كود التجميع:
-حجم
علق تعليمات المجمع بالعناوين المقدرة.
-منومة-محاذاة
اشرح ما هي اعتبارات المحاذاة التي تؤدي إلى قرار إصدار التعليمات
قصير أو طويل.
يتم تمرير الخيارات التالية إلى الرابط:
-مارلينكس
مرت إلى الرابط ، لتحديد استخدام مضاهاة "arclinux". هذا الخيار
يتم تمكينه افتراضيًا في سلاسل الأدوات المصممة لـ "arc-linux-uclibc" و
أهداف "arceb-linux-uclibc" عندما لا يتم طلب التنميط.
- marclinux_prof
مرت إلى الرابط ، لتحديد استخدام محاكاة "arclinux_prof". هذه
يتم تمكين الخيار افتراضيًا في سلاسل الأدوات المصممة لـ "arc-linux-uclibc" و
أهداف "arceb-linux-uclibc" عند طلب التنميط.
تتحكم الخيارات التالية في دلالات الكود المُنشأ:
-مبيلوغ- cfi
قم بتمكين إنشاء معلومات إطار الاتصال للخاتمات.
-الرقم-الخاتمة- cfi
قم بتعطيل إنشاء معلومات إطار الاتصال للخاتمات.
- مكالمات طويلة
توليد إدخالات المكالمات كتسجيل المكالمات غير المباشرة ، وبالتالي توفير الوصول إلى كامل
نطاق عناوين 32 بت.
-المكالمات-المتوسطة
لا تستخدم نطاق عنونة أقل من 25 بت للمكالمات ، وهو الإزاحة المتاحة
للحصول على تعليمات فرع ورابط غير مشروط. التنفيذ المشروط للوظيفة
يتم منع المكالمات للسماح باستخدام نطاق 25 بت بدلاً من نطاق 21 بت
بفرع ورابط مشروط. هذا هو الإعداد الافتراضي لسلاسل الأدوات المصممة من أجل
أهداف "arc-linux-uclibc" و "arceb-linux-uclibc".
-منو- sdata
لا تقم بإنشاء مراجع sdata. هذا هو الإعداد الافتراضي لسلاسل الأدوات المصممة من أجل
أهداف "arc-linux-uclibc" و "arceb-linux-uclibc".
-Mucb-mcount
أداة مع مكالمات mcount كما هو مستخدم في كود UCB. أي أن العد في المستدعي ،
ليس المتصل. بشكل افتراضي ، يتم حساب أجهزة ARC في المتصل.
-متطاير- مخبأ
استخدم عادةً عمليات الوصول إلى الذاكرة المخزنة مؤقتًا للمراجع المتغيرة. هذا هو الافتراضي.
-منو- متقلبة- مخبأ
تمكين تجاوز ذاكرة التخزين المؤقت للمراجع المتغيرة.
الخيارات التالية صقل إنشاء التعليمات البرمجية:
-معاينة-النداء
قم بتحسينات المحاذاة لتعليمات الاتصال.
تعديل تلقائي ريج
تفعيل استخدام التعديل المسبق / اللاحق مع إزاحة السجل.
-مبيت-ثقب الباب
تفعيل bbit peephole2.
-منو- brcc
يقوم هذا الخيار بتعطيل تصريح دخول خاص بالهدف arc_reorg لإنشاء "BRcc"
تعليمات. ليس له أي تأثير على توليد "BRcc" المدفوع بتمريرة التجميع.
-حقيبة- ناقل- pcrel
استخدم جداول حالة التبديل النسبية للكمبيوتر - وهذا يتيح تقصير جدول الحالة. هذا ال
الافتراضي ل -أوس.
-حالات مضغوطة
تفعيل نمط الحالات المدمجة. هذا هو الإعداد الافتراضي لـ -أوس.
-منو كوند-إكسيك
قم بتعطيل تمرير ARCompact المعين لإنشاء تعليمات التنفيذ الشرطي. بسبب
لتأخير جدولة الفتحات والتفاعلات بين أرقام المعامل والأحجام الحرفية ،
أطوال التعليمات ، ودعم التنفيذ المشروط ، الهدف المستقل
تمرير لإنشاء تنفيذ مشروط غالبًا ما يكون غير موجود ، لذلك احتفظ منفذ ARC بامتداد
تمرير خاص يحاول العثور على المزيد من إنشاء التنفيذ المشروط
الفرص بعد تخصيص التسجيل وتقصير الفروع وجدولة فترات التأخير
تم القيام به. يعمل هذا التمرير بشكل عام ، ولكن ليس دائمًا ، على تحسين الأداء والرمز
الحجم ، على حساب وقت الترجمة الإضافي ، وهذا هو سبب وجود خيار للتبديل
من ذلك. إذا كانت لديك مشكلة في تعليمات الاتصال التي تتجاوز الإزاحة المسموح بها
النطاق لأنها مشروطة ، يجب أن تفكر في استخدام -المكالمات-المتوسطة
بدلا من ذلك.
-مبكرا- cbranchsi
تفعيل استخدام إعادة التحميل المسبق لنمط cbranchsi.
- توسيع - adddi
قم بتوسيع "adddi3" و "subdi3" في وقت إنشاء rtl إلى "add.f" و "adc" وما إلى ذلك.
الأحمال المفكرة
تمكين استخدام الأحمال المفهرسة. يمكن أن يكون هذا مشكلة لأن بعض المحسّنين بعد ذلك
افترض أن المتاجر المفهرسة موجودة ، وهذا ليس هو الحال.
-ملرا
تمكين تخصيص السجل المحلي. هذا لا يزال تجريبيًا لـ ARC ، لذلك بشكل افتراضي
يستخدم المترجم إعادة التحميل القياسي (أي -منو-لرا).
-mlra- الأولوية- بلا
لا تشر إلى أي أولوية لسجلات الهدف.
-ملرا- الأولوية- المضغوط
حدد أولوية تسجيل الهدف لـ r0..r3 / r12..r15.
-ملرا-أولوية-غير مضغوط
تقليل أولوية مسجل الهدف لـ r0..r3 / r12..r15.
-mno- ملي كود
عند التحسين من أجل الحجم (باستخدام -أوس) ، المقدمات والخاتمات التي يجب أن تحفظ أو
استعادة عدد كبير من السجلات غالبًا ما يتم تقصيرها باستخدام استدعاء خاص
وظيفة في libgcc ؛ يشار إلى هذا باسم أ مللي مكالمة. لأن هذه المكالمات يمكن أن تطرح
مشاكل في الأداء و / أو تسبب مشاكل في الربط عند الربط بطريقة غير قياسية ،
يتم توفير هذا الخيار لإيقاف تشغيل توليد المكالمات بالمللي كود.
رمز مختلط
قرص تخصيص التسجيل للمساعدة في إنشاء تعليمات 16 بت. هذا بشكل عام
تأثير تقليل متوسط حجم التعليمات مع زيادة التعليمات
العد.
فئة-mq
تمكين بدائل التعليمات "q". هذا هو الإعداد الافتراضي لـ -أوس.
-مركق
تمكين معالجة قيد Rcq - يعتمد معظم إنشاء التعليمات البرمجية القصيرة على هذا. هذا هو
الافتراضي.
-mRcw
تمكين معالجة قيود Rcw - يعتمد ccfsm condexec في الغالب على هذا. هذا ال
افتراضي.
-مستوى الحجم =مستوى
ضبط الحجم الأمثل فيما يتعلق بأطوال التعليمات والمحاذاة. ال
القيم المعترف بها ل مستوى هي:
0 لا يوجد تحسين للحجم. يتم إهمال هذا المستوى ومعاملته مثل 1.
1 يتم استخدام التعليمات القصيرة بشكل انتهازي.
2 بالإضافة إلى ذلك ، يتم إسقاط محاذاة الحلقات والتعليمات البرمجية بعد الحواجز.
3 بالإضافة إلى ذلك ، يتم إسقاط محاذاة البيانات الاختيارية والخيار Os .
هذا افتراضيات إلى 3 متى -أوس ساري المفعول. خلاف ذلك ، فإن السلوك عندما لا يكون كذلك
مجموعة تعادل المستوى 1.
-mtune =وحدة المعالجة المركزية
تعيين معلمات جدولة التعليمات لـ وحدة المعالجة المركزية، لتجاوز أي ضمني بواسطة -mcpu =.
القيم المدعومة لـ وحدة المعالجة المركزية .
ARC600
ضبط وحدة المعالجة المركزية ARC600.
ARC601
ضبط وحدة المعالجة المركزية ARC601.
ARC700
ضبط وحدة المعالجة المركزية ARC700 مع كتلة المضاعف القياسية.
ARC700-xmac
قم بضبط وحدة المعالجة المركزية ARC700 مع كتلة XMAC.
أرك725د
لحن وحدة المعالجة المركزية ARC725D.
أرك750د
لحن وحدة المعالجة المركزية ARC750D.
-mmultcost =NUM
تكلفة تحمل تعليمات مضاعفة بـ 4 أن تكون مساوية لتعليمات عادية.
-munalign-prob-threshold =الاحتمالات
قم بتعيين حد الاحتمال لعدم محاذاة الفروع. عند ضبط ملفات ARC700
لتحسين السرعة ، يفضل أن تنبعث الفروع بدون فتحة تأخير مملوءة
غير محاذاة وطويلة ، ما لم يشير التنميط إلى أن احتمالية حدوث الفرع
يؤخذ أدناه الاحتمالات. الافتراضي هو (REG_BR_PROB_BASE / 2) ، أي 5000.
يتم الاحتفاظ بالخيارات التالية من أجل التوافق مع الإصدارات السابقة ، ولكن تم إهمالها الآن
وستتم إزالته في إصدار مستقبلي:
-رائد
عفا عليها الزمن FPX.
-mbig-endian
-EB تجميع التعليمات البرمجية لأهداف endian كبيرة. تم الآن إيقاف استخدام هذه الخيارات. المستخدمون
عند الرغبة في استخدام رمز كبير الحجم ، يجب استخدام أهداف "arceb-elf32" و "arceb-linux-uclibc"
عند إنشاء سلسلة الأدوات ، والتي يعتبر الطرف الكبير هو الافتراضي لها.
-ملل-endian
-ال تجميع التعليمات البرمجية لأهداف endian صغيرة. تم الآن إيقاف استخدام هذه الخيارات.
يجب على المستخدمين الذين يريدون رمزًا صغيرًا استخدام "arc-elf32" و "arc-linux-uclibc"
الأهداف عند إنشاء سلسلة الأدوات ، والتي يكون الطرف الصغير هو الافتراضي لها.
-mbarrel_shifter
وحل محله -برميل-شيفتر.
-mdpfp_compact
وحل محله -mdpfp- المضغوط.
-mdpfp_fast
وحل محله -mdpfp- سريع.
-mdsp_packa
وحل محله -mdsp-packa.
-ميا
وحل محله -مي.
-مماك_24
وحل محله -مماك -24.
-mmac_d16
وحل محله -mmac-d16.
-mspfp_compact
وحل محله -mspfp- المضغوط.
-mspfp_fast
وحل محله -mspfp- سريع.
-mtune =وحدة المعالجة المركزية
القيم arc600, arc601, arc700 arc700-xmac For وحدة المعالجة المركزية يتم استبدالها بـ ARC600, ARC601,
ARC700 ARC700-xmac على التوالي
-Multcost =NUM
وحل محله -ممثل.
ARM مزيد من الخيارات
تشبه -m يتم تحديد الخيارات لمنفذ ARM:
-مابي =الاسم
قم بإنشاء رمز لـ ABI المحدد. القيم المسموح بها هي: أبس- جنو, atpcs, com.aapcs,
aapcs لينكس com.iwmmxt.
- خرائط - الإطار
قم بإنشاء إطار مكدس متوافق مع معيار استدعاء إجراء ARM للجميع
الوظائف ، حتى لو لم يكن ذلك ضروريًا تمامًا للتنفيذ الصحيح للكود.
تحديد - مؤشر الإطار مع هذا الخيار يؤدي إلى عدم وجود إطارات المكدس
ولدت لوظائف طرفية. الافتراضي هو -منو- apcs- الإطار. هذا الخيار هو
إهمال.
خرائط
هذا مرادف ل - خرائط - الإطار وهو مهمل.
- الإبهام - البيني
قم بإنشاء رمز يدعم الاتصال بين مجموعات تعليمات ARM و Thumb.
بدون هذا الخيار ، في بنيات ما قبل الإصدار 5 ، لا يمكن أن تكون مجموعتي التعليمات
يستخدم بشكل موثوق داخل برنامج واحد. الافتراضي هو -mno-الإبهام البيني، منذ ذلك الحين قليلا
يتم إنشاء رمز أكبر عندما - الإبهام - البيني محدد. في تكوينات AAPCS
هذا الخيار لا معنى له.
-منو-جدولة-برولوج
منع إعادة ترتيب التعليمات في مقدمة الوظيفة ، أو دمج
تلك التعليمات مع التعليمات الموجودة في جسم الوظيفة. هذا يعني أن كل شيء
تبدأ الوظائف بمجموعة من التعليمات التي يمكن التعرف عليها (أو في الواقع واحدة من الاختيار
من مجموعة صغيرة من المقدمات الوظيفية المختلفة) ، ويمكن استخدام هذه المعلومات ل
تحديد موقع بداية الوظائف داخل جزء قابل للتنفيذ من التعليمات البرمجية. الافتراضي هو
-مسيد-برولوج.
-mfloat-abi =الاسم
تحدد النقطة العائمة ABI المطلوب استخدامها. القيم المسموح بها هي: ناعم, com.softfp
الصعب.
تحديد ناعم يتسبب في قيام دول مجلس التعاون الخليجي بإنشاء مخرجات تحتوي على استدعاءات مكتبة للتعويم-
عمليات النقطة. com.softfp يسمح بإنشاء رمز باستخدام الفاصلة العائمة للأجهزة
التعليمات ، ولكن لا يزال يستخدم اصطلاحات الاستدعاء ذات العوامة الناعمة. الصعب يسمح
إنشاء تعليمات الفاصلة العائمة واستخدام اصطلاحات استدعاء خاصة بـ FPU.
يعتمد الإعداد الافتراضي على التكوين الهدف المحدد. لاحظ أن أداة التعويم الثابت
وأنظمة ABI ذات الطفو الناعم غير متوافقة مع الارتباط ؛ يجب عليك تجميع برنامجك بالكامل باستخدام
نفس ABI ، وربطها بمجموعة متوافقة من المكتبات.
-ملل-endian
قم بإنشاء رمز لمعالج يعمل في الوضع الصغير. هذا هو الإعداد الافتراضي لـ
جميع التكوينات القياسية.
-mbig-endian
إنشاء رمز لمعالج يعمل في الوضع الكبير ؛ الافتراضي هو ترجمة
رمز لمعالج صغير.
- مسيرة =الاسم
هذا يحدد اسم بنية ARM الهدف. يستخدم GCC هذا الاسم لـ
تحديد نوع التعليمات التي يمكن أن تصدرها عند إنشاء كود التجميع. هذه
يمكن استخدام الخيار بالاقتران مع أو بدلاً من -mcpu = اختيار. مسموح
الأسماء هي: Armv2, com.armv2a, Armv3, com.armv3m, Armv4, com.armv4t, Armv5, com.armv5t, com.armv5e,
com.armv5te, Armv6, com.armv6j, Armv6t2, com.armv6z, com.armv6zk, armv6 م, Armv7, armv7 أ, Armv7-r,
armv7 م, armv7e- م, com.armv7ve, armv8 أ, armv8-a + crc, com.iwmmxt, com.iwmmxt2, ep9312.
-مارش = armv7ve هي بنية armv7-a مع امتدادات المحاكاة الافتراضية.
-مارش = armv8-a + crc تمكن من إنشاء رمز لمعمارية ARMv8-A مع
ملحقات CRC32 الاختيارية.
-مارش = أصلي يتسبب في قيام المترجم بالكشف التلقائي عن بنية المبنى
الحاسوب. في الوقت الحالي ، هذه الميزة مدعومة فقط في GNU / Linux ، وليس كلها
البنى المعترف بها. إذا لم ينجح الاكتشاف التلقائي ، فلن يكون هناك خيار
تأثير.
-mtune =الاسم
يحدد هذا الخيار اسم معالج ARM المستهدف الذي يجب أن يقوم GCC بضبطه
أداء الكود. بالنسبة لبعض تطبيقات ARM ، يمكن أن يكون الأداء الأفضل
تم الحصول عليها باستخدام هذا الخيار. الأسماء المسموح بها هي: arm2, arm250, arm3, arm6,
arm60, arm600, arm610, arm620, arm7, Arm7m, com.arm7d, معرف com لهذا التطبيق هو com.arm7dm, com.arm7di, معرف com لهذا التطبيق هو com.arm7dmi, arm70,
arm700, com.arm700i, arm710, Arm710c, arm7100, arm720, arm7500, Arm7500fe, com.arm7tdmi,
arm7tdmi- ق, Arm710t, Arm720t, Arm740t, ذراع قوي, سترونج ارم 110, سترونج ارم 1100,
سترونج ارم 1110, arm8, arm810, arm9, Arm9e, arm920, Arm920t, Arm922t, Arm946e-S,
Arm966e-S, Arm968e-S, Arm926ej-s, Arm940t, com.arm9tdmi, com.arm10tdmi, Arm1020t, Arm1026ej-s,
Arm10e, Arm1020e, Arm1022e, arm1136j- ق, arm1136jf- ق, com.mpcore, مبكورينوفب, arm1156t2- ثانية,
Arm1156t2f-s, arm1176jz- ق, arm1176jzf- ق, القشرة- A5, القشرة- A7, القشرة- A8, القشرة- A9,
القشرة- A12, القشرة- A15, القشرة- A53, القشرة- A57, القشرة- A72, القشرة- r4, القشرة- r4f,
القشرة- r5, القشرة- r7, قشرة-m7, قشرة-m4, قشرة-m3, قشرة-m1, قشرة-m0,
القشرة- m0plus, القشرة- m1. الصغيرة- تتكاثر, القشرة- m0. الصغيرة- تتكاثر,
القشرة- m0plus.small- مضاعفة, إكسينوس إم 1, مارفيل- pj4, xscale, com.iwmmxt, com.iwmmxt2, ep9312,
fa526, fa626, fa606te, fa626te, fmp626, fa726te, xgene1.
بالإضافة إلى ذلك ، يمكن أن يحدد هذا الخيار أنه يجب على GCC ضبط أداء الكود
لنظام LITTLE كبير. الأسماء المسموح بها هي: القشرة A15.Cortex-A7,
القشرة A57.Cortex-A53, القشرة A72.Cortex-A53.
-mtune = عام-قوس يحدد أن GCC يجب أن تضبط الأداء لمزيج من
معالجات داخل العمارة قوس. الهدف هو إنشاء رمز يعمل جيدًا على
المعالجات الحالية الأكثر شيوعًا ، والموازنة بين التحسينات التي تفيد البعض
وحدات المعالجة المركزية في النطاق ، وتجنب مخاطر أداء وحدات المعالجة المركزية الأخرى. آثار ال
قد يتغير هذا الخيار في الإصدارات المستقبلية لدول مجلس التعاون الخليجي حيث تأتي نماذج وحدة المعالجة المركزية وتذهب.
-mtune = أصلي يتسبب في قيام المترجم بالكشف التلقائي عن وحدة المعالجة المركزية لجهاز الكمبيوتر. في
حاليًا ، هذه الميزة مدعومة فقط في GNU / Linux ، وليست كل البنى
معروف. إذا لم ينجح الاكتشاف التلقائي ، فلن يكون للخيار أي تأثير.
-mcpu =الاسم
هذا يحدد اسم معالج ARM الهدف. يستخدم GCC هذا الاسم لاشتقاق
اسم بنية ARM المستهدفة (كما لو تم تحديدها بواسطة -مارس) ومعالج ARM
اكتب لضبط الأداء (كما لو تم تحديده بواسطة -متوني). أين هذا الخيار
يستخدم بالتزامن مع -مارس or -متوني، فهذه الخيارات لها الأسبقية على
الجزء المناسب من هذا الخيار.
الأسماء المسموح بها لهذا الخيار هي نفسها أسماء -متوني.
-mcpu = عام-قوس هو أيضا جائز ، ويعادل - مسيرة =قوس
-mtune = عام-قوس. شاهد -متوني للمزيد من المعلومات.
-mcpu = أصلي يتسبب في قيام المترجم بالكشف التلقائي عن وحدة المعالجة المركزية لجهاز الكمبيوتر. في
حاليًا ، هذه الميزة مدعومة فقط في GNU / Linux ، وليست كل البنى
معروف. إذا لم ينجح الاكتشاف التلقائي ، فلن يكون للخيار أي تأثير.
-mfpu =الاسم
هذا يحدد ما هي أجهزة الفاصلة العائمة (أو مضاهاة الأجهزة) المتوفرة على
الهدف. الأسماء المسموح بها هي: vfp, vfpv3, vfpv3- fp16, vfpv3-d16, vfpv3- d16- fp16,
vfpv3xd, vfpv3xd- fp16, نيون, النيون fp16, vfpv4, vfpv4-d16, FPV4-SP-D16, النيون vfpv4,
fpv5-d16, FPV5-SP-D16, fp- armv8, النيون fp- armv8و التشفير النيون- fp- armv8.
If -مسنة- تعويم محدد هذا يحدد تنسيق قيم الفاصلة العائمة.
إذا كانت أجهزة النقطة العائمة المحددة تشتمل على امتداد NEON (على سبيل المثال -مفبو=نيون),
لاحظ أن عمليات الفاصلة العائمة لا يتم إنشاؤها بواسطة جواز التحويل التلقائي لدول مجلس التعاون الخليجي
ما لم -ممتعة-الرياضيات-التحسينات محدد أيضا. هذا لأن أجهزة NEON
لا يطبق بشكل كامل معيار IEEE 754 لحساب الفاصلة العائمة (بتنسيق
يتم التعامل مع قيم غير طبيعية معينة على أنها صفر) ، لذلك يمكن استخدام تعليمات NEON
يؤدي إلى فقدان الدقة.
-نسق mfp16 =الاسم
حدد تنسيق نوع الفاصلة العائمة نصف الدقة "__fp16". مسموح
الأسماء لا شيء, IEEEو البديل؛ الافتراضي هو لا شيء، في هذه الحالة "__fp16"
لم يتم تعريف النوع.
-حجم الهيكل =n
يتم تقريب أحجام جميع الهياكل والنقابات إلى مضاعف عدد
بت التي حددها هذا الخيار. القيم المسموح بها هي 8 و 32 و 64. القيمة الافتراضية
يختلف باختلاف سلاسل الأدوات. بالنسبة لسلسلة أدوات COFF المستهدفة ، تكون القيمة الافتراضية هي
8. يسمح بقيمة 64 فقط إذا كان ABI الأساسي يدعمها.
يمكن أن يؤدي تحديد عدد أكبر إلى إنتاج رمز أسرع وأكثر كفاءة ، ولكن يمكن أيضًا أن ينتج عنه
زيادة حجم البرنامج. من المحتمل أن تكون القيم المختلفة غير متوافقة.
لا يمكن أن تتوقع التعليمات البرمجية المجمعة بقيمة واحدة بالضرورة أن تعمل مع التعليمات البرمجية أو المكتبات
جمعت بقيمة أخرى ، إذا تبادلوا المعلومات باستخدام الهياكل أو النقابات.
مابورت أون نورترن
إنشاء استدعاء لوظيفة "إحباط" في نهاية وظيفة "نورترن". إنها
يتم تنفيذه إذا حاولت الوظيفة العودة.
- مكالمات طويلة
- مكالمات طويلة
يطلب من المترجم إجراء استدعاءات الوظائف عن طريق تحميل عنوان ملف
وظيفة في سجل ثم إجراء مكالمة روتين فرعي على هذا السجل. هذه
التبديل مطلوب إذا كانت الوظيفة الهدف تقع خارج عنونة 64 ميغا بايت
نطاق الإصدار القائم على الإزاحة لتعليمات الإجراء الفرعي.
حتى إذا تم تمكين رمز التبديل هذا ، فلن يتم تحويل جميع مكالمات الوظائف إلى مكالمات طويلة.
الاستدلال هو أن الوظائف الثابتة ، الوظائف التي لها "مكالمة قصيرة"
السمة ، الوظائف الموجودة داخل نطاق التوجيه "#pragma no_long_calls" ،
والوظائف التي تم بالفعل تجميع تعريفاتها ضمن التيار
لم يتم تحويل وحدة الترجمة إلى مكالمات طويلة. الاستثناءات لهذه القاعدة هي أن
تعريفات الوظائف الضعيفة ، الوظائف ذات السمة "long_call" أو "section"
، والوظائف التي تقع ضمن نطاق التوجيه "#pragma long_calls"
دائمًا إلى مكالمات طويلة.
لم يتم تمكين هذه الميزة بشكل افتراضي. التحديد - مكالمات طويلة يعيد
السلوك الافتراضي ، كما هو الحال مع وضع استدعاءات الوظائف في نطاق "#pragma
long_calls_off ". لاحظ أن هذه المفاتيح ليس لها أي تأثير على كيفية عمل المترجم
يولد رمزًا للتعامل مع استدعاءات الوظائف عبر مؤشرات الوظيفة.
-مفردة الموافقة المسبقة عن علم- قاعدة
تعامل مع السجل المستخدم لعنونة الموافقة المسبقة عن علم على أنه للقراءة فقط ، بدلاً من تحميله في ملف
مقدمة لكل وظيفة. نظام وقت التشغيل مسؤول عن تهيئة هذا
التسجيل بقيمة مناسبة قبل بدء التنفيذ.
تسجيل -mpic =ريج
حدد السجل الذي سيتم استخدامه لعنونة الموافقة المسبقة عن علم. بالنسبة للعلبة الأساسية القياسية للموافقة المسبقة عن علم ، فإن مسدس
الافتراضي هو أي سجل مناسب يحدده المترجم. لحالة قاعدة PIC واحدة ،
الافتراضي هو R9 إذا كان الهدف مستندًا إلى EABI أو تم تمكين فحص المكدس ، وإلا فسيتم تمكين
الافتراضي هو RX450.
- البيانات - الصور - نسبي
افترض أن كل شرائح بيانات مرتبطة بمقطع نصي في وقت التحميل. وبالتالي،
يسمح بمعالجة البيانات باستخدام العمليات النسبية للكمبيوتر الشخصي. هذا الخيار بشكل افتراضي
لأهداف أخرى غير VxWorks RTP.
-موقع-وظيفة-اسم
اكتب اسم كل وظيفة في قسم النص ، قبل الوظيفة مباشرة
مقدمة. الكود الذي تم إنشاؤه مشابه لهذا:
t0
.ascii "arm_poke_function_name"، 0
.محاذاة
t1
.كلمة 0xff000000 + (t1 - t0)
Arm_poke_function_name
وسائل التحقق الملكية الفكرية ، س
stmfd sp !، {fp، ip، lr، pc}
sub fp ، ip ، # 4
عند تنفيذ التتبع الخلفي للمكدس ، يمكن للتعليمة البرمجية فحص قيمة "الكمبيوتر" المخزنة في "fp +
0 ". إذا كانت وظيفة التتبع تبحث في الموقع" pc - 12 "وأعلى 8 بتات
تعيين ، ثم نعلم أن هناك اسم دالة مضمنًا يسبق ذلك مباشرة
الموقع وطوله "((pc [-3]) & 0xff000000)".
الإبهام
-الذرة
اختر بين إنشاء التعليمات البرمجية التي يتم تنفيذها في حالات ARM و Thumb. الافتراضي ل
معظم التكوينات هي إنشاء رمز يتم تنفيذه في حالة ARM ، ولكن الافتراضي
يمكن تغييرها عن طريق تكوين GCC مع - مع الوضع =حالة خيار التكوين.
-mtpcs- الإطار
قم بإنشاء إطار مكدس متوافق مع معيار استدعاء إجراء الإبهام لـ
جميع الوظائف غير ذات الأوراق. (الوظيفة الورقية هي وظيفة لا تستدعي أي وظيفة أخرى
وظائف.) الافتراضي هو -mno- tpcs- الإطار.
-mtpcs- ورقة الإطار
قم بإنشاء إطار مكدس متوافق مع معيار استدعاء إجراء الإبهام لـ
جميع وظائف الأوراق. (الوظيفة الطرفية هي وظيفة لا تستدعي أي وظائف أخرى.)
الافتراضي هو -mno-apcs- ورقة الإطار.
- العمل البيني الفائق
يعطي جميع الوظائف المرئية خارجيًا في الملف الجاري تجميعه تعليمة ARM
اضبط العنوان الذي يتحول إلى وضع الإبهام قبل تنفيذ باقي الوظيفة.
هذا يسمح باستدعاء هذه الوظائف من كود غير بيني. هذا الخيار هو
غير صالح في تكوينات AAPCS لأنه يتم تمكين التشغيل البيني افتراضيًا.
-mcaller-التشغيل الفائق
يسمح للمكالمات عبر مؤشرات الوظائف (بما في ذلك الوظائف الافتراضية) بالتنفيذ بشكل صحيح
بغض النظر عما إذا كان قد تم تجميع الكود الهدف للعمل البيني أم لا.
يوجد مقدار ضئيل من النفقات العامة في تكلفة تنفيذ مؤشر دالة إذا كان هذا الخيار
ممكّن. هذا الخيار غير صالح في تكوينات AAPCS لأن التشغيل البيني هو
ممكّن افتراضيًا.
-mtp =الاسم
حدد نموذج الوصول لمؤشر التخزين المحلي لمؤشر الترابط. النماذج الصالحة هي
ناعم، مما يؤدي إلى إنشاء مكالمات إلى "__aeabi_read_tp" ، cp15الذي يجلب الخيط
مؤشر من "cp15" مباشرة (مدعوم في هندسة arm6k) ، و السيارات، التي
يستخدم أفضل طريقة متاحة للمعالج المحدد. الإعداد الافتراضي هو
السيارات.
-mtls- اللهجة =لهجة
حدد اللهجة المراد استخدامها للوصول إلى التخزين المحلي للموضوع. اثنين لهجةق هي
أيد---النو ثيتل افريقي غنو 2. النو ثيتل افريقي تحدد اللهجة مخطط جنو الأصلي لـ
دعم نماذج TLS الديناميكية المحلية والعالمية. ال غنو 2 اللهجة تختار جنو
مخطط واصف ، والذي يوفر أداء أفضل للمكتبات المشتركة. غنو
مخطط التوصيف متوافق مع المخطط الأصلي ، لكنه يتطلب جديدًا
المجمع والرابط ودعم المكتبة. النماذج الأولية والمحلية exec TLS هي
لا تتأثر بهذا الخيار ودائمًا استخدم المخطط الأصلي.
- نقل الكلمات
قم فقط بإنشاء عمليات نقل مطلقة على قيم بحجم الكلمة (مثل R_ARM_ABS32). هذا هو
يتم تمكينه افتراضيًا على الأهداف (uClinux ، SymbianOS) حيث يفرض مُحمل وقت التشغيل
هذا القيد ومتى -fpic or -fPIC محدد.
-مفيكس-القشرة- m3-ldrd
يمكن لبعض أنوية Cortex-M3 أن تتسبب في تلف البيانات عند استخدام تعليمات "ldrd"
يتم استخدام الوجهة المتداخلة والسجلات الأساسية. يتجنب هذا الخيار توليد ملفات
هذه التعليمات. يتم تمكين هذا الخيار افتراضيًا عندما -mcpu = القشرة- m3 is
محدد.
-موافق-الوصول
- الوصول غير المحاذي
لتمكين (أو تعطيل) قراءة وكتابة قيم 16 و 32 بت من العناوين
التي لم يتم محاذاة 16 أو 32 بت. افتراضيًا ، يتم تعطيل الوصول غير المحاذي للجميع
قبل ARMv6 وجميع بنيات ARMv6-M ، وتم تمكينها لجميع البنى الأخرى. لو
لم يتم تمكين الوصول غير المحاذاة ثم يتم الوصول إلى الكلمات الموجودة في هياكل البيانات المحزومة أ
بايت في وقت واحد.
تم تعيين سمة ARM "Tag_CPU_unaligned_access" في ملف الكائن الذي تم إنشاؤه إلى
إما صواب أو خطأ ، حسب ضبط هذا الخيار. إذا كان الوصول غير محاذي
تم تمكين ثم رمز المعالج المسبق "__ARM_FEATURE_UNALIGNED" يتم تعريفه أيضًا.
النيون مقابل 64 بت
تمكن من استخدام نيون للتعامل مع عمليات 64 بت عددية. تم تعطيل هذا افتراضيا
نظرًا لأن تكلفة نقل البيانات من السجلات الأساسية إلى نيون مرتفعة.
بيانات فلاش بطيئة
افترض أن تحميل البيانات من الفلاش أبطأ من جلب التعليمات. لذلك حرفي
تم تصغير الحمل لأداء أفضل. هذا الخيار مدعوم فقط عندما
تجميع ملف تعريف ARMv7 M وإيقاف تشغيله افتراضيًا.
-الصيغة الموحدة
افترض أن المجمع المضمن يستخدم بناء جملة ASM الموحد. الافتراضي هو حاليا معطلة
مما يعني تقسيم بناء الجملة. حاليًا هذا الخيار متاح فقط لـ Thumb1 و
ليس له تأثير على حالة ARM و Thumb2. ومع ذلك ، قد يتغير هذا في الإصدارات المستقبلية من
مجلس التعاون الخليجي. يجب اعتبار بناء الجملة المقسّم مهملًا.
مقيد عليه
يقيد إنشاء كتل تكنولوجيا المعلومات لتتوافق مع قواعد ARMv8. يمكن لكتل تكنولوجيا المعلومات
تحتوي فقط على تعليمات 16 بت واحدة من مجموعة مختارة من التعليمات. هذه
يكون الخيار قيد التشغيل افتراضيًا في وضع الإبهام ARMv8.
-طباعة- ضبط المعلومات
اطبع معلومات ضبط وحدة المعالجة المركزية كتعليق في ملف المجمع. هذا هو الخيار المستخدم
فقط لاختبار الانحدار للمترجم وليس مخصصًا للاستخدام العادي في
تجميع التعليمات البرمجية. هذا الخيار معطل افتراضيا.
AVR مزيد من الخيارات
يتم تحديد هذه الخيارات لتطبيقات AVR:
-mmcu =MCU
حدد بنيات مجموعة تعليمات Atmel AVR (ISA) أو نوع MCU.
الإعداد الافتراضي لهذا الخيار هو @ tie {}avr2.
يدعم مجلس التعاون الخليجي أجهزة AVR و ISAs التالية:
"avr2"
الأجهزة "الكلاسيكية" بسعة تصل إلى 8 @ تعادل {} كيلوبايت من ذاكرة البرنامج. MCUtie {} = "attiny22"،
"attiny26", "at90c8534", "at90s2313", "at90s2323", "at90s2333", "at90s2343",
"at90s4414", "at90s4433", "at90s4434", "at90s8515", "at90s8535".
"avr25"
الأجهزة "Classic" بسعة تصل إلى 8 @ تعادل {} كيلوبايت من ذاكرة البرنامج ومع "MOVW"
تعليمات. MCUtie {} = "ata5272"، "ata6616c"، "attiny13"، "attiny13a"،
"attiny2313" ، "attiny2313a" ، "attiny24" ، "attiny24a" ، "attiny25" ، "attiny261" ،
"attiny261a" ، "attiny43u" ، "attiny4313" ، "attiny44" ، "attiny44a" ، "attiny441" ،
"attiny45" ، "attiny461" ، "attiny461a" ، "attiny48" ، "attiny828" ، "attiny84" ،
"attiny84a" ، "attiny841" ، "attiny85" ، "attiny861" ، "attiny861a" ، "attiny87" ،
"attiny88" ، "at86rf401".
"avr3"
الأجهزة "Classic" بسعة 16 @ tie {} KiB حتى 64 @ tie {} كيلوبايت من ذاكرة البرنامج.
MCUtie {} = "at43usb355"، "at76c711".
"avr31"
الأجهزة "Classic" بسعة 128 @ tie {} كيلوبايت من ذاكرة البرنامج. MCUtie {} = "atmega103"،
"at43usb320".
"avr35"
الأجهزة "Classic" ذات 16 @ tie {} KiB حتى 64 @ tie {} KiB من ذاكرة البرنامج ومع
تعليمات "MOVW". MCUtie {} = "ata5505"، "ata6617c"، "ata664251"،
"atmega16u2" ، "atmega32u2" ، "atmega8u2" ، "attiny1634" ، "attiny167" ، "at90usb162" ،
"at90usb82".
"avr4"
أجهزة "محسّنة" تصل سعتها إلى 8 @ تعادل {} كيلوبايت من ذاكرة البرنامج. MCUtie {} = "ata6285"،
"ata6286" ، "ata6289" ، "ata6612c" ، "atmega48" ، "atmega48a" ، "atmega48p" ،
"atmega48pa" ، "atmega8" ، "atmega8a" ، "atmega8hva" ، "atmega8515" ، "atmega8535" ،
"atmega88" ، "atmega88a" ، "atmega88p" ، "atmega88pa" ، "at90pwm1" ، "at90pwm2" ،
"at90pwm2b", "at90pwm3", "at90pwm3b", "at90pwm81".
"avr5"
الأجهزة "المحسّنة" بسعة 16 @ tie {} KiB حتى 64 @ tie {} كيلوبايت من ذاكرة البرنامج.
MCUtie {} = "ata5702m322"، "ata5782"، "ata5790"، "ata5790n"، "ata5795"، "ata5831"،
"ata6613c" ، "ata6614q" ، "atmega16" ، "atmega16a" ، "atmega16hva" ، "atmega16hva2" ،
"atmega16hvb" ، "atmega16hvbrevb" ، "atmega16m1" ، "atmega16u4" ، "atmega161" ،
"atmega162" ، "atmega163" ، "atmega164a" ، "atmega164p" ، "atmega164pa" ، "atmega165" ،
"atmega165a" ، "atmega165p" ، "atmega165pa" ، "atmega168" ، "atmega168a" ،
"atmega168p" ، "atmega168pa" ، "atmega169" ، "atmega169a" ، "atmega169p" ،
"atmega169pa" ، "atmega32" ، "atmega32a" ، "atmega32c1" ، "atmega32hvb" ،
"atmega32hvbrevb" ، "atmega32m1" ، "atmega32u4" ، "atmega32u6" ، "atmega323" ،
"atmega324a" ، "atmega324p" ، "atmega324pa" ، "atmega325" ، "atmega325a" ،
"atmega325p" ، "atmega325pa" ، "atmega3250" ، "atmega3250a" ، "atmega3250p" ،
"atmega3250pa" ، "atmega328" ، "atmega328p" ، "atmega329" ، "atmega329a" ،
"atmega329p" ، "atmega329pa" ، "atmega3290" ، "atmega3290a" ، "atmega3290p" ،
"atmega3290pa" ، "atmega406" ، "atmega64" ، "atmega64a" ، "atmega64c1" ، "atmega64hve" ،
"atmega64hve2" ، "atmega64m1" ، "atmega64rfr2" ، "atmega640" ، "atmega644" ،
"atmega644a" ، "atmega644p" ، "atmega644pa" ، "atmega644rfr2" ، "atmega645" ،
"atmega645a" ، "atmega645p" ، "atmega6450" ، "atmega6450a" ، "atmega6450p" ،
"atmega649" ، "atmega649a" ، "atmega649p" ، "atmega6490" ، "atmega6490a" ،
"atmega6490p", "at90can32", "at90can64", "at90pwm161", "at90pwm216", "at90pwm316",
"at90scr100" ، "at90usb646" ، "at90usb647" ، "at94k" ، "m3000".
"avr51"
الأجهزة "المحسّنة" بسعة 128 @ tie {} كيلوبايت من ذاكرة البرنامج. MCUtie {} = "atmega128"،
"atmega128a" ، "atmega128rfa1" ، "atmega128rfr2" ، "atmega1280" ، "atmega1281" ،
"atmega1284" ، "atmega1284p" ، "atmega1284rfr2" ، "at90can128" ، "at90usb1286" ،
"at90usb1287".
"avr6"
الأجهزة "المحسّنة" التي تحتوي على كمبيوتر ثلاثي البايت ، أي بأكثر من 3 @ تعادل {} كيلوبايت من البرنامج
ذاكرة. MCUtie {} = "atmega256rfr2"، "atmega2560"، "atmega2561"، "atmega2564rfr2".
"avrxmega2"
أجهزة "XMEGA" مع أكثر من 8 @ tie {} KiB وما يصل إلى 64 @ tie {} KiB من ذاكرة البرنامج.
MCUtie {} = "atxmega16a4"، "atxmega16a4u"، "atxmega16c4"، "atxmega16d4"،
"atxmega16e5", "atxmega32a4", "atxmega32a4u", "atxmega32c3", "atxmega32c4",
"atxmega32d3", "atxmega32d4", "atxmega32e5", "atxmega8e5".
"avrxmega4"
أجهزة "XMEGA" التي يزيد وزنها عن 64 كيلوبايت {} كيلوبايت وما يصل إلى 128 @ تعادل {} كيلوبايت من البرنامج
ذاكرة. MCUtie {} = "atxmega64a3"، "atxmega64a3u"، "atxmega64a4u"، "atxmega64b1"،
"atxmega64b3", "atxmega64c3", "atxmega64d3", "atxmega64d4".
"avrxmega5"
أجهزة "XMEGA" التي يزيد وزنها عن 64 كيلوبايت {} كيلوبايت وما يصل إلى 128 @ تعادل {} كيلوبايت من البرنامج
الذاكرة وأكثر من 64 @ التعادل {} كيلوبايت من ذاكرة الوصول العشوائي. MCUtie {} = "atxmega64a1" ،
"atxmega64a1u".
"avrxmega6"
أجهزة "XMEGA" مع أكثر من 128 @ تعادل {} كيلوبايت من ذاكرة البرنامج. MCUtie {} =
"atxmega128a3", "atxmega128a3u", "atxmega128b1", "atxmega128b3", "atxmega128c3",
"atxmega128d3", "atxmega128d4", "atxmega192a3", "atxmega192a3u", "atxmega192c3",
"atxmega192d3", "atxmega256a3", "atxmega256a3b", "atxmega256a3bu",
"atxmega256a3u", "atxmega256c3", "atxmega256d3", "atxmega384c3", "atxmega384d3".
"avrxmega7"
أجهزة "XMEGA" التي تحتوي على أكثر من 128 @ تعادل {} كيلوبايت من ذاكرة البرنامج وأكثر من
64 @ التعادل {} كيلوبايت من ذاكرة الوصول العشوائي. MCUtie {} = "atxmega128a1"، "atxmega128a1u"، "atxmega128a4u".
"avrtiny"
أجهزة صغيرة "TINY" ذات نواة صغيرة بسعة 512 @ تعادل {} B حتى 4 @ tie {} كيلوبايت من ذاكرة البرنامج.
MCUtie {} = "attiny10"، "attiny20"، "attiny4"، "attiny40"، "attiny5"، "attiny9".
"avr1"
يتم تنفيذ ISA من خلال الحد الأدنى من AVR الأساسية ودعمها للمجمع فقط.
MCUtie {} = "attiny11"، "attiny12"، "attiny15"، "attiny28"، "at90s1200".
-تراكم-أرجس
تجميع وسيطات الدالة الصادرة والحصول على / تحرير مساحة المكدس المطلوبة لـ
وسيطات الدالة الصادرة مرة واحدة في مقدمة / خاتمة. بدون هذا الخيار ،
يتم دفع الوسائط الصادرة قبل استدعاء دالة ثم تنبثق بعد ذلك.
يمكن أن يكون ظهور الوسائط بعد استدعاء الوظيفة مكلفًا على AVR لذلك
قد يؤدي تراكم مساحة المكدس إلى ملفات تنفيذية أصغر لأن الوسائط تحتاج
لا يجب إزالته من المكدس بعد استدعاء الوظيفة هذا.
يمكن أن يؤدي هذا الخيار إلى تقليل حجم الرمز للوظائف التي تقوم بإجراء العديد من المكالمات إلى
الدوال التي تحصل على وسيطاتها على المكدس مثل استدعاءات وظائف تشبه printf.
- تكلفة الامتياز =كلف
قم بتعيين تكاليف الفرع لتعليمات الفرع الشرطية إلى كلف. قيم معقولة
For كلف هي أعداد صحيحة صغيرة غير سالبة. تكلفة الفرع الافتراضية هي 0.
- مقدمات المكالمات
يتم توسيع مقدمات الوظائف / الخاتمات كمكالمات إلى الإجراءات الفرعية المناسبة. الشفرة
الحجم أصغر.
النعناع 8
افترض أن "int" عدد صحيح 8 بت. يؤثر هذا على أحجام جميع الأنواع: "char" هو 1
البايت ، "int" هو 1 بايت ، و "long" هو 2 بايت ، و "long" 4 بايت. لو سمحت
لاحظ أن هذا الخيار لا يتوافق مع معايير C ، ولكنه ينتج عنه أصغر
حجم الكود.
-mn- فلاش =NUM
افترض أن حجم ذاكرة الفلاش NUM ضرب 64 @ التعادل {} KiB.
-منو المقاطعات
الرمز الذي تم إنشاؤه غير متوافق مع مقاطعات الأجهزة. حجم الكود أصغر.
-استراحة
حاول استبدال "CALL" resp. تعليمات "JMP" بواسطة أقصر مدة "RCALL". "RJMP"
التعليمات إن وجدت. ضبط -استراحة فقط يضيف ال - اربط-استرخاء الخيار الى
سطر أوامر المجمّع و --يستريح الخيار لسطر أوامر الرابط.
يتم تنفيذ القفز بالاسترخاء بواسطة الرابط لأنه لم يتم التعرف على إزاحات القفز من قبل
يقع الرمز. لذلك ، رمز المجمع الذي تم إنشاؤه بواسطة المترجم هو نفسه ،
لكن التعليمات الواردة في الملف القابل للتنفيذ قد تختلف عن التعليمات الواردة في المجمع
رمز.
يجب تشغيل الاسترخاء إذا كانت هناك حاجة إلى بذرة رابط ، راجع قسم "EIND" و
بذرة رابط أدناه.
-مرمو
افترض أن الجهاز يدعم إرشادات القراءة-التعديل-الكتابة "XCH" ، "LAC" ، "LAS"
و "لات".
-msp8
تعامل مع سجل مؤشر المكدس على أنه سجل 8 بتات ، أي افترض البايت العالي لـ
مؤشر المكدس هو صفر. بشكل عام ، لا تحتاج إلى ضبط هذا الخيار يدويًا.
يتم استخدام هذا الخيار داخليًا بواسطة المترجم لتحديد وبناء ملفات متعددة لـ
معماريات "avr2" و "avr25". تمزج هذه البنى الأجهزة مع وبدون
"SPH". لأي مكان آخر غير -mmcu = avr2 or -mmcu = avr25 يضيف سائق المترجم
أو يزيل هذا الخيار من سطر الأوامر الخاص بالمترجم ، لأن المترجم
ثم يعرف ما إذا كان الجهاز أو البنية بها مؤشر مكدس 8 بت وبالتالي لا يوجد "SPH"
سجل أم لا.
-مستريك- X
استخدم سجل العنوان "X" بالطريقة التي تقترحها الأجهزة. هذا يعني أن "X" هي
تستخدم فقط في عنونة غير مباشرة أو لاحقة أو قبل إنقاص.
بدون هذا الخيار ، يمكن استخدام سجل "X" بنفس طريقة استخدام "Y" أو "Z"
ثم تتم محاكاته بتعليمات إضافية. على سبيل المثال ، تحميل قيمة بـ
عنونة "X + const" باستخدام "const <64" صغيرة غير سالبة إلى سجل Rn is
يؤديها
adiw r26 ، const ؛ X + = ثابت
لد ، X ؛ = * س
sbiw r26 ، const ؛ X - = const
كومة صغيرة
قم فقط بتغيير 8 بتات @ التعادل السفلية {} من مؤشر المكدس.
-nodevicelib
لا تربط بالمكتبة الخاصة بجهاز AVR-LibC "libdev.a".
-Waddr- مساحة- تحويل
تحذير بشأن التحويلات بين مسافات العنوان في الحالة التي يكون فيها العنوان الناتج
لا يتم تضمين مساحة في مساحة العنوان الواردة.
"EIND" وأجهزة بها أكثر من 128 كيلو بايت من فلاش
يبلغ عرض المؤشرات في التنفيذ 16 @ تعادل {} بت. عنوان الوظيفة أو التسمية
يتم تمثيله كعنوان كلمة بحيث يمكن للقفزات والمكالمات غير المباشرة استهداف أي رمز
العنوان في نطاق 64 @ التعادل {} الكلمات كي.
من أجل تسهيل القفز غير المباشر على الأجهزة بأكثر من 128 @ تعادل {} كي بايت من
مساحة ذاكرة البرنامج ، هناك وظيفة تسجيل خاصة تسمى "EIND" والتي تعمل بمثابة
الجزء الأكثر أهمية من عنوان الهدف عندما تكون تعليمات "EICALL" أو "EIJMP"
مستخدم.
يتم التعامل مع القفزات والمكالمات غير المباشرة على هذه الأجهزة على النحو التالي بواسطة المترجم وهي
تخضع لبعض القيود:
* لا يقوم المترجم بتعيين "EIND" أبدًا.
* يستخدم المترجم "EIND" ضمنيًا في تعليمات "EICALL" / "EIJMP" أو قد يقرأ
"EIND" مباشرة من أجل محاكاة مكالمة / قفزة غير مباشرة عن طريق "RET"
تعليمات.
* يفترض المترجم أن "EIND" لا يتغير أبدًا أثناء رمز بدء التشغيل أو أثناء
تطبيق. على وجه الخصوص ، لا يتم حفظ / استعادة "EIND" في الوظيفة أو المقاطعة
خدمة روتينية مقدمة / خاتمة.
* بالنسبة للمكالمات غير المباشرة للوظائف و geto المحسوبة ، يقوم الرابط بإنشاء ملفات بذرة. كعب
تسمى أحيانًا منصات القفز الترامبولين. وبالتالي ، فإن الاتصال / القفز غير المباشر يقفز إلى
مثل كعب. يحتوي كعب الروتين على قفزة مباشرة إلى العنوان المطلوب.
* يجب تشغيل إرخاء الرابط بحيث يولد الرابط الأجزاء الجذرية بشكل صحيح
في جميع الأحوال. رؤية خيار المترجم -استراحة وخيار الرابط --يستريح.
هناك حالات زاوية حيث من المفترض أن يقوم الرابط بإنشاء بذرة ولكن يتم إحباطها
بدون استرخاء وبدون رسالة خطأ مفيدة.
* يتم ترتيب نص الرابط الافتراضي للرمز باستخدام "EIND = 0". إذا كان من المفترض أن يكون الرمز
للعمل من أجل إعداد مع "EIND! = 0" ، يجب استخدام نص رابط مخصص بالترتيب
لوضع المقاطع التي يبدأ اسمها بـ ".trampolines" في المقطع حيث
يشير "EIND" إلى.
* لا يقوم رمز بدء التشغيل من libgcc بتعيين "EIND" مطلقًا. لاحظ أن كود بدء التشغيل عبارة عن مزيج
من التعليمات البرمجية من libgcc و AVR-LibC. لتأثير AVR-LibC على "EIND" ، راجع AVR-
دليل مستخدم LibC ("http://nongnu.org/avr-libc/user-manual/").
* من المشروع لكود بدء التشغيل الخاص بالمستخدم إعداد "EIND" مبكرًا ، على سبيل المثال بواسطة
يعني رمز التهيئة الموجود في قسم ".init3". مثل هذا الرمز يعمل قبل
رمز بدء التشغيل العام الذي يهيئ ذاكرة الوصول العشوائي (RAM) ويستدعي المنشئات ، ولكن بعد جزء صغير من
رمز بدء التشغيل من AVR-LibC الذي يعين "EIND" إلى المقطع حيث يوجد جدول المتجه
يقع.
#يشمل
الفراغ ثابت
__ السمة __ ((القسم (". init3") ، عارية ، مستعملة ، no_in Instrument_function))
init3_set_eind (باطل)
{
__asm متطاير ("ldi r24، pm_hh8 (__ trampolines_start) \ n \ t"
"out٪ i0، r24" :: "n" (& EIND): "r24"، "memory")؛
}
يتم تعريف رمز "__trampolines_start" في نص الرابط.
* يتم إنشاء Stubs تلقائيًا بواسطة الرابط في حالة الشرطين التاليين
التقى:
-
(باختصار ل توليد بذرة) مثل ذلك:
LDI r24، lo8 (gs ( ))
LDI r25، hi8 (gs ( ))
-
في الخارج الجزء حيث توجد بذرة.
* يُصدر المترجم مُعدِّلات "gs" لتسميات التعليمات البرمجية في الحالات التالية:
-
-
- - مقدمات المكالمات>
خيار سطر الأوامر.
-
الجداول يمكنك تحديد -fno- القفز-الجداول خيار سطر الأوامر.
-
-
* القفز إلى عناوين غير رمزية مثل هذا ليس المدعومة:
int main (باطل)
{
/ * وظيفة الاتصال على عنوان الكلمة 0x2 * /
العودة ((int (*) (void)) 0x2) () ؛
}
بدلاً من ذلك ، يجب إعداد كعب ، أي يجب استدعاء الوظيفة من خلال رمز
("func_4" في المثال):
int main (باطل)
{
خارجي int func_4 (باطل) ؛
/ * وظيفة الاتصال على عنوان البايت 0x4 * /
عودة func_4 () ؛
}
ويتم ربط التطبيق بـ -Wl، - defsym، func_4 = 0x4. بدلاً من ذلك ، "func_4"
يمكن تعريفها في نص الرابط.
التعامل مع سجلات الوظائف الخاصة "RAMPD" و "RAMPX" و "RAMPY" و "RAMPZ"
تدعم بعض أجهزة AVR ذكريات أكبر من 64 @ tie {} نطاق KiB الذي يمكن الوصول إليه
مع مؤشرات 16 بت. للوصول إلى مواقع الذاكرة خارج نطاق 64 @ tie {} KiB ، فإن ملف
يتم استخدام محتوى سجل "RAMP" كجزء كبير من العنوان: "X" ، "Y" ، "Z"
يتم ربط سجل العناوين بوظيفة خاصة "RAMPX" و "RAMPY" و "RAMPZ"
التسجيل ، على التوالي ، للحصول على عنوان واسع. وبالمثل ، يتم استخدام "RAMPD" مع ملفات
عنونة مباشرة.
* يقوم رمز بدء التشغيل بتهيئة سجلات الوظيفة الخاصة "RAMP" بصفر.
* اذا كان AVR عين العنوان مساحات ، مسماة العنوان الفضاء بخلاف عام أو "__flash" هو
مستخدم ، ثم يتم تعيين "RAMPZ" حسب الحاجة قبل العملية.
* إذا كان الجهاز يدعم ذاكرة RAM أكبر من 64 @ tie {} KiB ويحتاج المحول البرمجي إلى التغيير
لإنجاز عملية "RAMPZ" ، يتم إعادة تعيين "RAMPZ" إلى الصفر بعد العملية.
* إذا كان الجهاز مزودًا بسجل "RAMP" محدد ، فإن مقدمة / خاتمة ISR
يحفظ / يستعيد SFR هذا ويهيئته بصفر في حالة احتمال وجود كود ISR
(ضمنيًا) استخدمه.
* ذاكرة الوصول العشوائي الأكبر من 64 @ tie {} KiB غير مدعومة من قبل GCC لأهداف AVR. كما ترى
مُجمّع مضمن للقراءة من مواقع خارج نطاق عنوان 16 بت والتغيير
أحد سجلات "RAMP" ، يجب إعادة تعيينه إلى الصفر بعد الوصول.
AVR وحدات الماكرو المدمجة
يعرّف GCC العديد من وحدات الماكرو المضمنة بحيث يمكن لرمز المستخدم اختبار التواجد أو
غياب الميزات. يتم تقريبًا استنتاج أي من وحدات الماكرو المضمنة التالية من الجهاز
القدرات وبالتالي أثارها -mmcu = خيار سطر الأوامر.
لمزيد من وحدات الماكرو المضمنة الخاصة بـ AVR ، انظر AVR عين العنوان المساحات AVR مدمج
وظائف.
"__AVR_ARCH__"
إنشاء الماكرو الذي يتحول إلى رقم عشري يعرّف البنية و
يعتمد على -mmcu =MCU اختيار. القيم الممكنة هي:
2، 25، 3، 31، 35، 4، 5، 51، 6
For MCU= "avr2" ، "avr25" ، "avr3" ، "avr31" ، "avr35" ، "avr4" ، "avr5" ، "avr51" ، "avr6" ،
على التوالي و
100، 102، 104، 105، 106، 107
For MCU= "avrtiny"، "avrxmega2"، "avrxmega4"، "avrxmega5"، "avrxmega6"، "avrxmega7"،
على التوالى. لو MCU جهازًا ، يتم تعيين هذا الماكرو المدمج وفقًا لذلك. ل
على سبيل المثال مع -mmcu = atmega8 يتم تعريف الماكرو على 4.
"__AVR_الجهاز__"
الضبط -mmcu =جهاز يحدد هذا الماكرو المدمج الذي يعكس اسم الجهاز. ل
مثال، -mmcu = atmega8 يحدد الماكرو المدمج "__AVR_ATmega8__" ، -mmcu = attiny261a
يعرّف "__AVR_ATtiny261A__" ، إلخ.
تتبع أسماء وحدات الماكرو المضمنة المخطط "__AVR_الجهاز__" أين الجهاز هل
اسم الجهاز اعتبارًا من دليل مستخدم AVR. الفرق بين الجهاز في المدمج
الماكرو و جهاز in -mmcu =جهاز هو أن الأخير دائمًا بالأحرف الصغيرة.
If جهاز ليس جهازًا ولكنه مجرد بنية أساسية مثل avr51، هذا الماكرو ليس كذلك
يعرف.
"__AVR_DEVICE_NAME__"
الضبط -mmcu =جهاز يحدد هذا الماكرو المدمج لاسم الجهاز. على سبيل المثال،
مع -mmcu = atmega8 يتم تعريف الماكرو على "atmega8".
If جهاز ليس جهازًا ولكنه مجرد بنية أساسية مثل avr51، هذا الماكرو ليس كذلك
يعرف.
"__AVR_XMEGA__"
ينتمي الجهاز / البنية إلى عائلة أجهزة XMEGA.
"__AVR_HAVE_ELPM__"
الجهاز يحتوي على تعليمات "ELPM".
"__AVR_HAVE_ELPMX__"
يحتوي الجهاز على "ELPM Rن ، ي " و "ELPM Rn ، Z + " تعليمات.
"__AVR_HAVE_MOVW__"
يحتوي الجهاز على تعليمات "MOVW" لإجراء حركات تسجيل-تسجيل 16 بت.
"__AVR_HAVE_LPMX__"
يحتوي الجهاز على "LPM Rن ، ي " و "LPM Rn ، Z + " تعليمات.
"__AVR_HAVE_MUL__"
الجهاز يحتوي على مضاعف الأجهزة.
"__AVR_HAVE_JMP_CALL__"
الجهاز يحتوي على تعليمات "JMP" و "CALL". هذا هو الحال بالنسبة للأجهزة ذات
ما لا يقل عن 16 @ التعادل {} كيلوبايت من ذاكرة البرنامج.
"__AVR_HAVE_EIJMP_EICALL__"
"__AVR_3_BYTE_PC__"
يحتوي الجهاز على تعليمات "EIJMP" و "EICALL". هذا هو الحال بالنسبة للأجهزة
مع أكثر من 128 @ التعادل {} كيلوبايت من ذاكرة البرنامج. وهذا يعني أيضًا أن البرنامج
يبلغ عرض العداد (PC) 3 @ تعادل {} بايت.
"__AVR_2_BYTE_PC__"
يبلغ عرض عداد البرامج (PC) 2 @ tie {} بايت. هذا هو الحال بالنسبة للأجهزة التي تصل إلى
128 @ التعادل {} كيلوبايت من ذاكرة البرنامج.
"__AVR_HAVE_8BIT_SP__"
"__AVR_HAVE_16BIT_SP__"
يتم التعامل مع سجل مؤشر المكدس (SP) على أنه سجل 8 بت على التوالي 16 بت بواسطة
المترجم. يتأثر تعريف وحدات الماكرو هذه بـ كومة صغيرة.
"__AVR_HAVE_SPH__"
"__AVR_SP8__"
يحتوي الجهاز على SPH (جزء مرتفع من مؤشر المكدس) أو لديه وظيفة خاصة
مؤشر مكدس 8 بت ، على التوالي. يتأثر تعريف وحدات الماكرو هذه بـ
-mmcu = وفي حالات -mmcu = avr2 -mmcu = avr25 أيضا بواسطة -msp8.
"__AVR_HAVE_RAMPD__"
"__AVR_HAVE_RAMPX__"
"__AVR_HAVE_RAMPY__"
"__AVR_HAVE_RAMPZ__"
الجهاز به "RAMPD" ، "RAMPX" ، "RAMPY" ، "RAMPZ" تسجيل الوظائف الخاصة ،
على التوالي.
"__NO_INTERRUPTS__"
يعكس هذا الماكرو -منو المقاطعات خيار سطر الأوامر.
"__AVR_ERRATA_SKIP__"
"__AVR_ERRATA_SKIP_JMP_CALL__"
يجب ألا تتخطى بعض أجهزة AVR (AT90S8515 ، ATmega103) إرشادات 32 بت بسبب
خطأ الأجهزة. تعليمات التخطي هي "SBRS" و "SBRC" و "SBIS" و "SBIC" و "CPSE".
يتم تعريف الماكرو الثاني فقط إذا تم أيضًا تعيين "__AVR_HAVE_JMP_CALL__".
"__AVR_ISA_RMW__"
يحتوي الجهاز على تعليمات القراءة-التعديل-الكتابة (XCH و LAC و LAS و LAT).
"__AVR_SFR_OFFSET __ =عوض"
التعليمات التي يمكنها معالجة سجلات الوظيفة الخاصة للإدخال / الإخراج مباشرة مثل "IN" ،
قد تستخدم "OUT" و "SBI" وما إلى ذلك عنوانًا مختلفًا كما لو تم توجيهها بواسطة تعليمات لـ
الوصول إلى ذاكرة الوصول العشوائي مثل "LD" أو "STS". هذه الإزاحة تعتمد على بنية الجهاز ولها
ليتم طرحها من عنوان RAM للحصول على عنوان I / O @ tie {}.
"__WITH_AVRLIBC__"
تم تكوين المترجم ليتم استخدامه مع AVR-Libc. انظر --مع- avrlibc
خيار التكوين.
Blackfin مزيد من الخيارات
-mcpu =وحدة المعالجة المركزية[-com.sirevision]
يحدد اسم معالج Blackfin المستهدف. حاليا، وحدة المعالجة المركزية يمكن أن تكون واحدة من
bf512, bf514, bf516, bf518, bf522, bf523, bf524, bf525, bf526, bf527, bf531, bf532,
bf533, bf534, bf536, bf537, bf538, bf539, bf542, bf544, bf547, bf548, bf549, فرنك بلجيكي 542 م,
فرنك بلجيكي 544 م, فرنك بلجيكي 547 م, فرنك بلجيكي 548 م, فرنك بلجيكي 549 م, bf561, bf592.
اختياري com.sirevision يحدد مراجعة السيليكون للهدف Blackfin
المعالج. يتم تمكين أي حلول بديلة متاحة لمراجعة السيليكون المستهدفة.
If com.sirevision is لا شيء، لم يتم تمكين الحلول البديلة. لو com.sirevision is أي وقت، كل
تم تمكين الحلول للمعالج المستهدف. الماكرو "__SILICON_REVISION__"
يتم تعريفه إلى رقمين سداسي عشري يمثلان الأرقام الرئيسية والثانوية في
مراجعة السيليكون. لو com.sirevision is لا شيء، لم يتم تعريف "__SILICON_REVISION__".
If com.sirevision is أي وقت، تم تعريف "__SILICON_REVISION__" ليكون 0xffff. لو هذا
اختياري com.sirevision لم يتم استخدامه ، يفترض GCC أحدث مراجعة معروفة للسيليكون لـ
المستهدف معالج Blackfin.
يعرّف GCC ماكرو المعالج المسبق للملف المحدد وحدة المعالجة المركزية. ل bfin-elf سلسلة أدوات
يؤدي هذا الخيار إلى ربط الأجهزة التي يوفرها موقع libgloss بصفحة الدفع لتسوية الفواتير (BSP) إذا كان -مسيم is
غير معطى.
بدون هذا الخيار ، bf532 يتم استخدامه كمعالج افتراضيًا.
لاحظ أن الدعم لـ bf561 غير مكتمل. ل bf561، فقط ماكرو المعالج هو
يعرف.
-مسيم
يحدد أن البرنامج سيتم تشغيله على جهاز المحاكاة. هذا يسبب المحاكاة
يتم توفير BSP بواسطة libgloss ليتم الربط به. هذا الخيار له تأثير فقط من أجل bfin-elf
سلسلة الأدوات. بعض الخيارات الأخرى ، مثل -متوسط-المكتبة المشتركة -mfdpic، لمح
-مسيم.
-موميت-أوراق-إطار-مؤشر
لا تحتفظ بمؤشر الإطار في سجل لوظائف طرفية. هذا يتجنب
تعليمات لحفظ مؤشرات الإطارات وإعدادها واستعادتها وإنشاء تسجيل إضافي
متوفر في وظائف الأوراق. الخيار - مؤشر الإطار يزيل الإطار
مؤشر لجميع الوظائف ، مما قد يجعل تصحيح الأخطاء أكثر صعوبة.
-mspecld- شذوذ
عند التمكين ، يضمن المترجم أن الشفرة التي تم إنشاؤها لا تحتوي على
الأحمال التخمينية بعد تعليمات القفز. إذا تم استخدام هذا الخيار ،
تم تعريف "__WORKAROUND_SPECULATIVE_LOADS".
-منو- specld- شذوذ
لا تنشئ كودًا إضافيًا لمنع حدوث أعباء مضاربة.
-مزامنة-شذوذ
عند التمكين ، يضمن المترجم أن الكود الذي تم إنشاؤه لا يحتوي على CSYNC أو
تعليمات SSYNC في وقت قريب جدًا بعد الفروع المشروطة. إذا تم استخدام هذا الخيار ،
تم تعريف "__WORKAROUND_SPECULATIVE_SYNCS".
-منو-سينك-شذوذ
لا تقم بإنشاء رمز إضافي لمنع حدوث تعليمات CSYNC أو SSYNC أيضًا
بعد فترة وجيزة من الفرع الشرطي.
-mlow-64 كيلو
عند التمكين ، يكون المترجم حرًا في الاستفادة من المعرفة الكاملة
يناسب البرنامج ذاكرة 64 كيلو بايت منخفضة.
-من-منخفض -64 كيلو
افترض أن البرنامج كبير بشكل تعسفي. هذا هو الافتراضي.
- مكدس الاختيار L1
قم بفحص المكدس باستخدام المعلومات الموضوعة في ذاكرة لوحة التخزين L1 بواسطة uClinux
نواة.
-متوسط-المكتبة المشتركة
قم بإنشاء رمز يدعم المكتبات المشتركة عبر طريقة معرف المكتبة. هذا يسمح
لتنفيذ مكتبات في مكانها ومشاركتها في بيئة بدون ذاكرة افتراضية
إدارة. هذا الخيار يعني -fPIC. مع bfin-elf الهدف ، هذا الخيار يعني
-مسيم.
-رقم-معرف-مكتبة مشتركة
قم بإنشاء رمز لا يفترض أنه يتم استخدام المكتبات المشتركة القائمة على المعرفات. هذا هو
الافتراضي.
-mleaf-id-المكتبة المشتركة
قم بإنشاء رمز يدعم المكتبات المشتركة عبر طريقة معرف المكتبة ، ولكن يفترض
أن هذه المكتبة أو الملف القابل للتنفيذ لن يرتبط بأي مكتبات مشتركة أخرى للمعرفات.
يسمح ذلك للمترجم باستخدام رمز أسرع للقفزات والمكالمات.
-منو ليف- معرف- مكتبة مشتركة
لا تفترض أن الكود الذي يتم تجميعه لن يرتبط بأي من مكتبات المعرفات المشتركة.
يتم إنشاء رمز أبطأ للقفز وإدخال المكالمات.
-مكتبة-مشارد- id = n
يحدد رقم تعريف المكتبة المشتركة المستندة إلى المعرف التي يتم تجميعها.
يؤدي تحديد القيمة 0 إلى إنشاء رمز أكثر إحكاما ؛ تحديد قوى القيم الأخرى
تخصيص هذا الرقم للمكتبة الحالية ولكن لم يعد هناك مساحة- أو وقت-
فعالة من حذف هذا الخيار.
-مسبب-البيانات
قم بإنشاء رمز يسمح بوضع مقطع البيانات في منطقة مختلفة من الذاكرة
من جزء النص. هذا يسمح للتنفيذ في مكان في بيئة بدون
إدارة الذاكرة الافتراضية عن طريق القضاء على عمليات النقل مقابل قسم النص.
-رقم-سبتمبر-البيانات
قم بإنشاء رمز يفترض أن مقطع البيانات يتبع مقطع النص. هذا هو
الافتراضي.
- مكالمات طويلة
- مكالمات طويلة
يطلب من المترجم إجراء استدعاءات الوظائف عن طريق تحميل عنوان ملف
وظيفة في سجل ثم إجراء مكالمة روتين فرعي على هذا السجل. هذه
التبديل مطلوب إذا كانت الوظيفة الهدف تقع خارج نطاق العنونة 24 بت
الإصدار القائم على الإزاحة من تعليمات استدعاء الإجراء الفرعي.
لم يتم تمكين هذه الميزة بشكل افتراضي. التحديد - مكالمات طويلة يعيد
السلوك الافتراضي. لاحظ أن هذه المفاتيح ليس لها أي تأثير على كيفية إنشاء المحول البرمجي
رمز للتعامل مع استدعاءات الوظائف عبر مؤشرات الوظيفة.
-سريع- fp
الارتباط بمكتبة الفاصلة العائمة السريعة. هذه المكتبة تسترخي بعضًا من IEEE
قواعد معيار الفاصلة العائمة لفحص المدخلات مقابل Not-a-Number (NAN) ، في ملف
مصلحة الأداء.
مينلاين- PLT
تمكين تضمين إدخالات PLT في استدعاءات الوظائف للوظائف غير المعروفة
ربط محليا. ليس له تأثير بدون -mfdpic.
-متعدد النواة
أنشئ تطبيقًا قائمًا بذاته لمعالجات Blackfin متعددة النواة. هذا الخيار يسبب
ملفات البدء المناسبة ونصوص الارتباط التي تدعم استخدام متعدد النواة ، وتحدد
ماكرو "__BFIN_MULTICORE". يمكن استخدامه فقط مع -mcpu = bf561[-com.sirevision].
يمكن استخدام هذا الخيار مع -مكوريا or -موقع ب، والذي يحدد التطبيق الواحد-
نموذج البرمجة لكل مركز. بدون -مكوريا or -موقع بأطلقت حملة
يتم استخدام نموذج برمجة أحادي التطبيق / ثنائي النواة. في هذا النموذج الرئيسي
يجب تسمية وظيفة Core B باسم "coreb_main".
إذا لم يتم استخدام هذا الخيار ، فسيتم استخدام نموذج برمجة التطبيق أحادي المركز.
-مكوريا
قم بإنشاء تطبيق مستقل لـ Core A من BF561 عند استخدام التطبيق الواحد لكل
نموذج البرمجة الأساسية. يتم استخدام ملفات البدء المناسبة ونصوص الارتباط لدعم Core
A ، ويتم تعريف الماكرو "__BFIN_COREA". لا يمكن استخدام هذا الخيار إلا في ملفات
مرتبط ب -متعدد النواة.
-موقع ب
قم بإنشاء تطبيق مستقل لـ Core B من BF561 عند استخدام التطبيق الواحد لكل
نموذج البرمجة الأساسية. يتم استخدام ملفات البدء المناسبة ونصوص الارتباط لدعم Core
B ، ويتم تعريف الماكرو "__BFIN_COREB". عند استخدام هذا الخيار ، "coreb_main"
يجب استخدامه بدلاً من "الرئيسي". لا يمكن استخدام هذا الخيار إلا مع ملفات
-متعدد النواة.
-msdram
إنشاء تطبيق مستقل لـ SDRAM. يتم استخدام ملفات البدء المناسبة والبرامج النصية للارتباط
لوضع التطبيق في SDRAM ، ويتم تعريف الماكرو "__BFIN_SDRAM". ال
يجب على المُحمل تهيئة SDRAM قبل تحميل التطبيق.
-micplb
افترض أنه تم تمكين ICPLBs في وقت التشغيل. هذا له تأثير على شذوذ معين
الحلول. بالنسبة لأهداف Linux ، يكون الافتراض هو افتراض تمكين ICPLBs ؛ ل
التطبيقات المستقلة الافتراضي هو إيقاف التشغيل.
C6X مزيد من الخيارات
- مسيرة =الاسم
هذا يحدد اسم العمارة الهدف. يستخدم GCC هذا الاسم لتحديد
ما نوع التعليمات التي يمكن أن تصدرها عند إنشاء رمز التجميع. مسموح
الأسماء هي: c62x, c64x, c64x +, c67x, c67x +, c674x.
-mbig-endian
إنشاء رمز لهدف كبير.
-ملل-endian
قم بإنشاء رمز لهدف صغير. هذا هو الافتراضي.
-مسيم
اختر ملفات بدء التشغيل ونص رابط مناسب لجهاز المحاكاة.
-msdata = افتراضي
ضع البيانات العالمية والثابتة الصغيرة في قسم ".neardata" ، الذي يشار إليه بواسطة
سجل "B14". ضع بيانات عالمية وثابتة صغيرة غير مهيأة في قسم ".bss" ،
والمجاور لقسم ".neardata". ضع بيانات صغيرة للقراءة فقط في ملف
قسم ".rodata". الأقسام المقابلة المستخدمة لأجزاء كبيرة من البيانات هي
".fardata" و ".far" و ".const".
-msdata = الكل
ضع كل البيانات ، وليس الأشياء الصغيرة فقط ، في الأقسام المخصصة للبيانات الصغيرة ، و
استخدام العنونة المتعلقة بتسجيل "B14" للوصول إليها.
-msdata = لا شيء
لا تستخدم الأقسام المخصصة للبيانات الصغيرة ، واستخدم العناوين المطلقة لـ
الوصول إلى كافة البيانات. ضع جميع البيانات العالمية والثابتة التي تمت تهيئتها في ملف ".fardata"
وجميع البيانات غير المهيأة في قسم ".far". ضع كل البيانات الثابتة في
قسم ".const".
CRIS مزيد من الخيارات
تم تحديد هذه الخيارات خصيصًا لمنافذ CRIS.
- مسيرة =نوع العمارة
-mcpu =نوع العمارة
توليد رمز للعمارة المحددة. اختيارات نوع العمارة .
v3, v8 v10 لـ ETRAX 4 و ETRAX 100 و ETRAX 100 LX على التوالي. الافتراضي هو v0
باستثناء cris-axis-linux-gnu ، حيث يكون الافتراضي هو v10.
-mtune =نوع العمارة
ضبط ل نوع العمارة كل ما ينطبق على الكود الذي تم إنشاؤه ، باستثناء
ABI ومجموعة التعليمات المتاحة. اختيارات نوع العمارة .
نفس الشيء بالنسبة ل - مسيرة =نوع العمارة.
-mmax-stack-frame =n
تحذير عندما يتجاوز إطار المكدس لوظيفة ما n بايت.
-متراكس 4
-متراكس 100
الخيارات -متراكس 4 -متراكس 100 مرادفات ل - مسيرة = v3 - مسيرة = v8
على التوالي.
-mmul علة الحل
-mno-mul-bug-الحل البديل
قم بالتغلب على خطأ في تعليمات "muls" و "mulu" لنماذج وحدة المعالجة المركزية حيث توجد
ينطبق. هذا الخيار نشط بشكل افتراضي.
-mpdebug
تمكين المعلومات المتعلقة بالتصحيح المطول الخاصة بـ CRIS في رمز التجميع. هذه
الخيار له أيضًا تأثير إيقاف تشغيل # NO_APP مؤشر رمز منسق إلى
المجمع في بداية ملف التجميع.
-mcc- الحرف الأول
لا تستخدم نتائج كود الشرط من التعليمات السابقة ؛ تنبعث منه دائمًا مقارنة و
تعليمات الاختبار قبل استخدام رموز الحالة.
- عدم الآثار الجانبية
لا تصدر تعليمات ذات آثار جانبية في أوضاع المعالجة بخلاف ما بعد-
زيادة راتب.
-مكدس- محاذاة
-رقم-المكدس- محاذاة
محاذاة البيانات
-لا-محاذاة البيانات
-mconst- محاذاة
-منو-كونست-محاذاة
هذه الخيارات (الجوى خيارات) ترتيب (استبعاد الترتيبات) لإطار المكدس ،
يجب محاذاة البيانات الفردية والثوابت من أجل الحد الأقصى لحجم الوصول إلى البيانات الفردية
لنموذج وحدة المعالجة المركزية المختار. الإعداد الافتراضي هو الترتيب لمحاذاة 32 بت. ABI
تفاصيل مثل تخطيط الهيكل لا تتأثر بهذه الخيارات.
-m32 بت
-m16 بت
-m8 بت
على غرار خيارات المكدس- البيانات- والمحاذاة الثابتة أعلاه ، يتم ترتيب هذه الخيارات لـ
إطار المكدس والبيانات القابلة للكتابة والثوابت لتكون جميعها بمحاذاة 32 بت أو 16 بت أو 8 بت.
الافتراضي هو محاذاة 32 بت.
-من-مقدمة-الخاتمة
-مبرولوج-خاتمة
بدافع -من-مقدمة-الخاتمة، مقدمة الوظيفة العادية والخاتمة التي تم إنشاؤها
تم حذف إطار المكدس ولا توجد تعليمات إرجاع أو تسلسلات إرجاع
ولدت في الكود. استخدم هذا الخيار فقط مع الفحص البصري لـ
الشفرة المترجمة: لا يتم إنشاء أي تحذيرات أو أخطاء عندما يجب أن تكون السجلات المحفوظة في المكالمة
المحفوظة ، أو يجب تخصيص تخزين للمتغيرات المحلية.
-منو-جوتبلت
-mgotplt
بدافع -fpic -fPIC، لا تنشئ (تولد) تسلسلات التعليمات التي يتم تحميلها
عناوين للوظائف من جزء PLT من GOT بدلاً من (تقليدي على الآخر
معماريات) مكالمات إلى PLT. الافتراضي هو -mgotplt.
-نفس
يتم التعرف على خيار عدم التشغيل القديم فقط باستخدام cris-axis-elf و cris-axis-linux-gnu
أهداف.
-ملينكس
يتم التعرف على خيار عدم التشغيل القديم فقط مع هدف cris-axis-linux-gnu.
-سم
يرتب هذا الخيار ، المعترف به لمحور cris-elf ، للربط مع المدخلات والمخرجات
وظائف من مكتبة محاكاة. التعليمات البرمجية والبيانات التي تمت تهيئتها والبيانات الصفرية التهيئة
يتم تخصيصها على التوالي.
-سم 2
اعجاب -سم، ولكن قم بتمرير خيارات الرابط لتحديد موقع البيانات التي تمت تهيئتها عند 0x40000000 وصفر-
تمت تهيئة البيانات على 0x80000000.
CR16 مزيد من الخيارات
تم تحديد هذه الخيارات خصيصًا لمنافذ CR16.
-مماك
تمكين استخدام تعليمات الضرب والتراكم. معطل بشكل افتراضي.
-mcr16cplus
-مكر 16 ج
قم بإنشاء رمز لبنية CR16C أو CR16C +. بنية CR16C + هي الإعداد الافتراضي.
-مسيم
يربط مكتبة libsim.a المتوافقة مع المحاكاة. ينطبق على ELF
مترجم فقط.
النعناع 32
اختر نوع عدد صحيح بعرض 32 بت.
-مبيت العمليات
يولد تعليمات "sbit" / "cbit" لمعالجة البتات.
- نموذج البيانات =نموذج
اختر نموذج البيانات. اختيارات نموذج . قرب, بعيدا or متوسط. متوسط هو الافتراضي.
ومع ذلك، بعيدا غير صالح مع -مكر 16 ج، نظرًا لأن بنية CR16C لا تدعم تنسيق
نموذج البيانات البعيدة.
داروين مزيد من الخيارات
يتم تحديد هذه الخيارات لجميع البنى التي تقوم بتشغيل نظام تشغيل داروين.
FSF GCC على داروين لا تنشئ ملفات كائن "fat" ؛ يقوم بإنشاء ملف كائن لـ
بنية واحدة تم تصميم دول مجلس التعاون الخليجي لاستهدافها. دول مجلس التعاون الخليجي لشركة أبل على داروين تخلق "الدهون"
الملفات إذا كانت متعددة -قوس يتم استخدام الخيارات ؛ يقوم بذلك عن طريق تشغيل المترجم أو الرابط
عدة مرات والانضمام إلى النتائج معًا ليبو.
النوع الفرعي للملف الذي تم إنشاؤه (مثل ppc7400 or ppc970 or i686) بواسطة
العلامات التي تحدد ISA التي تستهدفها دول مجلس التعاون الخليجي ، مثل - وحدة المعالجة المركزية or -مارس.
-فرض_cpusubtype_ALL يمكن استخدام الخيار لتجاوز هذا.
تختلف أدوات داروين في سلوكها عند تقديمها مع عدم تطابق ISA. ال
المجمع as، يسمح فقط باستخدام التعليمات الصالحة للنوع الفرعي من
الملف الذي يتم إنشاؤه ، لذلك لا يمكنك وضع إرشادات 64 بت في ملف ppc750 ملف الكائن. ال
رابط للمكتبات المشتركة ، / usr / bin / libtool، يفشل ويطبع خطأ إذا طُلب منه ذلك
إنشاء مكتبة مشتركة بنوع فرعي أقل تقييدًا من ملفات الإدخال (لـ
على سبيل المثال ، في محاولة لوضع ppc970 ملف الكائن في ملف ppc7400 مكتبة). رابط ل
الملفات التنفيذية ld، يعطي الملف القابل للتنفيذ بهدوء النوع الفرعي الأكثر تقييدًا من أيٍّ من ملفاته
ملفات الإدخال.
-Fدير
أضف دليل إطار العمل دير إلى رأس قائمة الدلائل التي سيتم البحث فيها
لملفات الرأس. هذه الدلائل متداخلة مع تلك المحددة بواسطة -I
الخيارات ويتم فحصها بترتيب من اليسار إلى اليمين.
دليل إطار العمل هو دليل به أطر عمل. الإطار هو
الدليل مع ملف رؤوس و / أو الرؤساء الخاصين الدليل الوارد مباشرة في ذلك
ينتهي في .إطار العمل. اسم إطار العمل هو اسم هذا الدليل باستثناء
ال .إطار العمل. تم العثور على الرؤوس المرتبطة بإطار العمل في أحد هذين
الدلائل مع رؤوس يجري البحث عنها أولا. الإطار الفرعي هو إطار عمل
الدليل الموجود في إطار عمل أُطر الأعمال الدليل. يشتمل على إطار فرعي
يمكن أن تظهر الرؤوس فقط في رأس إطار عمل يحتوي على إطار عمل فرعي ، أو
في رأس إطار فرعي للأشقاء. إطاران فرعيان هما أشقاء إذا حدثت في
نفس الإطار. يجب ألا يكون للإطار الفرعي نفس اسم إطار العمل ؛ أ
يتم إصدار تحذير إذا تم انتهاك هذا. حاليا لا يمكن أن يحتوي إطار فرعي
أطر فرعية. في المستقبل ، قد يتم تمديد الآلية لدعم هذا. ال
يمكن العثور على الأطر القياسية في / نظام / المكتبة / أطر
/ المكتبة / أطر. مثال يتضمن يبدو مثل "#include "،
أين الإطار يشير إلى اسم الإطار و رأس. h موجود في
الرؤساء الخاصين or رؤوس الدليل.
-الإطاردير
اعجاب -F فيما عدا الدليل الذي يتم التعامل معه كدليل نظام. الاختلاف الرئيسي
بين هذا -الإطار -F هل هذا مع -الإطار المترجم لا يحذر
حول التركيبات المضمنة في ملفات الرأس التي تم العثور عليها عبر دير. هذا الخيار صالح
فقط لعائلة اللغات C.
-تناول
تنبعث معلومات تصحيح الأخطاء للرموز المستخدمة. لتنسيق تصحيح الطعنات ،
وهذا يتيح -تصحيح-غير مستخدمة-رموز تصحيح. يكون هذا افتراضيًا في وضع التشغيل.
-gfull
تنبعث معلومات تصحيح الأخطاء لجميع الرموز والأنواع.
-mmacosx-version-min =الإصدار
الإصدار الأول من MacOS X الذي سيعمل عليه هذا الملف القابل للتنفيذ هو الإصدار. نموذجي
قيم الإصدار تشمل 10.1 و 10.2 و 10.3.9.
إذا تم إنشاء المترجم لاستخدام رؤوس النظام افتراضيًا ، فسيكون الإعداد الافتراضي لـ
هذا الخيار هو إصدار النظام الذي يعمل عليه المترجم ، وإلا فإن
الافتراضي هو اتخاذ خيارات متوافقة مع العديد من الأنظمة وقواعد التعليمات البرمجية مثل
ممكن.
-مكرنيل
تفعيل وضع تطوير النواة. ال -مكرنيل مجموعات الخيارات -ثابتة, -fno- مشترك,
-fno-استخدام-cxa-atexit, -لا-الاستثناءات, -fno-non-call-الاستثناءات, -فابل-ككست,
- ضعيف -فنو- rtti حيثما ينطبق ذلك. يحدد هذا الوضع أيضًا -منو-التيفيك,
-مسنة- تعويم, -fno- بنيت -متفرع- طويل لأهداف PowerPC.
-عوني-بايت- منطقي
تجاوز القيم الافتراضية لـ "منطقي" بحيث "sizeof (منطقي) == 1". بشكل افتراضي "sizeof (منطقي)"
هي 4 عند التحويل البرمجي لـ Darwin / PowerPC و 1 عند التحويل البرمجي لـ Darwin / x86 ، لذلك هذا
الخيار ليس له تأثير على x86.
: تحذير تشير -عوني-بايت- منطقي يؤدي التبديل إلى GCC لإنشاء رمز غير ثنائي
متوافق مع الكود الذي تم إنشاؤه بدون هذا المفتاح. قد يتطلب استخدام رمز التبديل هذا
إعادة تجميع كافة الوحدات النمطية الأخرى في البرنامج ، بما في ذلك مكتبات النظام. استخدم هذا
التبديل للتوافق مع نموذج بيانات غير افتراضي.
إصلاح ومتابعة
-إضافة ومتابعة
- بيانات غير مباشرة
قم بإنشاء رمز مناسب للتطوير السريع ، مثل السماح لـ GDB بذلك
ديناميكيًا .o الملفات في البرامج قيد التشغيل بالفعل. - بيانات غير مباشرة
-إضافة ومتابعة يتم توفيرها للتوافق مع الإصدارات السابقة.
-جميع_حمولة
تحميل كافة أعضاء مكتبات الأرشيف الثابتة. انظر يا رجل ld(1) لمزيد من المعلومات.
- أخطاء_ميتة
تسبب في أن تكون الأخطاء المتعلقة بالملفات ذات البنية الخاطئة قاتلة.
-ربط_at_load
يتسبب في وضع علامة على ملف الإخراج بحيث يقوم الرابط الديناميكي بربط الكل
مراجع غير محددة عند تحميل الملف أو تشغيله.
-حزمة
قم بإنشاء ملف تنسيق حزمة Mach-o. انظر يا رجل ld(1) لمزيد من المعلومات.
-محمل_حزمة تنفيذ
يحدد هذا الخيار ملف تنفيذ من شأنها تحميل ملف الإخراج البناء
مرتبط. انظر يا رجل ld(1) لمزيد من المعلومات.
-ديناميكليب
عند تمرير هذا الخيار ، ينتج GCC مكتبة ديناميكية بدلاً من ملف قابل للتنفيذ عندما
ربط باستخدام داروين libtool أمر.
-فرض_cpusubtype_ALL
يؤدي هذا إلى احتواء ملف الإخراج الخاص بـ GCC على الامتداد الجميع نوع فرعي ، بدلاً من واحد يتحكم فيه
ال - وحدة المعالجة المركزية or -مارس الخيار.
-العميل المسموح به اسم العميل
-اسم العميل
- التوافق_الإصدار
-النسخة الحالية
-تفصل_الخط
- ملف الاعتماد
-dylib_file
-dylinker_install_name
-ديناميكي
-قائمة_الرموز_المصدرة
-قائمة الملفات
-flat_namespace
-Force_flat_namespace
-headerpad_max_install_names
-صورة_قاعدة
-فيه
-اسم_التثبيت
-صيانة_خاصة_الخارج
-متعدد الوحدات
-تضاعف_تعرّف
-تضاعف_تعرف_غير مستخدمة
- noall_load
-لا_قطع_خط_الخطوات_المصطلحات
-Nofixprebinding
-اسم التعريف
-نوبريبيند
-noseglink تصحيح
-pagezero_size
-الخلاصة
-prebind_all_twolevel_modules
-حزمة_خاصة
- قراءة_ فقط_المحرر
-المستقيم
-رموز الكائنات
-لماذا
-seg1addr
- الطائفة
-رموز الكائنات
-قطاعية
-سجادر
-segs_read_only_addr
-segs_read_write_addr
-seg_addr_table
-seg_addr_table_filename
-الرابط
-درس
-segs_read_only_addr
-segs_read_write_addr
-وحدة_وحدة
-ثابتة
-المكتبة الفرعية
-مظلة فرعية
-wolevel_namespace
-مظلة
-غير معرف
-قائمة_الرموز_غير المُصدرة
- ضعف_المرجعية_التطابقات
- ما تم تحميله
يتم تمرير هذه الخيارات إلى رابط داروين. تصف صفحة رجل رابط داروين
لهم بالتفصيل.
ديسمبر ألفا مزيد من الخيارات
تشبه -m يتم تحديد الخيارات لتطبيقات DEC Alpha:
-من-لينة-تعويم
-مسنة- تعويم
استخدم (لا تستخدم) تعليمات الأجهزة العائمة للفاصلة العائمة
عمليات. متي -مسنة- تعويم محدد ، وظائف في libgcc.a تستخدم لأداء
عمليات الفاصلة العائمة. ما لم يتم استبدالها بالإجراءات الروتينية التي تحاكي
عمليات الفاصلة العائمة ، أو يتم تجميعها بطريقة تسمح باستدعاء مثل هذه المحاكاة
الروتينية ، هذه الإجراءات تصدر عمليات الفاصلة العائمة. إذا كنت تقوم بالتجميع من أجل
ألفا بدون عمليات الفاصلة العائمة ، يجب التأكد من بناء المكتبة
حتى لا ندعوهم.
لاحظ أن تطبيقات Alpha بدون عمليات الفاصلة العائمة مطلوبة
تسجيلات الفاصلة العائمة.
-mfp- ريج
-منو- fp- ريجس
توليد التعليمات البرمجية التي تستخدم (لا تستخدم) مجموعة تسجيل الفاصلة العائمة. -منو- fp- ريجس
يدل -مسنة- تعويم. إذا لم يتم استخدام مجموعة تسجيل الفاصلة العائمة ، فإن النقطة العائمة
يتم تمرير المعاملات في سجلات أعداد صحيحة كما لو كانت أعدادًا صحيحة ونقطة عائمة
تم تمرير النتائج في $ 0 بدلاً من $ f0. هذا هو تسلسل استدعاء غير قياسي ، لذلك
أي دالة ذات وسيطة فاصلة عائمة أو قيمة إرجاع تسمى بواسطة رمز تم تجميعه
مع -منو- fp- ريجس يجب أيضًا تجميعها باستخدام هذا الخيار.
الاستخدام النموذجي لهذا الخيار هو بناء نواة لا تستخدم ، وبالتالي تحتاج
عدم حفظ واستعادة أي سجلات للفاصلة العائمة.
-مييي
تنفذ بنية Alpha أجهزة الفاصلة العائمة المحسّنة للحد الأقصى
أداء. إنه متوافق في الغالب مع معيار النقطة العائمة IEEE. لكن،
للامتثال الكامل ، مطلوب مساعدة البرامج. هذا الخيار يولد رمز
كود متوافق تمامًا مع IEEE إلا أن علم غير دقيق لا يتم الحفاظ عليها (انظر أدناه).
إذا تم تشغيل هذا الخيار ، يتم تحديد ماكرو المعالج الأولي "_IEEE_FP" أثناء
التحويل البرمجي. الكود الناتج أقل كفاءة ولكنه قادر على دعمه بشكل صحيح
الأرقام غير المنسقة وقيم IEEE الاستثنائية مثل ليس رقمًا وعلامة زائد / ناقص
ما لا نهاية. المترجمون ألفا الآخرون يسمون هذا الخيار -ieee_with_no_inexact.
-مي-مع-غير دقيق
هذا مثل -مييي باستثناء الكود الذي تم إنشاؤه يحتفظ أيضًا بـ IEEE علم غير دقيق.
يؤدي تشغيل هذا الخيار إلى قيام الكود الذي تم إنشاؤه بتنفيذ IEEE المتوافق تمامًا
الرياضيات. بالإضافة إلى "_IEEE_FP" ، يتم تعريف "_IEEE_FP_EXACT" على أنه ماكرو معالج مسبق.
في بعض تطبيقات Alpha ، قد يتم تنفيذ الكود الناتج بشكل أبطأ من
الرمز الذي تم إنشاؤه افتراضيًا. نظرًا لوجود القليل جدًا من التعليمات البرمجية التي تعتمد على ملف
علم غير دقيق، يجب عادة عدم تحديد هذا الخيار. المترجمون ألفا الأخرى استدعاء
هذا الخيار -ieee_inexact.
-mfp-trap-mode =وضع فخ
يتحكم هذا الخيار في تحديد الملائمة ذات الصلة بالنقطة العائمة التي يتم تمكينها. ألفا أخرى
المترجمون يسمون هذا الخيار -fptm وضع فخ. يمكن ضبط وضع الملاءمة على واحد من أربعة
القيم:
n هذا هو الإعداد الافتراضي (العادي). الاعتراضات الوحيدة التي تم تمكينها هي
تلك التي لا يمكن تعطيلها في البرامج (على سبيل المثال ، القسمة على مصيدة صفرية).
u بالإضافة إلى الفخاخ التي تم تمكينها بواسطة n، يتم أيضًا تمكين اعتراض التدفق السفلي.
su اعجاب u، ولكن تم وضع علامة على التعليمات لتكون آمنة لإكمال البرنامج (انظر
دليل معمارية ألفا لمزيد من التفاصيل).
فريد اعجاب su، ولكن يتم أيضًا تمكين المصائد غير الدقيقة.
-وضع التقريب mfp =وضع التقريب
يحدد وضع التقريب IEEE. المترجمون ألفا الآخرون يسمون هذا الخيار -fprm
وضع التقريب. وضع التقريب يمكن أن يكون أحد:
n وضع تقريب IEEE العادي. يتم تقريب أرقام الفاصلة العائمة باتجاه أقرب
رقم الجهاز أو باتجاه رقم الجهاز الزوجي في حالة التعادل.
m جولة نحو سالب ما لا نهاية.
c وضع التقريب المفروم. يتم تقريب أرقام الفاصلة العائمة باتجاه الصفر.
d وضع التقريب الديناميكي. حقل في سجل تحكم الفاصلة العائمة (fpcr، انظر
دليل مرجعي لهندسة ألفا) يتحكم في وضع التقريب ساري المفعول. سي
مكتبة تهيئ هذا السجل للتقريب نحو زائد اللانهاية. هكذا،
ما لم يعدل البرنامج الخاص بك fpcr, d يتوافق مع الجولة نحو زائد
ما لا نهاية.
الدقة - mtrap =دقة فخ
في معمارية ألفا ، فخاخ النقطة العائمة غير دقيقة. هذا يعني بدون
برنامج المساعدة من المستحيل الاسترداد من برنامج فخ عائم
يحتاج التنفيذ عادة إلى الإنهاء. يمكن لـ GCC إنشاء رمز يمكن أن يساعد
معالجات اعتراض نظام التشغيل في تحديد الموقع الدقيق الذي تسبب في
فخ النقطة العائمة. اعتمادا على متطلبات التطبيق ، مختلفة
يمكن تحديد مستويات الدقة:
p دقة البرنامج. هذا الخيار هو الخيار الافتراضي ويعني أن معالج الملاءمة يمكنه فقط
تحديد البرنامج الذي تسبب في استثناء النقطة العائمة.
f دقة الوظيفة. يمكن لمعالج الملاءمة تحديد الوظيفة التي تسببت في ملف
استثناء النقطة العائمة.
i دقة التعليمات. يمكن لمعالج المصيدة تحديد التعليمات الدقيقة التي
تسبب في استثناء النقطة العائمة.
توفر برامج التحويل البرمجي لـ Alpha الأخرى الخيارات المكافئة التي تسمى -النطاق_الآمن
-الاستثمار_أمن.
-mieee- المطابقة
يقوم هذا الخيار بتمييز الكود المُنشأ على أنه متوافق مع IEEE. يجب ألا تستخدم هذا الخيار
ما لم تحدد أيضًا -دقة فخ = أنا وإما -mfp-trap-mode = su or
-mfp-trap-mode = sui. تأثيره الوحيد هو انبعاث الخط .العلم 48 في الوظيفة
مقدمة من ملف التجميع الذي تم إنشاؤه.
- بناء الثوابت
عادةً ما يفحص GCC ثابت عدد صحيح 32 أو 64 بت لمعرفة ما إذا كان يمكنه بنائه
من الثوابت الأصغر في تعليمتين أو ثلاثة. إذا لم يستطع ، فإنه يقوم بإخراج ملف
ثابت كحرف ويقوم بإنشاء رمز لتحميله من مقطع البيانات في وقت التشغيل.
استخدم هذا الخيار لطلب إنشاء GCC الكل ثوابت عدد صحيح باستخدام رمز ، حتى لو
يتطلب الأمر مزيدًا من التعليمات (الحد الأقصى هو ستة).
عادةً ما تستخدم هذا الخيار لإنشاء محمل ديناميكي للمكتبة المشتركة. نفسها أ
مكتبة مشتركة ، يجب أن تنتقل إلى الذاكرة قبل أن تتمكن من العثور على المتغيرات و
الثوابت في مقطع البيانات الخاص بها.
-mbwx
-منو- bwx
-mcix
-منو سيكس
-إصلاح
-من الإصلاح
-ماكس
-منو ماكس
حدد ما إذا كان يجب على GCC إنشاء رمز لاستخدام BWX و CIX و FIX و MAX الاختيارية
مجموعات التعليمات. الافتراضي هو استخدام مجموعات التعليمات التي تدعمها وحدة المعالجة المركزية
النوع المحدد عبر -mcpu = الخيار أو ذلك الخاص بوحدة المعالجة المركزية التي تم إنشاء GCC عليها إذا لم يتم إنشاء أي منها
محدد.
- طفو - vax
-طوف- ieee
قم بإنشاء التعليمات البرمجية التي تستخدم (لا تستخدم) حساب الفاصلة العائمة VAX F و G بدلاً من ذلك
من IEEE دقة مفردة ومزدوجة.
-صريحة-ريوكس
-منو-صريح-ريلوكس
لم توفر مجمعات Alpha القديمة أي طريقة لإنشاء عمليات نقل الرموز إلا عبر
وحدات الماكرو المجمّع. لا يسمح استخدام وحدات الماكرو هذه بجدولة التعليمات المثلى.
تدعم حاويات GNU اعتبارًا من الإصدار 2.12 صيغة جديدة تسمح للمترجم
وضع علامة صريحة على عمليات إعادة التوطين التي يجب أن تنطبق عليها التعليمات. هذا الخيار هو
غالبًا ما يكون مفيدًا لتصحيح الأخطاء ، حيث يكتشف مجلس التعاون الخليجي قدرات المجمع عند ذلك
تم بناؤه ويقوم بتعيين الإعداد الافتراضي وفقًا لذلك.
بيانات صغيرة
- بيانات كبيرة
متى -صريحة-ريوكس سارية ، يتم الوصول إلى البيانات الثابتة عبر المعدل النسبي
الترحيلات. متي بيانات صغيرة مستخدمًا ، يتم وضع الكائنات التي يبلغ طولها 8 بايت أو أصغر
a صغير البيانات منطقة (أقسام ".sdata" و ".sbss") ويتم الوصول إليها عبر 16 بت
عمليات النقل من سجل gp $. هذا يحد من حجم منطقة البيانات الصغيرة إلى
64 كيلو بايت ، ولكنه يسمح بالوصول إلى المتغيرات مباشرة عبر تعليمات واحدة.
الافتراضي هو - بيانات كبيرة. باستخدام هذا الخيار ، تقتصر منطقة البيانات على أدناه
2 جيجا بايت. يجب أن تستخدم البرامج التي تتطلب أكثر من 2 غيغابايت من البيانات "malloc" أو "mmap"
تخصيص البيانات في الكومة بدلاً من مقطع بيانات البرنامج.
عند إنشاء رمز للمكتبات المشتركة ، -fpic يدل بيانات صغيرة -fPIC
يدل - بيانات كبيرة.
نص صغير
-تكبير النص
متى نص صغير يفترض المترجم أن رمز البرنامج بأكمله
(أو مكتبة مشتركة) يتسع لـ 4 ميغا بايت ، وبالتالي يمكن الوصول إليها من خلال تعليمات الفرع.
متى بيانات صغيرة ، يمكن للمجمع أن يفترض أن جميع الرموز المحلية تشترك في
قيمة gp $ نفسها ، وبالتالي تقليل عدد التعليمات المطلوبة لوظيفة ما
اتصل من 4 إلى 1.
الافتراضي هو -تكبير النص.
-mcpu =نوع_ وحدة المعالجة المركزية
اضبط مجموعة التعليمات ومعلمات جدولة التعليمات لنوع الماكينة
نوع_ وحدة المعالجة المركزية. يمكنك تحديد إما EV اسم النمط أو رقم الشريحة المقابل.
يدعم مجلس التعاون الخليجي معلمات الجدولة لعائلة المعالجات EV4 و EV5 و EV6 و
يختار القيم الافتراضية لمجموعة التعليمات من المعالج الذي تحدده. لو
لم تحدد نوع المعالج ، فإن الإعدادات الافتراضية لدول مجلس التعاون الخليجي هي المعالج الذي يعمل
تم بناء المترجم.
القيم المدعومة لـ نوع_ وحدة المعالجة المركزية .
ev4
ev45
21064
تعمل بجدولتها باعتبارها EV4 وليس لها امتدادات مجموعة التعليمات.
ev5
21164
تعمل بجدولتها باعتبارها EV5 وليس لها امتدادات مجموعة التعليمات.
ev56
21164a
يعمل بجدولته باعتباره EV5 ويدعم امتداد BWX.
PCA56
21164pc
21164PC
تعمل بجدولة EV5 وتدعم امتداد BWX و MAX.
ev6
21264
يتم الجدولة على شكل EV6 وتدعم امتدادات BWX و FIX و MAX.
ev67
21264a
تعمل بجدولة EV6 وتدعم امتدادات BWX و CIX و FIX و MAX.
تدعم سلاسل الأدوات الأصلية القيمة أيضًا محليالذي يختار أفضل تصميم معماري
خيار للمعالج المضيف. -mcpu = أصلي ليس له أي تأثير إذا لم يعترف دول مجلس التعاون الخليجي
المعالج.
-mtune =نوع_ وحدة المعالجة المركزية
قم بتعيين معلمات جدولة التعليمات فقط لنوع الجهاز نوع_ وحدة المعالجة المركزية.
لم يتم تغيير مجموعة التعليمات.
تدعم سلاسل الأدوات الأصلية القيمة أيضًا محليالذي يختار أفضل تصميم معماري
خيار للمعالج المضيف. -mtune = أصلي ليس له أي تأثير إذا لم يعترف دول مجلس التعاون الخليجي
المعالج.
-الذاكرة-الكمون =الوقت
يضبط وقت الاستجابة الذي يجب أن يفترضه المجدول لمراجع الذاكرة النموذجية كما يراها
تطبيق. هذا الرقم يعتمد بشكل كبير على أنماط الوصول إلى الذاكرة المستخدمة
حسب التطبيق وحجم ذاكرة التخزين المؤقت الخارجية على الجهاز.
خيارات صالحة لـ الوقت .
عدد
رقم عشري يمثل دورات الساعة.
L1
L2
L3
رئيسي
يحتوي المترجم على تقديرات لعدد دورات الساعة لـ EV4 "النموذجية" و
أجهزة EV5 لمخازن المستوى 1 و 2 و 3 (تسمى أيضًا Dcache و Scache و
Bcache) ، وكذلك الذاكرة الرئيسية. لاحظ أن المستوى 3 صالح فقط مع EV5.
FR30 مزيد من الخيارات
تم تحديد هذه الخيارات خصيصًا لمنفذ FR30.
نموذج صغير
استخدم نموذج مساحة العنوان الصغير. يمكن أن ينتج عن هذا رمز أصغر ، لكنه يفترض
أن جميع القيم والعناوين الرمزية تناسب نطاق 20 بت.
-منو-لسيم
افترض أن دعم وقت التشغيل قد تم توفيره وبالتالي ليست هناك حاجة لتضمين ملف
مكتبة محاكاة (libsim.a) في سطر أوامر الرابط.
ليف مزيد من الخيارات
-mgpr-32
استخدم فقط أول 32 سجلًا للأغراض العامة.
-mgpr-64
استخدم كافة سجلات الأغراض العامة البالغ عددها 64.
-مفبر-32
استخدم فقط أول 32 من سجلات الفاصلة العائمة.
-مفبر-64
استخدم كافة سجلات الفاصلة العائمة البالغ عددها 64.
-مشدد-تعويم
استخدم تعليمات الأجهزة لعمليات الفاصلة العائمة.
-مسنة- تعويم
استخدم إجراءات المكتبة لعمليات الفاصلة العائمة.
-مولوك- سم مكعب
تخصيص سجلات كود الشرط ديناميكيًا.
-مثبت- سم مكعب
لا تحاول تخصيص سجلات كود الشرط ديناميكيًا ، استخدم فقط "icc0" و
"fcc0".
-مدوورد
قم بتغيير ABI لاستخدام أحرف مزدوجة.
-منو- dword
لا تستخدم تعليمات كلمات مزدوجة.
- مزدوج
استخدم تعليمات النقطة العائمة المزدوجة.
-منو-ضعف
لا تستخدم تعليمات النقطة العائمة المزدوجة.
الوسائط
استخدم تعليمات الوسائط.
- وسائل الإعلام
لا تستخدم تعليمات الوسائط.
-مولد
استخدم تعليمات الضرب والجمع والطرح.
-منو مولاد
لا تستخدم تعليمات الضرب والجمع والطرح.
-mfdpic
حدد FDPIC ABI ، الذي يستخدم واصفات الوظائف لتمثيل المؤشرات إلى
المهام. بدون أي خيارات متعلقة بالموافقة المسبقة عن علم / PIE ، فهذا يعني ضمناً -fPIE. مع -fpic or
-fpie، يفترض أن إدخالات GOT والبيانات الصغيرة تقع ضمن نطاق 12 بت من GOT
العنوان الأساسي مع -fPIC or -fPIE، يتم حساب إزاحات GOT بـ 32 بت. مع
bfin-elf الهدف ، هذا الخيار يعني -مسيم.
مينلاين- PLT
تمكين تضمين إدخالات PLT في استدعاءات الوظائف للوظائف غير المعروفة
ربط محليا. ليس له تأثير بدون -mfdpic. يتم تمكينه افتراضيًا إذا كان
تحسين السرعة والتجميع للمكتبات المشتركة (على سبيل المثال ، -fPIC or -fpic)، أو
عندما يكون خيار التحسين مثل -O3 أو أعلى موجود في سطر الأوامر.
-mtls
افترض وجود مقطع TLS كبير عند إنشاء رمز محلي لمؤشر الترابط.
-mtls
لا تفترض وجود مقطع TLS كبير عند إنشاء رمز محلي لمؤشر الترابط.
-mgprel- رو
تفعيل استخدام عمليات نقل "GPREL" في FDPIC ABI للبيانات المعروفة بوجودها في
أقسام للقراءة فقط. يتم تمكينه افتراضيًا ، باستثناء ملفات -fpic or -fpie: على الرغم من
قد يساعد في جعل جدول الأوفست العالمي أصغر حجمًا ، حيث يتم تداول تعليمات واحدة مقابل 1. مع
-fPIC or -fPIE، يتم تداول 3 تعليمات مقابل 4 تعليمات ، يمكن مشاركة أحدها بواسطة عدة أشخاص
الرموز ، ويتجنب الحاجة إلى إدخال GOT للرمز المشار إليه ، لذلك فهو
من المرجح أن يكون فوزًا. إذا لم يكن، -منو- gprel- رو يمكن استخدامها لتعطيله.
-متعدد-مكتبة-الموافقة المسبقة عن علم
الارتباط بمكتبات الموافقة المسبقة عن علم (المكتبة وليس FD). انها ضمنية من قبل -مكتبة- الموافقة المسبقة عن علم، كذلك
كما من قبل -fPIC -fpic بدون -mfdpic. يجب ألا تضطر أبدًا إلى استخدامه بشكل صريح.
-مربوطة- fp
اتبع متطلبات EABI لإنشاء مؤشر إطار دائمًا كلما كان إطار المكدس
مخصص. يتم تمكين هذا الخيار افتراضيًا ويمكن تعطيله باستخدام
-mno- مرتبط- fp.
- مكالمات طويلة
استخدم العنونة غير المباشرة لاستدعاء الوظائف خارج وحدة الترجمة الحالية. هذه
يسمح بوضع الوظائف في أي مكان داخل مساحة العنوان 32 بت.
-مؤشرات- تسميات
حاول محاذاة التسميات بحد 8 بايت عن طريق إدخال NOPs في الحزمة السابقة.
هذا الخيار له تأثير فقط عندما يتم تمكين تعبئة VLIW. إنه لا يخلق جديدًا
الحزم. إنه يضيف فقط NOPs إلى تلك الموجودة.
-مكتبة- الموافقة المسبقة عن علم
إنشاء كود EABI مستقل عن الموضع.
-ماك -4
استخدم فقط السجلات الأربعة الأولى لمراكم الوسائط.
-ماك -8
استخدم جميع سجلات تراكم الوسائط الثمانية.
-حزمة
تعليمات حزمة VLIW.
-لا حزمة
لا تحزم تعليمات VLIW.
-منو- eflags
لا تضع علامة على مفاتيح ABI في e_flags.
-mcond- الخطوة
تفعيل استخدام تعليمات النقل الشرطي (افتراضي).
هذا المفتاح مخصص بشكل أساسي لتصحيح أخطاء المترجم ومن المحتمل إزالته في ملف
الإصدار المستقبلي.
-منو-كوند-موف
قم بتعطيل استخدام تعليمات النقل الشرطي.
هذا المفتاح مخصص بشكل أساسي لتصحيح أخطاء المترجم ومن المحتمل إزالته في ملف
الإصدار المستقبلي.
-mscc
تفعيل استخدام تعليمات المجموعة الشرطية (افتراضي).
هذا المفتاح مخصص بشكل أساسي لتصحيح أخطاء المترجم ومن المحتمل إزالته في ملف
الإصدار المستقبلي.
-منو- مجلس التعاون الجمركي
تعطيل استخدام تعليمات المجموعة الشرطية.
هذا المفتاح مخصص بشكل أساسي لتصحيح أخطاء المترجم ومن المحتمل إزالته في ملف
الإصدار المستقبلي.
-mcond-exec
تفعيل استخدام التنفيذ الشرطي (افتراضي).
هذا المفتاح مخصص بشكل أساسي لتصحيح أخطاء المترجم ومن المحتمل إزالته في ملف
الإصدار المستقبلي.
-منو كوند-إكسيك
قم بتعطيل استخدام التنفيذ المشروط.
هذا المفتاح مخصص بشكل أساسي لتصحيح أخطاء المترجم ومن المحتمل إزالته في ملف
الإصدار المستقبلي.
-مفلو-فرع
قم بتشغيل تمرير لحزم الفروع في تعليمات VLIW (افتراضي).
هذا المفتاح مخصص بشكل أساسي لتصحيح أخطاء المترجم ومن المحتمل إزالته في ملف
الإصدار المستقبلي.
-منو-فليو-فرع
لا تقم بتشغيل تصريح لتعبئة الفروع في تعليمات VLIW.
هذا المفتاح مخصص بشكل أساسي لتصحيح أخطاء المترجم ومن المحتمل إزالته في ملف
الإصدار المستقبلي.
-متعدد الشروط التنفيذية
تفعيل تحسين "&&" و "||" في التنفيذ المشروط (افتراضي).
هذا المفتاح مخصص بشكل أساسي لتصحيح أخطاء المترجم ومن المحتمل إزالته في ملف
الإصدار المستقبلي.
-منو متعدد-كوند-إكسيك
تعطيل تحسين "&&" و "||" في التنفيذ المشروط.
هذا المفتاح مخصص بشكل أساسي لتصحيح أخطاء المترجم ومن المحتمل إزالته في ملف
الإصدار المستقبلي.
-مختلط- cond-exec
تفعيل تحسينات التنفيذ الشرطي المتداخلة (افتراضي).
هذا المفتاح مخصص بشكل أساسي لتصحيح أخطاء المترجم ومن المحتمل إزالته في ملف
الإصدار المستقبلي.
-رقم-متداخل- cond-exec
تعطيل تحسينات التنفيذ الشرطي المتداخلة.
هذا المفتاح مخصص بشكل أساسي لتصحيح أخطاء المترجم ومن المحتمل إزالته في ملف
الإصدار المستقبلي.
- تحسين الغشاء
يزيل رمز التبديل هذا تعليمات "الأغشية" الزائدة عن الحاجة من التعليمات البرمجية التي تم إنشاؤها بواسطة المحول البرمجي.
يتم تمكينه بشكل افتراضي.
-من-أمثل-غشاء
يقوم هذا المفتاح بتعطيل الإزالة التلقائية لتعليمات "الغشاء" الزائدة عن الحاجة من ملف
رمز تم إنشاؤه.
-mtomcat- احصائيات
تسبب الغاز لطباعة إحصائيات القط.
-mcpu =وحدة المعالجة المركزية
حدد نوع المعالج الذي تريد إنشاء رمز له. القيم الممكنة frv, fr550,
هر, fr500, fr450, fr405, fr400, fr300 بسيط.
جنو / لينكس مزيد من الخيارات
تشبه -m تم تحديد الخيارات لأهداف GNU / Linux:
-مجليبك
استخدم مكتبة جنو سي. هذا هو الإعداد الافتراضي باستثناء تشغيل * - * - لينكس- * uclibc *
* - * - لينكس- * أندرويد * أهداف.
-موكليبك
استخدم مكتبة uClibc C. هذا هو الإعداد الافتراضي * - * - لينكس- * uclibc * أهداف.
-مبيونيك
استخدم مكتبة Bionic C. هذا هو الإعداد الافتراضي * - * - لينكس- * أندرويد * أهداف.
-مندرويد
ترجمة التعليمات البرمجية المتوافقة مع نظام Android الأساسي. هذا هو الإعداد الافتراضي
* - * - لينكس- * أندرويد * أهداف.
عند التحويل البرمجي ، يتيح هذا الخيار -مبيونيك, -fPIC, -لا-الاستثناءات -فنو- rtti by
إفتراضي. عند الربط ، يجعل هذا الخيار سائق مجلس التعاون الخليجي يجتاز الخيارات الخاصة بنظام Android
للرابط. أخيرًا ، يتسبب هذا الخيار في أن يكون ماكرو المعالج المسبق "__ANDROID__"
يعرف.
-tno- الروبوت- سم مكعب
تعطيل تأثيرات التجميع من -مندرويد، على سبيل المثال ، لا تمكن -مبيونيك, -fPIC,
-لا-الاستثناءات -فنو- rtti بشكل افتراضي.
-tno-android-ld
تعطيل ربط تأثيرات -مندرويد، على سبيل المثال ، قم بتمرير خيارات ربط Linux القياسية إلى ملف
رابط.
H8 / 300 مزيد من الخيارات
تشبه -m يتم تحديد الخيارات لتطبيقات H8 / 300:
-استراحة
تقصير بعض مراجع العنوان في وقت الارتباط ، عندما يكون ذلك ممكنًا ؛ يستخدم خيار الرابط
-الاسترخاء.
-م.ه قم بإنشاء رمز لـ H8 / 300H.
-الآنسة قم بإنشاء رمز لـ H8S.
مين قم بإنشاء رمز لـ H8S و H8 / 300H في الوضع العادي. يجب استخدام رمز التبديل هذا
إما مع -م.ه or -الآنسة.
-ms2600
قم بإنشاء رمز لـ H8S / 2600. يجب استخدام رمز التبديل هذا مع -الآنسة.
-مكسر
يتم تخزين السجلات الممتدة على المكدس قبل تنفيذ الوظيفة مع الشاشة
ينسب. الخيار الافتراضي هو -مكسر. هذا الخيار صالح فقط لأهداف H8S.
-منو exr
لا يتم تخزين السجلات الممتدة في المكدس قبل تنفيذ الوظيفة مع الشاشة
ينسب. الخيار الافتراضي هو -منو exr. هذا الخيار صالح فقط لأهداف H8S.
النعناع 32
اجعل بيانات "int" 32 بت افتراضيًا.
-ملاجن -300
في H8 / 300H و H8S ، استخدم نفس قواعد المحاذاة الخاصة بالموديل H8 / 300. الافتراضي
بالنسبة إلى H8 / 300H و H8S ، يتم محاذاة المسافات الطويلة والعائمة على حدود 4 بايت.
-ملاجن -300 يتسبب في محاذاتها على حدود 2 بايت. هذا الخيار ليس له تأثير
على H8 / 300.
HPPA مزيد من الخيارات
تشبه -m يتم تحديد الخيارات لعائلة أجهزة الكمبيوتر HPPA:
- مسيرة =نوع العمارة
توليد رمز للعمارة المحددة. اختيارات نوع العمارة .
1.0 لـ PA 1.0 ، 1.1 لـ PA 1.1 و 2.0 لمعالجات PA 2.0. تشير إلى
/usr/lib/sched.models على نظام HP-UX لتحديد خيار البنية المناسبة
لجهازك. تعمل التعليمات البرمجية المجمعة للبنيات ذات الأرقام الأقل على تشغيل أعلى
معماريات مرقمة ، ولكن ليس العكس.
-مبا-ريسك-1-0
-مبا-ريسك-1-1
-مبا-ريسك-2-0
مرادفات ل - مارس = 1.0, - مارس = 1.1و - مارس = 2.0 على التوالي.
- القفز في التأخير
تم تجاهل هذا الخيار وتوفيره لأغراض التوافق فقط.
-تعطيل- fpregs
منع استخدام سجلات الفاصلة العائمة بأي طريقة. هذا ضروري ل
تجميع النواة التي تقوم بتبديل سياق كسول لسجلات الفاصلة العائمة. لو
يمكنك استخدام هذا الخيار ومحاولة تنفيذ عمليات الفاصلة العائمة ، المترجم
يجهض.
-تعطيل-الفهرسة
منع المترجم من استخدام أوضاع عنوان الفهرسة. هذا يتجنب البعض بالأحرى
غامضة عند تجميع رمز MIG الذي تم إنشاؤه ضمن MACH.
-منو-الفضاء-ريجس
قم بإنشاء رمز يفترض أن الهدف لا يحتوي على سجلات مسافة. هذا يسمح لدول مجلس التعاون الخليجي
إنشاء مكالمات غير مباشرة أسرع واستخدام أوضاع عنوان الفهرس غير المقياس.
هذا الرمز مناسب لأنظمة ونواة المستوى 0 PA.
- مكالمات سريعة - غير مباشرة
قم بإنشاء رمز يفترض أن المكالمات لا تتخطى حدود الفضاء أبدًا. هذا يسمح لدول مجلس التعاون الخليجي
ينبعث رمز ينفذ مكالمات غير مباشرة أسرع.
لا يعمل هذا الخيار في وجود مكتبات مشتركة أو وظائف متداخلة.
- المدى الثابت =نطاق التسجيل
إنشاء رمز يعامل نطاق السجل المحدد كسجلات ثابتة. سجل ثابت
هي تلك التي لا يمكن لمخصص السجل استخدامها. هذا مفيد عند تجميع النواة
الشفرة. يتم تحديد نطاق التسجيل كسجلين مفصولة بشرطة. عديد
يمكن تحديد نطاقات التسجيل مفصولة بفاصلة.
-متجر تحميل طويل
قم بإنشاء حمل من 3 تعليمات وتخزين التسلسلات كما هو مطلوب أحيانًا بواسطة HP-UX 10
رابط. هذا يعادل +k خيار لمجمعي HP.
وقت التشغيل
استخدم اصطلاحات الاتصال المحمولة التي اقترحتها HP لأنظمة ELF.
-مغاس
تمكين استخدام توجيهات المجمّع التي يفهمها GAS فقط.
-جدولة =نوع وحدة المعالجة المركزية
جدول الكود وفقًا للقيود الخاصة بنوع الجهاز نوع وحدة المعالجة المركزية. الخيارات
For نوع وحدة المعالجة المركزية . 700 7100, 7100LC, 7200, 7300 8000. تشير إلى
/usr/lib/sched.models على نظام HP-UX لتحديد خيار الجدولة المناسب لـ
جهازك. الجدولة الافتراضية هي 8000.
-mlinker-opt
قم بتمكين مرور التحسين في رابط HP-UX. لاحظ أن هذا يجعل التصحيح الرمزي
مستحيل. كما أنه يتسبب في حدوث خلل في الوصلات HP-UX 8 و HP-UX 9
إعطاء رسائل خطأ وهمية عند ربط بعض البرامج.
-مسنة- تعويم
توليد الناتج يحتوي على المكالمات مكتبة للالنقطة العائمة. : تحذير المطلوب
المكتبات غير متوفرة لجميع أهداف HPPA. عادة ما تكون مرافق
يتم استخدام مترجم C المعتاد للجهاز ، ولكن لا يمكن القيام بذلك بشكل مباشر
التحويل البرمجي. يجب عليك عمل الترتيبات الخاصة بك لتوفير مكتبة مناسبة
وظائف للترجمة المتقاطعة.
-مسنة- تعويم يغير اصطلاح الاستدعاء في ملف الإخراج ؛ لذلك ، فهي فقط
مفيد إذا كنت تقوم بالتجميع الكل من برنامج بهذا الخيار. على وجه الخصوص ، تحتاج إلى
جمع libgcc.a، المكتبة التي تأتي مع دول مجلس التعاون الخليجي ، مع -مسنة- تعويم من أجل هذا
للعمل.
-مسيو
قم بإنشاء المحدد مسبقًا ، "_SIO" ، لخادم IO. الافتراضي هو -موسيو. هذا يولد
المعرفات المسبقة ، "__hp9000s700" ، "__hp9000s700__" و "_WSIO" لمحطة العمل IO.
تتوفر هذه الخيارات ضمن HP-UX و HI-UX.
-مجنو- لد
استخدم الخيارات الخاصة بـ GNU ld. هذا يمر -مشاركة إلى ld عند بناء ملف
مكتبة. هذا هو الإعداد الافتراضي عندما يتم تكوين GCC ، بشكل صريح أو ضمني ، باستخدام
رابط جنو. هذا الخيار لا يؤثر على أي ld يسمى؛ إنه يغير فقط ما
يتم تمرير المعلمات إلى ذلك ld. ld ما يسمى يتم تحديده بواسطة
--مع- لد config ، ومسار بحث برنامج GCC ، وأخيرًا عن طريق المستخدم PATH.
يمكن طباعة الرابط الذي تستخدمه GCC باستخدام التي دول مجلس التعاون الخليجي -طباعة-اسم البرنامج = ld`. هذا
يتوفر الخيار فقط في إصدار 64 بت من HP-UX GCC ، أي تم تكوينه باستخدام
hppa * 64 * - * - hpux *.
-mhp-ld
استخدم الخيارات الخاصة بـ HP ld. هذا يمر -b إلى ld عند بناء مكتبة مشتركة
ويمر + قبول عدم تطابق نوع إلى ld على جميع الروابط. هذا هو الإعداد الافتراضي عندما يكون GCC
تم تكوينه ، بشكل صريح أو ضمني ، باستخدام رابط HP. هذا الخيار لا يؤثر
التي ld يسمى؛ إنه يغير فقط المعلمات التي يتم تمريرها إلى ذلك ld. ld
ما يسمى يتم تحديده بواسطة --مع- لد تكوين الخيار ، برنامج البحث في دول مجلس التعاون الخليجي
المسار ، وأخيرًا بواسطة المستخدم PATH. يمكن طباعة الرابط الذي تستخدمه GCC باستخدام
التي دول مجلس التعاون الخليجي -طباعة-اسم البرنامج = ld`. هذا الخيار متاح فقط في HP-UX 64 بت
دول مجلس التعاون الخليجي ، أي تكوين مع hppa * 64 * - * - hpux *.
- مكالمات طويلة
توليد التعليمات البرمجية التي تستخدم تسلسل المكالمات الطويلة. هذا يضمن أن تكون المكالمة دائمًا قادرة
للوصول بذرة ولدت رابط. الإعداد الافتراضي هو إنشاء مكالمات طويلة فقط عندما يكون ملف
المسافة من موقع الاستدعاء إلى بداية الوظيفة أو وحدة الترجمة ، مثل
قد تكون الحالة ، تتجاوز الحد المحدد مسبقًا الذي تم تعيينه بواسطة نوع الفرع المستخدم. ال
حدود المكالمات العادية هي 7,600,000،240,000،2.0 و XNUMX،XNUMX بايت ، على التوالي لـ PA XNUMX
وبنى PA 1.X. تقتصر عمليات Sibcalls دائمًا على 240,000،XNUMX بايت.
يتم قياس المسافات من بداية الوظائف عند استخدام
- أقسام الوظائف الخيار ، أو عند استخدام ملف -مغاس وقت التشغيل الخيارات
معًا تحت HP-UX مع رابط SOM.
عادة لا يكون من المرغوب فيه استخدام هذا الخيار لأنه يحط من الأداء. لكن،
قد يكون مفيدًا في التطبيقات الكبيرة ، لا سيما عند استخدام الارتباط الجزئي
بناء التطبيق.
تعتمد أنواع المكالمات الطويلة المستخدمة على قدرات المجمّع والرابط ،
ونوع الكود الذي يتم إنشاؤه. التأثير على الأنظمة التي تدعم طويلا
يجب أن تكون المكالمات المطلقة ، وفرق رمز الموافقة المسبقة عن علم طويل أو الاستدعاءات النسبية للكمبيوتر
صغير نسبيًا. ومع ذلك ، يتم استخدام استدعاء غير مباشر على أنظمة ELF 32 بت في كود الموافقة المسبقة عن علم
وهي طويلة جدًا.
-مونكس =يونكس- الأمراض المنقولة جنسيا
قم بإنشاء محددات المترجم مسبقًا وحدد ملف بدء لمعيار UNIX المحدد.
اختيارات يونكس- الأمراض المنقولة جنسيا . 93, 95 98. 93 مدعوم في جميع إصدارات HP-UX.
95 متوفر في HP-UX 10.10 والإصدارات الأحدث. 98 متوفر في HP-UX 11.11 والإصدارات الأحدث.
القيم الافتراضية هي 93 لـ HP-UX 10.00 ، 95 لـ HP-UX 10.10 حتى 11.00 و 98
لـ HP-UX 11.11 والإصدارات الأحدث.
-مونكس = 93 يوفر نفس التعريفات المسبقة مثل GCC 3.3 و 3.4. -مونكس = 95 ويوفر
التعريفات المسبقة الإضافية لـ "XOPEN_UNIX" و "_XOPEN_SOURCE_EXTENDED" ، وملف البداية
unix95.o. -مونكس = 98 يوفر تعريفات إضافية مسبقة لـ "_XOPEN_UNIX" ،
"_XOPEN_SOURCE_EXTENDED" و "_INCLUDE__STDC_A1_SOURCE" و "_INCLUDE_XOPEN_SOURCE_500" ،
وملف البداية unix98.o.
أنه أهمية لاحظ أن هذا الخيار يغير واجهات المكتبات المختلفة
الروتين. كما أنه يؤثر على السلوك التشغيلي لمكتبة C. هكذا، أقصى
الحرص مطلوب في استخدام هذا الخيار.
يجب اختبار رمز المكتبة الذي يهدف إلى العمل مع أكثر من معيار UNIX ،
تعيين واستعادة المتغير "__xpg4_extended_mask" بالشكل المناسب. معظم برمجيات جنو
لا تقدم هذه القدرة.
-نوليبد
قم بإيقاف إنشاء خيارات الارتباط للبحث في libdld.sl عندما يكون ملف -ثابتة الخيار
المحدد على HP-UX 10 والإصدارات الأحدث.
-ثابتة
يعتمد تطبيق HP-UX لـ setlocale في libc على libdld.sl. هناك
ليس نسخة أرشيفية من libdld.sl. وهكذا ، عندما -ثابتة تم تحديد الخيار ،
هناك حاجة إلى خيارات ارتباط خاصة لحل هذه التبعية.
في HP-UX 10 والإصدارات الأحدث ، يضيف برنامج التشغيل GCC الخيارات الضرورية للربط بها
libdld.sl عندما يكون ملف -ثابتة تم تحديد الخيار. يؤدي هذا إلى الملف الثنائي الناتج إلى
كن ديناميكيًا. على منفذ 64 بت ، تنشئ الروابط ثنائيات ديناميكية بشكل افتراضي في
بأي حال. ال -نوليبد يمكن استخدام الخيار لمنع برنامج التشغيل GCC من الإضافة
خيارات الارتباط هذه.
-الخيوط
أضف دعمًا لتعدد مؤشرات الترابط باستخدام امتداد DCE خيط مكتبة تحت HP-UX. هذا الخيار
تعيين إشارات لكل من المعالج والرابط.
IA-64 مزيد من الخيارات
هذه هي -m خيارات محددة لمعمارية Intel IA-64.
-mbig-endian
إنشاء رمز لهدف كبير. هذا هو الإعداد الافتراضي لـ HP-UX.
-ملل-endian
قم بإنشاء رمز لهدف صغير. هذا هو الإعداد الافتراضي لـ AIX5 و GNU / Linux.
-مجنو- as
-منو-جنو- مثل
قم بإنشاء (أو عدم إنشاء) كود لمجمع جنو. هذا هو الافتراضي.
-مجنو- لد
-منو-جنو-لد
أنشئ (أو لا تفعل) رمز رابط جنو. هذا هو الافتراضي.
-منو الموافقة المسبقة عن علم
قم بإنشاء رمز لا يستخدم سجل مؤشر عمومي. والنتيجة ليست الموقف
رمز مستقل ، وينتهك IA-64 ABI.
-متطاير- asm- توقف
-منو- متطاير- asm- توقف
قم بإنشاء (أو لا تفعل) نقطة توقف مباشرة قبل وبعد عبارات ASM المتقلبة.
-أسماء-تسجيل
-رقم-تسجيل-الأسماء
توليد (أو لا) in, الكونغرسو خارج تسجيل أسماء السجلات المكدسة. هذه
قد يجعل إخراج المجمّع أكثر قابلية للقراءة.
-منو- sdata
-msdata
تعطيل (أو تمكين) التحسينات التي تستخدم قسم البيانات الصغيرة. قد يكون هذا مفيدا
للعمل حول أخطاء المحسن.
-مستمر- GP
قم بإنشاء رمز يستخدم قيمة مؤشر عام واحدة ثابتة. هذا مفيد عندما
تجميع كود النواة.
-تلقائي الموافقة المسبقة عن علم
إنشاء التعليمات البرمجية التي يمكن تغيير مكانها ذاتيًا. هذا يعني -مستمر- GP. وهذا مفيد
عند تجميع كود البرنامج الثابت.
-دقيقة-تعويم-تقسيم-دقيقة-الكمون
قم بإنشاء التعليمات البرمجية للأقسام المضمنة لقيم الفاصلة العائمة باستخدام أدنى زمن انتقال
الخوارزمية.
-minline-float-divide-max-الإنتاجية
قم بإنشاء رمز للقسامات المضمنة لقيم الفاصلة العائمة باستخدام الحد الأقصى من الإنتاجية
الخوارزمية.
-mno-inline-float-divid
لا تقم بإنشاء تعليمات برمجية مضمنة لأقسام قيم الفاصلة العائمة.
-minline-int-تقسيم-دقيقة-الكمون
قم بإنشاء رمز للأقسام المضمنة لقيم الأعداد الصحيحة باستخدام أدنى زمن انتقال
الخوارزمية.
-minline-int-divide-max-الإنتاجية
قم بإنشاء رمز للأقسام المضمنة لقيم الأعداد الصحيحة باستخدام الحد الأقصى للصبيب
الخوارزمية.
-mno-inline-int-divide
لا تقم بإنشاء رمز مضمّن لأقسام قيم الأعداد الصحيحة.
-minline-sqrt-min-الكمون
قم بإنشاء رمز للجذور التربيعية المضمنة باستخدام الحد الأدنى من خوارزمية زمن الوصول.
-minline-sqrt-max-الإنتاجية
قم بإنشاء رمز للجذور التربيعية المضمنة باستخدام خوارزمية الحد الأقصى للإنتاجية.
-mno- مضمنة- sqrt
لا تقم بإنشاء تعليمات برمجية مضمنة لـ "sqrt".
-مفوس-ماد
-منو-تنصهر-ماد
افعل (لا) تنشئ رمزًا يستخدم الضرب / الجمع المصهور أو الضرب / الطرح
تعليمات. الافتراضي هو استخدام هذه التعليمات.
-mno-dwarf2-asm
-mdwarf2-asm
لا (أو تفعل) إنشاء رمز المجمع لمعلومات تصحيح رقم سطر DWARF 2.
قد يكون هذا مفيدًا عند عدم استخدام مُجمّع جنو.
-مبكرا-توقف-بت
-Mno-early-stop-bits
السماح بوضع وحدات بت التوقف في وقت أبكر من السابقة مباشرة للتعليمات التي
أثار بت التوقف. يمكن أن يؤدي ذلك إلى تحسين جدولة التعليمات ، ولكن ليس دائمًا
القيام بذلك.
- المدى الثابت =نطاق التسجيل
إنشاء رمز يعامل نطاق السجل المحدد كسجلات ثابتة. سجل ثابت
هي تلك التي لا يمكن لمخصص السجل استخدامها. هذا مفيد عند تجميع النواة
الشفرة. يتم تحديد نطاق التسجيل كسجلين مفصولة بشرطة. عديد
يمكن تحديد نطاقات التسجيل مفصولة بفاصلة.
-mtls-size =حجم tls
حدد حجم البت لإزاحات TLS الفورية. القيم الصالحة هي 14 و 22 و 64.
-mtune =نوع وحدة المعالجة المركزية
قم بضبط جدولة التعليمات لوحدة معالجة مركزية معينة ، القيم الصالحة هي إيتانيوم,
إيتانيوم 1, ميرسيد, إيتانيوم 2و ماكينلي.
-milp32
-mlp64
قم بإنشاء رمز لبيئة 32 بت أو 64 بت. تحدد بيئة 32 بت int ،
طويل ومؤشر إلى 32 بت. تعيين بيئة 64 بت int إلى 32 بت وطويل و
المؤشر إلى 64 بت. هذه علامات خاصة بـ HP-UX.
-رقم-جدول-بر-بيانات-المواصفات
-msched-br-data-spec
(Dis / En) جدولة البيانات المضاربة قبل إعادة التحميل. ينتج عن هذا توليد
تعليمات "ld.a" وتعليمات الفحص المقابلة ("ld.c" / "chk.a"). ال
الافتراضي هو "تعطيل".
-msched-ar-data-spec
-رقم-جدول-ار-بيانات-المواصفات
(En / Dis) جدولة بيانات مضاربة قادرة على إعادة التحميل. ينتج عن هذا توليد
تعليمات "ld.a" وتعليمات الفحص المقابلة ("ld.c" / "chk.a"). ال
الافتراضي هو "تمكين".
-منو-جدولة-تحكم-المواصفات
-مشروع-التحكم-المواصفات
(Dis / En) قادر على التحكم في جدولة المضاربة. هذه الميزة متاحة فقط أثناء
جدولة المنطقة (أي قبل إعادة التحميل). ينتج عن هذا إنشاء "ld.s"
التعليمات وإرشادات الفحص المقابلة "chk.s". الافتراضي هو
'إبطال'.
-msched-br-in-data-spec
-رقم-جدول-بر-في-مواصفات-البيانات
(En / Dis) جدولة مضاربة قادرة على التعليمات التي تعتمد على البيانات
أحمال المضاربة قبل إعادة التحميل. هذا فعال فقط مع -msched-br-data-spec
ممكن. الافتراضي هو "تمكين".
-msched-ar-in-data-spec
-منو-جدول-في-بيانات-المواصفات
(En / Dis) جدولة مضاربة قادرة على التعليمات التي تعتمد على البيانات
أحمال المضاربة بعد إعادة التحميل. هذا فعال فقط مع -msched-ar-data-spec
ممكن. الافتراضي هو "تمكين".
-مشروع-في-السيطرة-المواصفات
-الجدول الزمني في السيطرة المواصفات
(En / Dis) جدولة مضاربة قادرة على التعليمات التي تعتمد على
مراقبة الأحمال التخمينية. هذا فعال فقط مع -مشروع-التحكم-المواصفات تمكين.
الافتراضي هو "تمكين".
-رقم-جدول-يفضل-غير-بيانات-المواصفات
-msched-تفضل-غير-مواصفات البيانات-insns
في حالة التمكين ، يتم اختيار إرشادات المضاربة بالبيانات للجدول الزمني فقط في حالة عدم وجودها
خيارات أخرى في الوقت الحالي. هذا يجعل استخدام تكهنات البيانات أكثر من ذلك بكثير
تحفظا. الافتراضي هو "تعطيل".
-رقم-جدول-يفضل-عدم-تحكم-المواصفات
-msched-تفضل-غير-التحكم-المواصفات-insns
في حالة التمكين ، يتم اختيار تعليمات التحكم - المضاربة للجدول الزمني فقط إذا كانت موجودة
لا توجد خيارات أخرى في الوقت الحالي. هذا يجعل استخدام المضاربة الضابطة كثيرًا
أكثر تحفظا. الافتراضي هو "تعطيل".
-رقم-جدول-عد-المواصفات-في-المسار الحرج
-msched-count-spec-in -itical-path
في حالة التمكين ، يتم اعتبار التبعيات التخمينية أثناء حساب
أولويات التعليمات. هذا يجعل استخدام المضاربة أكثر قليلاً
تحفظا. الافتراضي هو "تعطيل".
-msched- المواصفات- ldc
استخدم فحصًا بسيطًا لتكهنات البيانات. هذا الخيار بشكل افتراضي.
-msched-control-spec-ldc
استخدم فحصًا بسيطًا للتحكم في المضاربة. هذا الخيار بشكل افتراضي.
-msched-stop-bits- بعد-كل-دورة
ضع نقطة توقف بعد كل دورة عند الجدولة. هذا الخيار بشكل افتراضي.
-msched-fp-mem-deps-صفر التكلفة
افترض أن مخازن وأحمال الفاصلة العائمة من غير المحتمل أن تتسبب في حدوث تعارض عندما
وضعت في نفس مجموعة التعليمات. هذا الخيار معطل افتراضيا.
-msel-Sched-dont-check-control-spec
توليد الشيكات للتحكم في المضاربة في الجدولة الانتقائية. هذا العلم
معطل بشكل افتراضي.
-msched-max-memory-insns =ماكس إنس
تحديد عدد إدخالات الذاكرة لكل مجموعة تعليمات ، مع إعطاء أولوية أقل لـ
تشير الذاكرة اللاحقة إلى محاولة الجدولة في نفس مجموعة التعليمات.
كثيرًا ما يكون مفيدًا لمنع تضارب ذاكرة التخزين المؤقت للبنك. القيمة الافتراضية هي 1.
-msched-max-memory-insns-hard-limit
يجعل الحد المحدد بواسطة msched-max-memory-insns حد صارم ، عدم السماح بالمزيد
من هذا الرقم في مجموعة التعليمات. خلاف ذلك ، فإن الحد هو "لينة" ، بمعنى
أن العمليات غير المتعلقة بالذاكرة مفضلة عند الوصول إلى الحد الأقصى ، ولكن الذاكرة
قد لا يزال من المقرر العمليات.
LM32 مزيد من الخيارات
تشبه -m يتم تحديد الخيارات لهندسة LatticeMico32:
-يمكن تحويل برميل
تفعيل تعليمات تحويل البرميل.
تمكين -mdivide
تفعيل تعليمات القسمة والمعامل.
-ممكن مضاعفة
تفعيل تعليمات الضرب.
-تمكين التمديد
تفعيل تعليمات تمديد التوقيع.
- تمكين المستخدم
تمكين التعليمات المعرفة من قبل المستخدم.
M32C مزيد من الخيارات
-mcpu =الاسم
حدد وحدة المعالجة المركزية التي تم إنشاء الرمز لها. الاسم قد تكون واحدة من r8c لـ R8C / Tiny
سلسلة، m16c لسلسلة M16C (حتى / 60) ، م 32 سم لسلسلة M16C / 80 ، أو m32c
لسلسلة M32C / 80.
-مسيم
يحدد أن البرنامج سيتم تشغيله على جهاز المحاكاة. هذا يسبب بديل
مكتبة وقت التشغيل المراد ربطها والتي تدعم ، على سبيل المثال ، ملف الإدخال / الإخراج. لا يجب عليك
استخدم هذا الخيار عند إنشاء برامج تعمل على أجهزة حقيقية ؛ يجب عليك أن
توفير مكتبة وقت التشغيل الخاصة بك لأي وظائف I / O مطلوبة.
ميمريغس =عدد
يحدد عدد المسجلات الزائفة المستندة إلى الذاكرة التي تستخدم GCC أثناء إنشاء الكود.
يتم استخدام هذه السجلات الزائفة مثل السجلات الحقيقية ، لذلك هناك مقايضة بين
قدرة دول مجلس التعاون الخليجي على ملاءمة الكود في السجلات المتاحة ، وعقوبة الأداء البالغة
باستخدام الذاكرة بدلاً من السجلات. لاحظ أن جميع الوحدات في البرنامج يجب أن تكون
تم تجميعها بنفس القيمة لهذا الخيار. لهذا السبب ، يجب ألا تستخدم هذا
الخيار مع مكتبات وقت التشغيل الافتراضية لدول مجلس التعاون الخليجي.
M32R / د مزيد من الخيارات
تشبه -m تم تحديد الخيارات لهياكل Renesas M32R / D:
-m32r2
قم بإنشاء رمز لـ M32R / 2.
-m32rx
قم بإنشاء رمز لـ M32R / X.
-m32r
قم بإنشاء رمز لـ M32R. هذا هو الافتراضي.
-mmodel = صغير
افترض أن جميع الكائنات تعيش في أقل من 16 ميغا بايت من الذاكرة (بحيث يمكن أن تكون عناوينها
محملة بالتعليمات "ld24") ، وافترض أن جميع الإجراءات الفرعية يمكن الوصول إليها باستخدام
تعليمات "bl". هذا هو الافتراضي.
يمكن تعيين قابلية عنونة كائن معين باستخدام سمة "النموذج".
-mmodel = متوسط
افترض أن الكائنات قد تكون في أي مكان في مساحة العنوان 32 بت (ينشئ المترجم
تعليمات "seth / add3" لتحميل عناوينهم) ، وافترض أن جميع الإجراءات الفرعية
يمكن الوصول إليه باستخدام التعليمات "bl".
-mmodel = كبير
افترض أن الكائنات قد تكون في أي مكان في مساحة العنوان 32 بت (ينشئ المترجم
تعليمات "seth / add3" لتحميل عناوينهم) ، وافترض أن الإجراءات الفرعية قد لا تكون كذلك
يمكن الوصول إليه باستخدام تعليمات "bl" (يولد المترجم البيانات أبطأ بكثير
تسلسل تعليمات "seth / add3 / jl").
-msdata = لا شيء
تعطيل استخدام منطقة البيانات الصغيرة. يتم وضع المتغيرات في أحد ".data" أو ".bss" أو
".rodata" (ما لم يتم تحديد سمة "section"). هذا هو الافتراضي.
تتكون منطقة البيانات الصغيرة من أقسام ".sdata" و ".sbss". قد تكون الكائنات
وضع صراحة في منطقة البيانات الصغيرة مع سمة "القسم" باستخدام واحدة من هؤلاء
أقسام.
-msdata = sdata
ضع بيانات عالمية وثابتة صغيرة في منطقة البيانات الصغيرة ، لكن لا تولد بيانات خاصة
رمز للإشارة إليهم.
-msdata = استخدام
ضع بيانات عالمية وثابتة صغيرة في منطقة البيانات الصغيرة ، وقم بإنشاء بيانات خاصة
تعليمات للإشارة إليها.
-G NUM
ضع كائنات عامة وثابتة أقل من أو تساوي NUM بايت في البيانات الصغيرة أو
أقسام BSS بدلاً من أقسام البيانات العادية أو أقسام BSS. القيمة الافتراضية لـ NUM is
8. ال -msdata يجب تعيين الخيار على واحد من سداتا or تستخدم لهذا الخيار لديه أي
تأثير.
يجب تجميع جميع الوحدات بنفس الطريقة -G NUM القيمة. تجميع مع مختلف
قيم NUM قد تعمل أو لا تعمل ؛ إذا لم يكن الرابط يعطي خطأ
رسالة --- لم يتم إنشاء رمز غير صحيح.
-mdebug
يجعل الكود الخاص بـ M32R في المترجم يعرض بعض الإحصائيات التي قد تساعد
في برامج التصحيح.
الحلقات الخبيثة
قم بمحاذاة جميع الحلقات مع حد 32 بايت.
حلقات -mno- محاذاة
لا تفرض محاذاة 32 بايت للحلقات. هذا هو الافتراضي.
-معدل المشكلة =عدد
القضية عدد تعليمات لكل دورة. عدد يمكن أن يكون 1 أو 2 فقط.
- تكلفة الامتياز =عدد
عدد يمكن أن تكون 1 أو 2. إذا كانت 1 ، فيُفضل أن تكون الفروع على الشرطية
الكود ، إذا كان 2 ، فإن العكس ينطبق.
-mflush-trap =عدد
يحدد رقم الملائمة المراد استخدامه لمسح ذاكرة التخزين المؤقت. الافتراضي هو 12. صالح
الأرقام بين 0 و 15 ضمناً.
-منو-دافق- فخ
يحدد أنه لا يمكن مسح ذاكرة التخزين المؤقت باستخدام الملائمة.
-mflush- func =الاسم
يحدد اسم وظيفة نظام التشغيل لاستدعاء لمسح ذاكرة التخزين المؤقت. ال
الافتراضي هو _مخبأ دافق، ولكن يتم استخدام استدعاء الوظيفة فقط في حالة عدم توفر الملائمة.
-منو-دافق- func
يشير إلى عدم وجود وظيفة نظام تشغيل لمسح ذاكرة التخزين المؤقت.
M680x0 مزيد من الخيارات
هذه هي -m خيارات محددة لمعالجات M680x0 و ColdFire. الإعدادات الافتراضية
تعتمد على العمارة التي تم اختيارها عند تكوين المترجم ؛ الافتراضات
فيما يلي الخيارات الأكثر شيوعًا.
- مسيرة =قوس
قم بإنشاء رمز خاص بهندسة مجموعة تعليمات M680x0 أو ColdFire محددة.
القيم المسموح بها لـ قوس للهياكل M680x0 هي: 68000, 68010, 68020, 68030,
68040, 68060 cpu32. يتم اختيار بنى ColdFire وفقًا لـ Freescale
تصنيف ISA والقيم المسموح بها هي: عيسى, com.isaaplus, إيزاب إسحاق.
يحدد GCC الماكرو "__mcfقوس__" عندما يتم إنشاء رمز لـ ColdFire
استهداف. ال قوس في هذا الماكرو هو واحد من -مارس الحجج المذكورة أعلاه.
عند استخدامها معًا ، -مارس -متوني حدد رمزًا يعمل على عائلة مماثلة
المعالجات ولكن هذا هو الأمثل لهندسة معمارية دقيقة معينة.
-mcpu =وحدة المعالجة المركزية
أنشئ رمزًا لمعالج M680x0 أو ColdFire محددًا. ال M680x0 وحدة المعالجة المركزيةق هي:
68000, 68010, 68020, 68030, 68040, 68060, 68302, 68332 cpu32. كولد فاير وحدة المعالجة المركزيةs
من خلال الجدول أدناه ، والذي يصنف أيضًا وحدات المعالجة المركزية إلى عائلات:
أسرة : - وحدة المعالجة المركزية الحجج
51 : 51 51ac 51ag 51 سي 51em 51je 51jf 51jg 51jm 51mm 51qe 51qm
5206 : 5202 5204 5206
5206e : 5206e
5208 : 5207 5208
5211a : 5210a 5211a
5213 : 5211 5212 5213
5216 : 5214 5216
52235 : 52230 52231 52232 52233 52234 52235
5225 : 5224 5225
52259 : 52252 52254 52255 52256 52258 52259
5235 : 5232 5233 5234 5235 523x
5249 : 5249
5250 : 5250
5271 : 5270 5271
5272 : 5272
5275 : 5274 5275
5282 : 5280 5281 5282 528x
53017 : 53011 53012 53013 53014 53015 53016 53017
5307 : 5307
5329 : 5327 5328 5329 532x
5373 : 5372 5373 537x
5407 : 5407
5475 : 5470 5471 5472 5473 5474 5475 547x 5480 5481 5482 5483 5484 5485
-mcpu =وحدة المعالجة المركزية يتجاوز - مسيرة =قوس if قوس متوافق مع وحدة المعالجة المركزية. مجموعات أخرى من
- وحدة المعالجة المركزية -مارس مرفوضة.
يحدد GCC الماكرو "__mcf_cpu_وحدة المعالجة المركزية" عندما هدف كولدفاير وحدة المعالجة المركزية تم الإختيار. كذلك
يعرّف "__mcf_family_أسرة"حيث قيمة للعائلات في الجدول أعلاه.
-mtune =لحن
قم بضبط الكود الخاص بهندسة معمارية دقيقة معينة ضمن القيود التي وضعها -مارس
- وحدة المعالجة المركزية. البنى الدقيقة M680x0 هي: 68000, 68010, 68020, 68030, 68040,
68060 cpu32. الهندسة المعمارية الدقيقة لـ ColdFire هي: cfv1, cfv2, cfv3, cfv4
cfv4e.
يمكنك أيضا استخدام - mtune = 68020-40 للرمز الذي يجب أن يعمل بشكل جيد نسبيًا على 68020 ،
68030 و 68040 الأهداف. - mtune = 68020-60 مشابه ولكنه يتضمن 68060 هدفًا كـ
حسنا. يحدد هذان الخياران نفس قرارات الضبط مثل -م68020-40 -م68020-60
على التوالي.
يحدد GCC وحدات الماكرو "__mcقوس" و "__mcقوس__" عند ضبط العمارة 680x0
قوس. كما يعرّف "mcقوس" ما لم يكن أي منهما -انسى أو غير جنو -الأمراض المنقولة جنسيا يستخدم الخيار.
إذا تم ضبط GCC لمجموعة من البنى ، على النحو المحدد بواسطة - mtune = 68020-40 or
- mtune = 68020-60، فهو يحدد وحدات الماكرو لكل بنية في النطاق.
يحدد GCC أيضًا الماكرو "__mأوارش__" عند ضبط معمارية ColdFire الدقيقة
أوارش، حيث أوارش هي إحدى الحجج المذكورة أعلاه.
م 68000
-مك 68000
توليد الإخراج لـ 68000. هذا هو الإعداد الافتراضي عندما يتم تكوين المترجم من أجل
أنظمة تعتمد على 68000. إنه يعادل - مارس = 68000.
استخدم هذا الخيار لوحدات التحكم الدقيقة ذات النواة 68000 أو EC000 ، بما في ذلك 68008 ،
68302 و 68306 و 68307 و 68322 و 68328 و 68356.
م 68010
توليد الإخراج لـ 68010. هذا هو الإعداد الافتراضي عندما يتم تكوين المترجم من أجل
أنظمة تعتمد على 68010. إنه يعادل - مارس = 68010.
م 68020
-مك 68020
توليد الإخراج لـ 68020. هذا هو الإعداد الافتراضي عندما يتم تكوين المترجم من أجل
أنظمة تعتمد على 68020. إنه يعادل - مارس = 68020.
م 68030
توليد الإخراج لـ 68030. هذا هو الإعداد الافتراضي عندما يتم تكوين المترجم من أجل
أنظمة تعتمد على 68030. إنه يعادل - مارس = 68030.
م 68040
توليد الإخراج لـ 68040. هذا هو الإعداد الافتراضي عندما يتم تكوين المترجم من أجل
أنظمة تعتمد على 68040. إنه يعادل - مارس = 68040.
يمنع هذا الخيار استخدام تعليمات 68881/68882 التي يجب محاكاتها
برنامج على 68040. استخدم هذا الخيار إذا كان 68040 الخاص بك لا يحتوي على رمز لمحاكاته
تلك التعليمات.
م 68060
توليد الإخراج لـ 68060. هذا هو الإعداد الافتراضي عندما يتم تكوين المترجم من أجل
أنظمة تعتمد على 68060. إنه يعادل - مارس = 68060.
يمنع هذا الخيار استخدام تعليمات 68020 و 68881/68882 التي يجب أن تكون كذلك
تمت محاكاته بواسطة برنامج على 68060. استخدم هذا الخيار إذا كان 68060 الخاص بك لا يحتوي على رمز
لمحاكاة تلك التعليمات.
- وحدة المعالجة المركزية 32
توليد الإخراج لوحدة المعالجة المركزية 32. هذا هو الإعداد الافتراضي عندما يتم تكوين المترجم من أجل
الأنظمة المستندة إلى CPU32. إنه يعادل - مسيرة = وحدة المعالجة المركزية 32.
استخدم هذا الخيار للميكروكونترولر مع CPU32 أو CPU32 + core ، بما في ذلك 68330 ،
68331 و 68332 و 68333 و 68334 و 68336 و 68340 و 68341 و 68349 و 68360.
م 5200
قم بتوليد إخراج لوحدة المعالجة المركزية ColdFire 520X. هذا هو الإعداد الافتراضي عندما يكون المترجم
تم تكوينه للأنظمة المستندة إلى 520X. إنه يعادل - وحدة المعالجة المركزية = 5206، وهو الآن
تم إهماله لصالح هذا الخيار.
استخدم هذا الخيار لوحدة تحكم دقيقة ذات نواة 5200 ، بما في ذلك MCF5202 و MCF5203 و
MCF5204 و MCF5206.
-m5206e
قم بتوليد مخرجات لوحدة المعالجة المركزية ColdFire 5206e. الخيار الآن مهمل لصالح
أي ما يعادل - وحدة المعالجة المركزية = 5206 هـ.
-m528x
قم بتوليد الإخراج لعضو من عائلة ColdFire 528X. الخيار الآن
مهملة لصالح ما يعادلها - وحدة المعالجة المركزية = 528x.
م 5307
توليد الإخراج لوحدة المعالجة المركزية ColdFire 5307. تم إهمال الخيار الآن لصالح
معادل - وحدة المعالجة المركزية = 5307.
م 5407
توليد الإخراج لوحدة المعالجة المركزية ColdFire 5407. تم إهمال الخيار الآن لصالح
معادل - وحدة المعالجة المركزية = 5407.
-mcfv4e
قم بإنشاء مخرجات لوحدة المعالجة المركزية من عائلة ColdFire V4e (مثل 547x / 548x). وهذا يشمل استخدام
تعليمات الأجهزة العائمة. الخيار يعادل - وحدة المعالجة المركزية = 547x، و يكون
الآن لصالح هذا الخيار.
-م68020-40
قم بتوليد الإخراج لـ 68040 ، بدون استخدام أي من الإرشادات الجديدة. هذه النتائج
في التعليمات البرمجية التي يمكن تشغيلها بكفاءة نسبيًا على 68020/68881 أو 68030 أو a
68040. يستخدم الكود الذي تم إنشاؤه بالفعل تعليمات 68881 التي تمت محاكاتها في
68040
الخيار يعادل - مارس = 68020 - mtune = 68020-40.
-م68020-60
قم بتوليد الإخراج لـ 68060 ، بدون استخدام أي من الإرشادات الجديدة. هذه النتائج
في التعليمات البرمجية التي يمكن تشغيلها بكفاءة نسبيًا على 68020/68881 أو 68030 أو a
68040. يستخدم الكود الذي تم إنشاؤه بالفعل تعليمات 68881 التي تمت محاكاتها في
68060
الخيار يعادل - مارس = 68020 - mtune = 68020-60.
-مشدد-تعويم
م 68881
إنشاء تعليمات الفاصلة العائمة. هذا هو الإعداد الافتراضي لـ 68020 وما فوق ، و
لأجهزة ColdFire التي تحتوي على FPU. يقوم بتعريف الماكرو "__HAVE_68881__" في
أهداف M680x0 و "__mcffpu__" على أهداف ColdFire.
-مسنة- تعويم
لا تقم بإنشاء تعليمات الفاصلة العائمة ؛ استخدم مكالمات المكتبة بدلاً من ذلك. هذا ال
افتراضي للأهداف 68000 و 68010 و 68832. وهو أيضًا الإعداد الافتراضي لـ ColdFire
الأجهزة التي لا تحتوي على FPU.
-مديف
-منو- div
قم بإنشاء (عدم إنشاء) تعليمات تقسيم أجهزة ColdFire والباقي. لو
-مارس يستخدم بدون - وحدة المعالجة المركزية، الإعداد الافتراضي هو "تشغيل" لبنى ColdFire و "إيقاف"
لأبنية M680x0. خلاف ذلك ، يتم أخذ القيمة الافتراضية من وحدة المعالجة المركزية المستهدفة (إما
وحدة المعالجة المركزية الافتراضية ، أو المحددة بواسطة - وحدة المعالجة المركزية). على سبيل المثال ، الإعداد الافتراضي هو "إيقاف التشغيل"
For - وحدة المعالجة المركزية = 5206 و "تشغيل" لـ - وحدة المعالجة المركزية = 5206 هـ.
يحدد GCC الماكرو "__mcfhwdiv__" عند تمكين هذا الخيار.
-قصير
ضع في اعتبارك أن كتابة "int" بعرض 16 بت ، مثل "short int". بالإضافة إلى المعلمات
التي تم تمريرها إلى المكدس تتم محاذاة أيضًا إلى حد 16 بت حتى على الأهداف التي API الخاصة بها
يفرض الترقية إلى 32 بت.
-منو- باختصار
لا تعتبر النوع "int" بعرض 16 بت. هذا هو الافتراضي.
-منوبيتفيلد
-منو بيتفيلد
لا تستخدم تعليمات حقل البت. ال م 68000, - وحدة المعالجة المركزية 32 م 5200 الخيارات تعني
-منوبيتفيلد.
-مبيتفيلد
هل استخدم تعليمات حقل البت. ال م 68020 الخيار يعني -مبيتفيلد. وهذا هو
الافتراضي إذا كنت تستخدم تكوينًا مصممًا لـ 68020.
-مرتد
استخدم اصطلاحًا مختلفًا لاستدعاء الوظائف ، حيث تكون الدوال التي تتطلب إصلاحًا
يتم إرجاع عدد من الوسيطات بتعليمات "rtd" ، والتي تظهر حججهم
أثناء العودة. هذا يحفظ تعليمة واحدة في المتصل لأنه ليست هناك حاجة لذلك
البوب الحجج هناك.
اصطلاح الاتصال هذا غير متوافق مع تلك المستخدمة عادة على يونكس ، لذلك أنت
لا يمكن استخدامه إذا كنت بحاجة إلى استدعاء المكتبات المترجمة مع مترجم Unix.
أيضًا ، يجب عليك توفير نماذج أولية للوظائف لجميع الوظائف التي تأخذ متغيرًا
عدد الحجج (بما في ذلك "printf") ؛ وإلا يتم إنشاء رمز غير صحيح لـ
يدعو لتلك الوظائف.
بالإضافة إلى ذلك ، ينتج رمز غير صحيح بشكل خطير إذا قمت باستدعاء وظيفة بها عدد كبير جدًا
الحجج. (عادة ، يتم تجاهل الحجج الإضافية بدون ضرر.)
تعليمات "rtd" مدعومة من قبل 68010 و 68020 و 68030 و 68040 و 68060 و CPU32
المعالجات ، ولكن ليس من خلال 68000 أو 5200.
-منو- rtd
لا تستخدم اصطلاحات الاستدعاء المحددة بواسطة -مرتد. هذا هو الافتراضي.
-ملاين-كثافة العمليات
-mno- محاذاة- كثافة العمليات
التحكم في ما إذا كانت GCC تحاذي "int" و "long" و "long" و "float" و "double" و "long"
متغيرات مزدوجة "على حد 32 بت (-ملاين-كثافة العمليات) أو حد 16 بت
(-mno- محاذاة- كثافة العمليات). تؤدي محاذاة المتغيرات على حدود 32 بت إلى إنشاء رمز يتم تشغيله
أسرع إلى حد ما على المعالجات ذات الحافلات 32 بت على حساب المزيد من الذاكرة.
: تحذير إذا كنت تستخدم -ملاين-كثافة العمليات التبديل ، GCC محاذاة الهياكل التي تحتوي على ما سبق
أنواع مختلفة عن معظم مواصفات الواجهة الثنائية للتطبيق المنشورة لـ
و m68k.
-مبكرل
استخدم وضع العنونة النسبي للكمبيوتر الخاص بـ 68000 مباشرةً ، بدلاً من استخدام الوضع العام
جدول تعويض. في الوقت الحاضر ، هذا الخيار يعني -fpic، مما يسمح بحد أقصى للإزاحة 16 بت
لعنونة النسبي لأجهزة الكمبيوتر. -fPIC غير مدعوم حاليًا بـ -مبكرل، على الرغم من
يمكن دعم هذا للمعالجات 68020 وأعلى.
-لا صارمة- محاذاة
-mstrict- محاذاة
لا تفترض أن النظام يعالج مراجع الذاكرة غير المحاذاة.
-مسبب-البيانات
قم بإنشاء رمز يسمح بوضع مقطع البيانات في منطقة مختلفة من الذاكرة
من جزء النص. هذا يسمح للتنفيذ في المكان في بيئة بدون
إدارة الذاكرة الافتراضية. هذا الخيار يعني -fPIC.
-رقم-سبتمبر-البيانات
قم بإنشاء رمز يفترض أن مقطع البيانات يتبع مقطع النص. هذا هو
الافتراضي.
-متوسط-المكتبة المشتركة
قم بإنشاء رمز يدعم المكتبات المشتركة عبر طريقة معرف المكتبة. هذا يسمح
لتنفيذ المكتبات في المكان والمكتبات المشتركة في بيئة بدون ذاكرة افتراضية
إدارة. هذا الخيار يعني -fPIC.
-رقم-معرف-مكتبة مشتركة
قم بإنشاء رمز لا يفترض أنه يتم استخدام المكتبات المشتركة القائمة على المعرفات. هذا هو
الافتراضي.
-مكتبة-مشارد- id = n
يحدد رقم تعريف المكتبة المشتركة المستندة إلى المعرف التي يتم تجميعها.
يؤدي تحديد القيمة 0 إلى إنشاء رمز أكثر إحكاما ؛ تحديد قوى القيم الأخرى
تخصيص هذا الرقم للمكتبة الحالية ، ولكن لم يعد هناك مساحة- أو وقت-
فعالة من حذف هذا الخيار.
-mxgot
-منو- xgot
عند إنشاء رمز مستقل عن الموضع لـ ColdFire ، قم بإنشاء رمز يعمل إذا
تحتوي GOT على أكثر من 8192 إدخالاً. هذا الرمز أكبر وأبطأ من الكود
ولدت بدون هذا الخيار. في معالجات M680x0 ، لا يلزم هذا الخيار ؛ -fPIC
يكفي.
يستخدم GCC عادةً تعليمة واحدة لتحميل القيم من GOT. بينما هذا
فعال نسبيًا ، فهو يعمل فقط إذا كانت GOT أصغر من حوالي 64 كيلو بايت. اى شى
أكبر يتسبب في قيام الرابط بالإبلاغ عن خطأ مثل:
تم اقتطاع النقل ليناسب: R_68K_GOT16O foobar
إذا حدث هذا ، يجب إعادة ترجمة التعليمات البرمجية الخاصة بك باستخدام -mxgot. يجب أن تعمل بعد ذلك مع
GOTs كبيرة جدا. ومع ذلك ، تم إنشاء رمز مع -mxgot أقل كفاءة ، لأنه
يأخذ 4 تعليمات لجلب قيمة رمز عالمي.
لاحظ أن بعض الروابط ، بما في ذلك الإصدارات الأحدث من رابط جنو ، يمكنها الإنشاء
عدة GOTs وفرز إدخالات GOT. إذا كان لديك مثل هذا الرابط ، ما عليك سوى
لاستخدام -mxgot عند تجميع ملف كائن واحد يصل إلى أكثر من 8192 GOT
إدخالات. قلة قليلة منهم يفعلون ذلك.
ليس لهذه الخيارات أي تأثير ما لم يُنشئ GCC كودًا مستقلاً عن الموضع.
مكور مزيد من الخيارات
هذه هي -m الخيارات المحددة لمعالجات Motorola M * Core.
-مهاردليت
-منو-هارديليت
الثوابت المضمنة في دفق التعليمات البرمجية إذا كان يمكن إجراؤها في تعليمين أو أقل.
-مديف
-منو- div
استخدم تعليمات القسمة. (ممكّن افتراضيًا).
-استرخاء- فوري
-من-الاسترخاء-فورى
السماح الفوري بحجم تعسفي في عمليات البت.
على نطاق واسع bitfields
-حقول بت واسعة النطاق
تعامل دائمًا مع حقول البت بحجم "int".
وظائف -m4 بايت
وظائف -mno-4 بايت
إجبار جميع الوظائف على المحاذاة مع حد 4 بايت.
- بيانات الخط
- بيانات الخط
انبعث معلومات الخط.
-مبطء بايت
-mno- بطيئة-بايت
يفضل الوصول إلى الكلمات عند قراءة كميات البايت.
-ملل-endian
-mbig-endian
قم بإنشاء رمز لهدف صغير.
م 210
م 340
توليد رمز للمعالج 210.
-منو-لسيم
افترض أن دعم وقت التشغيل قد تم توفيره ، لذا احذف مكتبة المحاكاة
(ليبسيم.أ) من سطر الأوامر رابط.
-زيادة مكدس =المقاس
قم بتعيين الحد الأقصى لمقدار عملية زيادة مكدس واحدة. يمكن للقيم الكبيرة
زيادة سرعة البرامج التي تحتوي على وظائف تحتاج إلى كمية كبيرة من
مساحة المكدس ، لكن يمكنهم أيضًا تشغيل خطأ تجزئة إذا تم تمديد المكدس
كثير جدا. القيمة الافتراضية هي 0x1000.
MeP مزيد من الخيارات
-معبسديف
يُمكّن تعليمة "abs" ، وهي الفرق المطلق بين سجلين.
- خيارات صغيرة
تمكن جميع التعليمات الاختيارية - متوسط ، ضرب ، قسمة ، عمليات بت ،
الصفر البادئ ، والفرق المطلق ، والحد الأدنى / الحد الأقصى ، والمقطع ، والتشبع.
- متوسط
يُمكّن تعليمات "ave" ، التي تحسب متوسط سجلين.
-مستند =n
متغيرات الحجم n يتم وضع وحدات البايت أو أصغر في قسم ".based" بشكل افتراضي.
تستخدم المتغيرات المعتمدة السجل $ tp كسجل أساسي ، ويوجد حد 128 بايت
إلى قسم ".based".
-مبيتوبس
لتمكين تعليمات تشغيل البت --- اختبار البت ("btstm") ، تعيين ("bsetm") ، مسح
("bclrm") ، و invert ("bnotm") ، و test-and-set ("tas").
-مك =الاسم
يختار أي قسم يتم وضع البيانات الثابتة فيه. الاسم قد يكون صغير, قربالطرق أو بعيدا.
-مقطع
لتمكين تعليمات "القصاصة". لاحظ أن -مقطع ليس مفيدًا إلا إذا كنت أنت أيضًا
تزود -مينماكس.
-mconfig =الاسم
يختار أحد التكوينات الأساسية المضمنة. تحتوي كل شريحة MeP على واحد أو أكثر
وحدات فيه كل وحدة لديها وحدة المعالجة المركزية الأساسية ومجموعة متنوعة من المعالجات الاختيارية
التعليمات والأجهزة الطرفية. توفر أداة "MeP-Integrator" ، التي ليست جزءًا من GCC
هذه التكوينات من خلال هذا الخيار ؛ استخدام هذا الخيار هو نفس استخدام الكل
خيارات سطر الأوامر المقابلة. التكوين الافتراضي هو الافتراضي.
-مكوب
تمكن تعليمات المعالج الثانوي. بشكل افتراضي ، هذا هو معالج ثانوي 32 بت. ملحوظة
أن المعالج المشترك يتم تمكينه بشكل طبيعي عبر ملف -mconfig = الخيار.
-مكوب 32
لتمكين تعليمات المعالج المساعد 32 بت.
-مكوب 64
لتمكين تعليمات المعالج المساعد 64 بت.
-Mivc2
تمكن جدولة IVC2. IVC2 هو معالج مساعد VLIW 64 بت.
-MDC
يتسبب في المتغيرات الثابتة ليتم وضعها في قسم "قريب".
-مديف
تفعيل تعليمات "div" و "divu".
-meb
إنشاء رمز كبير Endian.
-ميل
قم بتوليد كود صغير.
-ميو- متقلبة
يخبر المترجم أن أي متغير تم تمييزه بالسمة "io" يجب أن يكون كذلك
تعتبر متقلبة.
-مل يتسبب في تعيين المتغيرات إلى قسم ".far" افتراضيًا.
-مليدز
تمكين تعليمات "leadz" (صفر بادئ).
مم يتسبب في تعيين المتغيرات إلى قسم "قريب" افتراضيًا.
-مينماكس
لتمكين تعليمات "min" و "max".
-خلمة
تمكن تعليمات الضرب والمضاعفة.
-لا خيارات
تعطيل كافة التعليمات الاختيارية التي تم تمكينها بواسطة - خيارات صغيرة.
- كرر
لتمكين تعليمات "التكرار" و "erepeat" ، المستخدمة للتكرار المنخفض.
-الآنسة يؤدي إلى جعل جميع المتغيرات افتراضيًا إلى قسم ".tiny". لاحظ أن هناك ملف
65536 بايت حد لهذا القسم. تستخدم الوصول إلى هذه المتغيرات قاعدة٪ gp
تسجيل.
-مساتور
تمكن تعليمات التشبع. لاحظ أن المترجم لا يعمل حاليًا
إنشاء هذه نفسها ، ولكن هذا الخيار مضمن للتوافق مع الأدوات الأخرى ،
مثل".
-msdram
اربط وقت التشغيل المستند إلى SDRAM بدلاً من وقت التشغيل الافتراضي المستند إلى ROM.
-مسيم
ربط مكتبات وقت تشغيل المحاكاة.
-مسيمنوفيك
اربط مكتبات وقت تشغيل المحاكي ، باستثناء الدعم المدمج لإعادة التعيين و
ناقلات الاستثناء والجداول.
-متف
يؤدي إلى جعل جميع الوظائف افتراضيًا إلى قسم ".far". بدون هذا الخيار ، وظائف
افتراضيًا إلى قسم "قريب".
- صغير =n
المتغيرات التي هي n يتم تخصيص بايت أو أصغر للقسم ".tiny". هؤلاء
المتغيرات تستخدم السجل الأساسي $ gp. الإعداد الافتراضي لهذا الخيار هو 4 ، لكن لاحظ ذلك
هناك حد 65536 بايت لقسم ".tiny".
ميكروبليز مزيد من الخيارات
-مسنة- تعويم
استخدم مضاهاة البرامج للنقطة العائمة (افتراضي).
-مشدد-تعويم
استخدم تعليمات الأجهزة العائمة.
-ممبي
لا تقم بتحسين تحركات الكتلة ، استخدم "memcpy".
-mno-clearbss
تم إهمال هذا الخيار. يستخدم -fno-صفر-تهيئة-في-bss بدلا من ذلك.
-mcpu =نوع وحدة المعالجة المركزية
استخدم ميزات وجدول التعليمات البرمجية لوحدة المعالجة المركزية المعينة. القيم المدعومة موجودة في
شكل vX.YY.Z، حيث X هي نسخة رئيسية ، YY هي النسخة الثانوية ، و Z is
كود التوافق. قيم المثال هي الإصدار 3.00, الإصدار 4.00 ب, الإصدار 5.00, الإصدار 5.00 ب, الإصدار 5.00 ب,
الإصدار 6.00.
-mxl- لينة مول
استخدام برنامج محاكاة مضاعفة (افتراضي).
-mxl-soft-div
استخدم برنامج محاكاة التقسيمات (افتراضي).
-mxl- برميل-التحول
استخدم شيفتر برميل الجهاز.
-mxl- مقارنة النمط
استخدم تعليمات مقارنة الأنماط.
-msmall- يقسم
استخدم البحث عن الجدول الأمثل لأقسام الأعداد الصحيحة الصغيرة.
-mxl- مكدس الاختيار
تم إهمال هذا الخيار. يستخدم -fstack- الاختيار بدلا من ذلك.
-مكسل-GP-الاختيار
استخدم أقسام ".sdata" / ". sbss" النسبية لـ GP.
-mxl- الضرب العالي
استخدم تعليمات الضرب العالية للجزء العالي من 32x32 اضرب.
-mxl- تعويم- تحويل
استخدم تعليمات الأجهزة الخاصة بتحويل النقطة العائمة.
-mxl- تعويم الجذر التربيعي
استخدم تعليمات جهاز الجذر التربيعي للفاصلة العائمة.
-mbig-endian
إنشاء رمز لهدف كبير.
-ملل-endian
قم بإنشاء رمز لهدف صغير.
-mxl- إعادة ترتيب
استخدم تعليمات إعادة الترتيب (تحميل / تخزين مقايضة وبايت عكسي).
-mxl- وضع-نموذج التطبيق
حدد نموذج التطبيق نموذج التطبيق. النماذج الصالحة هي
تنفيذ
عادي قابل للتنفيذ (افتراضي) ، يستخدم رمز بدء التشغيل crt0.o.
com.xmdstub
للاستخدام مع Xilinx Microprocessor Debugger (XMD) المستند إلى برنامج التصحيح التدخلي
وكيل يسمى xmdstub. يستخدم هذا ملف بدء التشغيل crt1.o ويحدد عنوان البداية لـ
البرنامج إلى 0x800.
ألبس الحذاء
للتطبيقات التي يتم تحميلها باستخدام أداة تحميل التشغيل. يستخدم هذا النموذج ملف بدء التشغيل
crt2.o التي لا تحتوي على معالج متجه لإعادة تعيين المعالج. هذا مناسب
لنقل التحكم في إعادة تعيين المعالج إلى أداة تحميل التشغيل بدلاً من ملف
التطبيق.
المبتدئين
للتطبيقات التي لا تتطلب أيًا من متجهات MicroBlaze. هذا الخيار
قد يكون مفيدًا للتطبيقات التي تعمل داخل تطبيق المراقبة. هذا النموذج
يستخدم crt3.o كملف بدء التشغيل.
خيار -xl- الوضع-نموذج التطبيق هو اسم مستعار مهمل لـ -mxl- وضع-نموذج التطبيق.
MIPS مزيد من الخيارات
-EB إنشاء رمز كبير Endian.
-ال قم بتوليد كود صغير. هذا هو الإعداد الافتراضي لـ mips * el - * - * تكوينات.
- مسيرة =قوس
توليد التعليمات البرمجية التي تعمل على قوس، والذي يمكن أن يكون اسم MIPS ISA العام أو ملف
اسم معالج معين. أسماء ISA هي: mips1, mips2, mips3, mips4,
mips32, mips32r2, mips32r3, mips32r5, mips32r6, mips64, mips64r2, mips64r3, mips64r5
mips64r6. أسماء المعالجات هي: 4kc, 4km, 4kp, 4KSC, 4kec, 4kem, 4 كيب, 4ksd,
5kc, 5 كيلو, 20kc, 24kc, 24 كف 2_1, 24 كف 1_1, 24kec, 24 كف 2_1, 24 كف 1_1, 34kc, 34 كف 2_1,
34 كف 1_1, 34kn, 74kc, 74 كف 2_1, 74 كف 1_1, 74 كف 3_2, 1004kc, 1004 كف 2_1, 1004 كف 1_1,
com.loongson2e, com.loongson2f, com.loongson3a, M4K, M14K, m14kc, m14ke, m14kec, octeon, octeon +,
octeon2, octeon3, أوريون, p5600, r2000, r3000, r3900, r4000, r4400, r4600, r4650,
r4700, r6000, r8000, rm7000, rm9000, r10000, r12000, r14000, r16000, sb1, sr71000,
vr4100, vr4111, vr4120, vr4130, vr4300, vr5000, vr5400, vr5500, XLR XLP.
قيمة خاصة من أبي يحدد البنية الأكثر توافقًا لـ ABI المحدد
(هذا هو، mips1 لـ 32 بت ABIs و mips3 لـ 64 بت ABIs).
تدعم سلسلة أدوات Linux / GNU الأصلية القيمة أيضًا محليالذي يختار الأفضل
خيار الهندسة المعمارية للمعالج المضيف. -مارش = أصلي ليس له أي تأثير إذا كان لدول مجلس التعاون الخليجي
لا يتعرف على المعالج.
في أسماء المعالجات ، نهائي 000 يمكن اختصاره كـ k (فمثلا، - مسيرة = r2k).
البادئات اختيارية ، و vr قد تكون مكتوبة r.
أسماء النموذج nf2_1 قم بالإشارة إلى المعالجات التي تحتوي على وحدات FPU مسجلة بنصف معدل
الأساسية ، أسماء النموذج nf1_1 الرجوع إلى المعالجات مع FPUs التي تم تسجيلها بنفس المعدل
كما جوهر ، وأسماء النموذج nf3_2 الرجوع إلى المعالجات مع FPUs سجلت نسبة
من 3: 2 فيما يتعلق بالنواة. لأسباب التوافق ، nf تم قبوله باعتباره أ
مرادف ل nf2_1 في حين nx bfx يتم قبولها كمرادفات لـ nf1_1.
يحدد GCC اثنين من وحدات الماكرو بناءً على قيمة هذا الخيار. الأول هو "_MIPS_ARCH" ،
الذي يعطي اسم العمارة الهدف ، كسلسلة. الثاني له الشكل
"_MIPS_ARCH_فو "، حيث فو هي القيمة الكبيرة لـ "_MIPS_ARCH". على سبيل المثال،
- مارس = r2000 يعيّن "_MIPS_ARCH" إلى "r2000" ويعرّف الماكرو "_MIPS_ARCH_R2000".
لاحظ أن الماكرو "_MIPS_ARCH" يستخدم أسماء المعالجات المذكورة أعلاه. في أخرى
الكلمات ، لها البادئة الكاملة ولا تختصر 000 as k. في حالة من عند-
أبي، يقوم الماكرو بتسمية العمارة التي تم حلها (إما "mips1" أو "mips3"). الأسماء
العمارة الافتراضية عندما لا -مارس يتم إعطاء الخيار.
-mtune =قوس
تحسين ل قوس. من بين أشياء أخرى ، يتحكم هذا الخيار في طريقة التعليمات
مجدولة ، والتكلفة المتصورة للعمليات الحسابية. القائمة ل قوس القيم
هو نفسه ل -مارس.
عند عدم استخدام هذا الخيار ، يقوم GCC بتحسين المعالج المحدد بواسطة -مارس. من قبل
استخدام -مارس -متوني معًا ، من الممكن إنشاء رمز يتم تشغيله على ملف
عائلة المعالجات ، ولكن قم بتحسين الشفرة لعضو معين من تلك العائلة.
-متوني يحدد وحدات الماكرو "_MIPS_TUNE" و "_MIPS_TUNE_فو "التي تعمل في نفس الشيء
طريقة مثل -مارس المذكورة أعلاه.
-الرسمات 1
أي ما يعادل -مارش = mips1.
-الرسمات 2
أي ما يعادل -مارش = mips2.
-الرسمات 3
أي ما يعادل -مارش = mips3.
-الرسمات 4
أي ما يعادل -مارش = mips4.
-الرسمات 32
أي ما يعادل -مارش = mips32.
-mips32r3
أي ما يعادل - مسيرة = mips32r3.
-mips32r5
أي ما يعادل - مسيرة = mips32r5.
-mips32r6
أي ما يعادل - مسيرة = mips32r6.
-الرسمات 64
أي ما يعادل -مارش = mips64.
-mips64r2
أي ما يعادل - مسيرة = mips64r2.
-mips64r3
أي ما يعادل - مسيرة = mips64r3.
-mips64r5
أي ما يعادل - مسيرة = mips64r5.
-mips64r6
أي ما يعادل - مسيرة = mips64r6.
-الرسمات 16
-منو- mips16
إنشاء (عدم إنشاء) رمز MIPS16. إذا كان GCC يستهدف MIPS32 أو MIPS64
الهندسة المعمارية ، فإنه يستخدم MIPS16e ASE.
يمكن أيضًا التحكم في إنشاء كود MIPS16 على أساس كل وظيفة عن طريق
سمات "mips16" و "nomips16".
-مفليب- mips16
إنشاء رمز MIPS16 على وظائف بديلة. يتم توفير هذا الخيار للانحدار
اختبار إنشاء كود MIPS16 / non-MIPS16 المختلط ، وهو غير مخصص للعادي
استخدامها في تجميع رمز المستخدم.
-minterlink- مضغوط
-mno-interlink- مضغوط
طلب (لا تطلب) أن يكون الرمز الذي يستخدم المعيار (غير مضغوط) MIPS ISA رابط-
متوافق مع MIPS16 ورمز microMIPS والعكس صحيح.
على سبيل المثال ، لا يمكن للتعليمات البرمجية التي تستخدم ترميز ISA القياسي الانتقال مباشرة إلى MIPS16 أو
كود microMIPS ؛ يجب أن تستخدم إما مكالمة أو قفزة غير مباشرة. -minterlink- مضغوط
لذلك يعطل القفزات المباشرة ما لم يعرف مجلس التعاون الخليجي أن الهدف من القفزة ليس كذلك
مضغوط.
-مينترلينك- mips16
-mno- الربط- mips16
الأسماء المستعارة لـ -minterlink- مضغوط -mno-interlink- مضغوط. هذه الخيارات
تسبق microMIPS ASE ويتم الاحتفاظ بها للتوافق مع الإصدارات السابقة.
-مابي = 32
-مابي = o64
-مابي = ن 32
-مابي = 64
-مابي = إيبي
قم بإنشاء رمز لـ ABI المحدد.
لاحظ أن EABI له متغير 32 بت و 64 بت. عادة ما يولد مجلس التعاون الخليجي 64 بت
رمز عند تحديد بنية 64 بت ، ولكن يمكنك استخدام -mgp32 للحصول على كود 32 بت
بدلا من ذلك.
للحصول على معلومات حول O64 ABI ، راجعhttp://gcc.gnu.org/projects/mipso64-abi.html>.
يدعم GCC متغيرًا من o32 ABI حيث تكون سجلات الفاصلة العائمة 64 بدلاً من ذلك
من 32 بت. يمكنك تحديد هذه المجموعة مع -مابي = 32 -mfp64. هذا ABI
يعتمد على تعليمات "mthc1" و "mfhc1" ولذلك فهو مدعوم فقط لـ
معالجات MIPS32R2 و MIPS32R3 و MIPS32R5.
تظل تعيينات السجل للوسيطات وقيم الإرجاع كما هي ، لكن كل واحدة
يتم تمرير القيمة العددية في تسجيل واحد 64 بت بدلاً من زوج من 32 بت
السجلات. على سبيل المثال ، يتم إرجاع قيم الفاصلة العائمة العددية بتنسيق f0 دولار فقط ، ليس أ
f0 دولار/f1 دولار زوج. تظل مجموعة سجلات المكالمات المحفوظة أيضًا كما هي من حيث
يتم حفظ تسجيلات الدقة المزدوجة المرقمة.
يتم دعم متغيرين إضافيين لـ o32 ABI لتمكين الانتقال من
32 بت إلى 64 بت المسجلات. هؤلاء هم FPXX (-mfpxx) و FP64A (-mfp64
-منو- غريب- spreg). يفرض ملحق FPXX أنه يجب تنفيذ جميع التعليمات البرمجية بشكل صحيح
عند التشغيل باستخدام سجلات 32 بت أو 64 بت. يمكن ربط الرمز بأي منهما
FP32 أو FP64 ، لكن ليس كلاهما. امتداد FP64A مشابه لملحق FP64 لكن
يحظر استخدام سجلات الدقة الفردية ذات الأرقام الفردية. يمكن استخدام هذا في
بالاقتران مع وضع "FRE" لوحدات FPU في معالجات MIPS32R5 ويسمح لكل من FP32
و FP64A للترابط والتشغيل في نفس العملية دون تغيير أوضاع FPU.
-مبيكلز
-منو- abicalls
قم بإنشاء (عدم إنشاء) التعليمات البرمجية المناسبة للكائنات الديناميكية ذات النمط SVR4.
-مبيكلز هو الإعداد الافتراضي للأنظمة المستندة إلى SVR4.
-مشاركة
-منو- مشترك
قم بإنشاء (لا تنشئ) رمزًا مستقلًا تمامًا عن الموضع ، ويمكن ذلك
لذلك يتم ربطها بالمكتبات المشتركة. هذا الخيار يؤثر فقط -مبيكلز.
الكل -مبيكلز كان الرمز تقليديًا مستقلًا عن الموضع ، بغض النظر عن الخيارات
مثل -fPIC -fpic. ومع ذلك ، كإمتداد ، فإن سلسلة أدوات جنو تسمح بالملفات التنفيذية
لاستخدام الوصول المطلق للرموز الملزمة محليًا. ويمكنه أيضًا استخدام GP أقصر
تسلسل التهيئة وإنشاء استدعاءات مباشرة للوظائف المحددة محليًا. هذه
الوضع المحدد بواسطة -منو- مشترك.
-منو- مشترك يعتمد على binutils 2.16 أو أعلى وينشئ كائنات يمكن أن تكون فقط
مرتبط برابط جنو. ومع ذلك ، فإن الخيار لا يؤثر على ABI للنهائي
تنفيذ؛ إنه يؤثر فقط على ABI للكائنات القابلة للنقل. استخدام -منو- مشترك
بشكل عام يجعل الملفات التنفيذية أصغر وأسرع.
-مشاركة هو الافتراضي.
-مبلت
-منو- PLT
افترض (لا تفترض) أن الوصلات الثابتة والديناميكية تدعم أنظمة PLT والنسخ
الترحيلات. هذا الخيار يؤثر فقط -منو- مشترك -مبيكلز. بالنسبة لـ n64 ABI ، هذا
الخيار ليس له تأثير بدون -msym32.
يمكنك جعل -مبلت الافتراضي من خلال تكوين GCC مع --with-mips-PLT. الافتراضي
is -منو- PLT غير ذلك.
-mxgot
-منو- xgot
ارفع (لا ترفع) القيود المعتادة على حجم جدول الإزاحة العالمية.
يستخدم GCC عادةً تعليمة واحدة لتحميل القيم من GOT. بينما هذا
فعال نسبيًا ، فهو يعمل فقط إذا كانت GOT أصغر من حوالي 64 كيلو بايت. اى شى
أكبر يتسبب في قيام الرابط بالإبلاغ عن خطأ مثل:
تم قطع النقل ليناسب: R_MIPS_GOT16 foobar
إذا حدث هذا ، يجب إعادة ترجمة التعليمات البرمجية الخاصة بك باستخدام -mxgot. هذا يعمل مع جدا
GOTs الكبيرة ، على الرغم من أن الكود أقل كفاءة أيضًا ، لأنه يستغرق ثلاثة
تعليمات لجلب قيمة رمز عالمي.
لاحظ أن بعض الروابط يمكن أن تنشئ عدة GOTs. إذا كان لديك مثل هذا الرابط ، فأنت
يجب أن تحتاج فقط إلى استخدام -mxgot عندما يصل ملف كائن واحد إلى أكثر من 64 كيلو بايت
يستحق إدخالات GOT. قلة قليلة منهم يفعلون ذلك.
ليس لهذه الخيارات أي تأثير ما لم يُنشئ GCC رمزًا مستقلاً عن الموضع.
-mgp32
افترض أن عرض سجلات الأغراض العامة 32 بت.
-mgp64
افترض أن عرض سجلات الأغراض العامة 64 بت.
-mfp32
افترض أن عرض سجلات الفاصلة العائمة 32 بت.
-mfp64
افترض أن عرض سجلات الفاصلة العائمة 64 بت.
-mfpxx
لا تفترض عرض سجلات الفاصلة العائمة.
-مشدد-تعويم
استخدم تعليمات المعالج المساعد للفاصلة العائمة.
-مسنة- تعويم
لا تستخدم تعليمات المعالج المساعد الفاصلة العائمة. تنفيذ الفاصلة العائمة
الحسابات باستخدام مكالمات المكتبة بدلاً من ذلك.
-منو-تعويم
أي ما يعادل -مسنة- تعويم، لكنه يؤكد بالإضافة إلى ذلك أن البرنامج الذي يتم تجميعه
لا ينفذ أي عمليات للفاصلة العائمة. هذا الخيار مدعوم حاليًا
فقط من خلال بعض تكوينات MIPS المعدنية العارية ، حيث يمكن تحديد مجموعة خاصة من
المكتبات التي تفتقر إلى كل دعم الفاصلة العائمة (بما في ذلك ، على سبيل المثال ،
أشر إلى تنسيقات "printf"). إذا تم تجميع التعليمات البرمجية مع -منو-تعويم يحتوي بطريق الخطأ
عمليات الفاصلة العائمة ، فمن المحتمل أن تعاني من فشل في وقت الارتباط أو وقت التشغيل.
- تعويم واحد
افترض أن معالج الفاصلة العائمة يدعم فقط العمليات أحادية الدقة.
- تعويم مزدوج
افترض أن معالج الفاصلة العائمة يدعم عمليات الدقة المزدوجة. هذه
هو الافتراضي.
-مود-سبريج
-منو- غريب- spreg
قم بتمكين استخدام سجلات الفاصلة العائمة الفردية ذات الأرقام الفردية لـ o32
ABI. هذا هو الإعداد الافتراضي للمعالجات المعروفة بدعم هذه السجلات.
عند استخدام o32 FPXX ABI ، -منو- غريب- spreg بشكل افتراضي.
-مابس = 2008
-mabs = تراث
تتحكم هذه الخيارات في معالجة الرقم الخاص غير رقم (NaN) IEEE 754
بيانات الفاصلة العائمة مع "القيمة المطلقة.FMT " و "neg.FMT " تعليمات الجهاز.
بشكل افتراضي أو متى -mabs = تراث يتم استخدام العلاج الموروث المختار. في هذا
في حالة اعتبار هذه التعليمات حسابية وتم تجنبها عند التشغيل الصحيح
مطلوب ومعامل الإدخال قد يكون NaN. تسلسل أطول للتعليمات
التي تتعامل مع بت إشارة مسند الفاصلة العائمة يدويًا يتم استخدامها بدلاً من ذلك
ال - غير محدد - الرياضيات فقط كما تم تحديد الخيار.
تشير -مابس = 2008 يحدد الخيار معالجة IEEE 754-2008. في هذه الحالة
تعتبر التعليمات غير حسابية وبالتالي تعمل بشكل صحيح في الكل
الحالات ، بما في ذلك على وجه الخصوص حيث يكون معامل الإدخال هو NaN. هذه التعليمات
لذلك تستخدم دائمًا للعمليات ذات الصلة.
-منان = 2008
-منان = تراث
تتحكم هذه الخيارات في تشفير الرقم الخاص غير رقم (NaN) IEEE 754
بيانات الفاصلة العائمة.
تشير -منان = تراث الخيار يحدد الترميز القديم. في هذه الحالة NaNs الهادئة (qNaNs)
يتم الإشارة إليها من خلال البتة الأولى من الدلالة الزائدة والحقل 0 ، بينما
يتم الإشارة إلى إشارات NaN (sNaNs) بواسطة البتة الأولى من المعنى اللاحق لها
المجال يجري 1.
تشير -منان = 2008 يقوم الخيار بتحديد ترميز IEEE 754-2008. في هذه الحالة تكون qNaNs
يُشار إليها بالبت الأول من أهميتها اللاحقة والحقل 1 ، في حين أن sNaNs
يتم الإشارة إليها من خلال البتة الأولى من الدلالة الزائدة والحقل 0.
الافتراضي هو -منان = تراث ما لم يتم تكوين GCC مع - مع نان = 2008.
-مللسك
-منو- ذ
استخدم (لا تستخدم) ll, scو مزامنة تعليمات لتنفيذ الذاكرة الذرية المدمجة
المهام. عندما لا يتم تحديد أي من الخيارين ، يستخدم GCC التعليمات إذا كان الهدف
العمارة تدعمهم.
-مللسك مفيد إذا كان بإمكان بيئة وقت التشغيل محاكاة التعليمات و -منو- ذ
يمكن أن يكون مفيدًا عند تجميع معايير ISA غير القياسية. يمكنك جعل أي من الخيارين
افتراضيًا عن طريق تكوين GCC مع - مع-ذ --بدون ذ على التوالي.
- مع-ذ هو الإعداد الافتراضي لبعض التكوينات ؛ انظر وثائق التثبيت
للتفاصيل.
-mdsp
-منو- dsp
استخدم (لا تستخدم) المراجعة 1 من MIPS DSP ASE.
يحدد هذا الخيار ماكرو المعالج المسبق "__mips_dsp". يعرّف أيضًا
"__mips_dsp_rev" إلى 1.
-mdspr2
-منو- dspr2
استخدم (لا تستخدم) المراجعة 2 من MIPS DSP ASE.
يحدد هذا الخيار وحدات ماكرو المعالج المسبق "__mips_dsp" و "__mips_dspr2". هو - هي
يعرّف أيضًا "__mips_dsp_rev" بالرقم 2.
-msmartmips
-منو-سمارتميبس
استخدم (لا تستخدم) MIPS SmartMIPS ASE.
-عجز واحد
- زوج واحد
استخدم (لا تستخدم) تعليمات النقطة العائمة المفردة المزدوجة.
يتطلب هذا الخيار تمكين دعم النقطة العائمة للأجهزة.
-mdmx
-منو- mdmx
استخدم (لا تستخدم) إرشادات ملحق الوسائط الرقمية MIPS. هذا الخيار يمكن أن يكون فقط
تُستخدم عند إنشاء رمز 64 بت وتتطلب دعم النقطة العائمة للأجهزة
تمكين.
-mips3d
-منو- mips3d
استخدم (لا تستخدم) MIPS-3D ASE. الخيار -mips3d يدل -عجز واحد.
ميكروميبس
-mno- ميكروميبس
توليد (لا تنشئ) كود microMIPS.
يمكن أيضًا التحكم في إنشاء كود MicroMIPS على أساس كل وظيفة عن طريق
سمات "micromips" و "nomicromips".
-ممت
-mno- طن متري
استخدم (لا تستخدم) تعليمات MT Multithreading.
-ممكو
-منو- mcu
استخدم (لا تستخدم) تعليمات MIPS MCU ASE.
ميفا
-منو-إيفا
استخدم (لا تستخدم) إرشادات MIPS Enhanced Virtual Addressing.
-mvirt
-منو-الفضيلة
استخدم (لا تستخدم) الإرشادات الخاصة بتطبيق MIPS Virtualization Application.
-mxpa
-منو- إكسبأ
استخدم (لا تستخدم) إرشادات MIPS eXtended Physical Address (XPA).
-mlong64
فرض الأنواع "الطويلة" لتكون بعرض 64 بت. ارى -mlong32 للحصول على شرح للافتراضي
والطريقة التي يتم بها تحديد حجم المؤشر.
-mlong32
فرض أن تكون أنواع المؤشر "طويلة" و "كثافة" وأنواع المؤشر 32 بت.
يعتمد الحجم الافتراضي لكل من "int" و "long" والمؤشرات على ABI. كل ال
تستخدم ABIs المدعومة 32 بت "int" s. يستخدم n64 ABI 64 بت "طويلة" ، كما يفعل 64 بت
EABI ؛ يستخدم الآخرون 32 بت "طويلة". المؤشرات من نفس حجم مؤشرات "طويلة" أو
نفس حجم سجلات الأعداد الصحيحة ، أيهما أصغر.
-msym32
-منو sym32
افترض (لا تفترض) أن جميع الرموز لها قيم 32 بت ، بغض النظر عن المحدد
ABI. هذا الخيار مفيد في تركيبة مع -مابي = 64 -منو- abicalls لأنه
يسمح لـ GCC بإنشاء مراجع أقصر وأسرع للعناوين الرمزية.
-G NUM
ضع تعريفات للبيانات المرئية خارجيًا في قسم بيانات صغير إذا كانت تلك البيانات لا
أكبر من NUM بايت. يمكن لمجلس التعاون الخليجي بعد ذلك إنشاء وصول أكثر كفاءة إلى البيانات ؛ ارى
-Mgpopt للتفاصيل.
الافتراضي -G الخيار يعتمد على التكوين.
-ملل- sdata
-mno-local-sdata
تمديد (لا تمدد) -G السلوك على البيانات المحلية أيضًا ، مثل المتغيرات الثابتة
في C. -ملل- sdata هو الإعداد الافتراضي لجميع التكوينات.
إذا اشتكى الرابط من أن أحد التطبيقات يستخدم الكثير من البيانات الصغيرة ، فيمكنك القيام بذلك
تريد محاولة إعادة بناء الأجزاء الأقل أهمية في الأداء باستخدام -mno-local-sdata. أنت
قد ترغب أيضًا في إنشاء مكتبات كبيرة باستخدام -mno-local-sdata، بحيث المكتبات
اترك مساحة أكبر للبرنامج الرئيسي.
-الخارج- sdata
-mno-sdata الخارجية
افترض (لا تفترض) أن البيانات المحددة خارجيًا موجودة في قسم بيانات صغير إذا كان
حجم تلك البيانات ضمن -G الحد. -الخارج- sdata هو الافتراضي للجميع
تكوينات.
إذا قمت بتجميع وحدة طريق مع -الخارج- sdata -G NUM -Mgpoptو طريق المراجع أ
متغير فار هذا ليس أكبر من NUM بايت ، يجب عليك التأكد من ذلك فار وضعت
في قسم بيانات صغير. لو فار تم تعريفه بواسطة وحدة نمطية أخرى ، يجب عليك إما ترجمة
هذه الوحدة مع عالية بما فيه الكفاية -G تعيين أو إرفاق سمة "قسم" بـ فار's
تعريف. لو فار أمر شائع ، يجب عليك ربط التطبيق بدرجة عالية بما فيه الكفاية -G
الإعداد.
أسهل طريقة لتلبية هذه القيود هي تجميع كل وحدة وربطها
مع نفس الشيء -G اختيار. ومع ذلك ، قد ترغب في إنشاء مكتبة تدعم ملفات
عدة حدود بيانات صغيرة مختلفة. يمكنك القيام بذلك عن طريق تجميع المكتبة باستخدام ملفات
أعلى دعم -G وضع بالإضافة إلى استخدام -mno-sdata الخارجية لوقف
مكتبة من وضع افتراضات حول البيانات المحددة خارجيًا.
-Mgpopt
-mno- gpopt
استخدم (لا تستخدم) عمليات الوصول المرتبطة بـ GP للرموز المعروف أنها موجودة في بيانات صغيرة
الجزء؛ ارى -G, -ملل- sdata -الخارج- sdata. -Mgpopt هو الافتراضي للجميع
تكوينات.
-mno- gpopt مفيد للحالات التي قد لا يحمل فيها سجل gp $ قيمة
"_gp". على سبيل المثال ، إذا كان الرمز جزءًا من مكتبة يمكن استخدامه في التمهيد
الشاشة ، تقوم البرامج التي تستدعي إجراءات مراقبة التمهيد بتمرير قيمة غير معروفة في $ gp. (في
مثل هذه الحالات ، عادةً ما يتم تجميع شاشة التمهيد نفسها مع -g0.)
-mno- gpopt يدل -mno-local-sdata -mno-sdata الخارجية.
- البيانات المدمجة
-رقم-مضمنة-البيانات
قم بتخصيص المتغيرات لقسم البيانات للقراءة فقط أولاً إن أمكن ، ثم بعد ذلك في ملف
قسم البيانات الصغيرة إن أمكن ، وإلا في البيانات. هذا يعطي رمز أبطأ قليلا
من الافتراضي ، ولكنه يقلل من مقدار ذاكرة الوصول العشوائي المطلوبة عند التنفيذ ، وبالتالي قد
تكون مفضلة لبعض الأنظمة المضمنة.
- moninit-const-in-rodata
-mno-uninit-const-in-rodata
ضع متغيرات "const" غير المهيأة في قسم البيانات للقراءة فقط. هذا الخيار هو
ذات مغزى فقط بالتزامن مع - البيانات المدمجة.
-الرمز المقروء =ضبط
حدد ما إذا كان بإمكان GCC إنشاء رمز يقرأ من الأقسام القابلة للتنفيذ. يوجد
ثلاثة إعدادات ممكنة:
-رمز قابل للقراءة = نعم
يمكن للتعليمات الوصول بحرية إلى الأقسام القابلة للتنفيذ. هذا هو الإعداد الافتراضي.
-الرمز المقروء = pcrel
يمكن لإرشادات التحميل المتعلقة بجهاز الكمبيوتر MIPS16 الوصول إلى الأقسام القابلة للتنفيذ ، ولكن يمكن الوصول إلى أقسام أخرى
التعليمات يجب ألا تفعل ذلك. هذا الخيار مفيد في معالجات 4KSc و 4KSd
عندما يكون رمز TLBs لديه مجموعة بت منع القراءة. كما أنه مفيد في المعالجات
يمكن تهيئتها بحيث تحتوي على واجهة SRAM مزدوجة التعليمات / البيانات وذلك ،
مثل M4K ، يعيد توجيه الأحمال المرتبطة بالكمبيوتر تلقائيًا إلى ذاكرة الوصول العشوائي للتعليمات.
-رمز قابل للقراءة = لا
التعليمات يجب ألا تصل إلى الأقسام القابلة للتنفيذ. يمكن أن يكون هذا الخيار مفيدًا في
الأهداف التي تم تكوينها بحيث تحتوي على واجهة SRAM مزدوجة التعليمات / البيانات ولكن
(على عكس M4K) لا تقوم تلقائيًا بإعادة توجيه الأحمال المرتبطة بالكمبيوتر الشخصي إلى ملف
تعليمات RAM.
-مقسمة-العناوين
-من-تقسيم العناوين
تمكين (تعطيل) استخدام عوامل إعادة تحديد موقع المجمّع "٪ hi ()" و "٪ lo ()". هذه
تم استبدال الخيار بـ -صريحة-ريوكس ولكن يتم الاحتفاظ بها للخلف
التوافق.
-صريحة-ريوكس
-منو-صريح-ريلوكس
استخدم (لا تستخدم) عوامل نقل المجمّع عند التعامل مع العناوين الرمزية.
البديل الذي اختاره -منو-صريح-ريلوكس، هو استخدام وحدات الماكرو المجمّع بدلاً من ذلك.
-صريحة-ريوكس هو الإعداد الافتراضي إذا تم تكوين GCC لاستخدام مجمع
يدعم نقل مشغلي.
-مراجعة-صفر-القسمة
- رقم الاختيار - صفر - القسمة
تراب (لا تحبس) عند قسمة عدد صحيح على صفر.
الافتراضي هو -مراجعة-صفر-القسمة.
- الفخاخ
-مقسمة-فواصل
تتحقق أنظمة MIPS من القسمة على صفر عن طريق إنشاء الملائمة الشرطية أو a
تعليمات كسر. ينتج عن استخدام الاعتراضات رمز أصغر ، ولكنه مدعوم فقط في MIPS
الثاني وما بعده. أيضًا ، تحتوي بعض إصدارات Linux kernel على خطأ يمنع المصيدة
من توليد الإشارة المناسبة ("SIGFPE"). يستخدم - الفخاخ للسماح الشرطي
الفخاخ على البنى التي تدعمها و -مقسمة-فواصل لفرض استخدام
فرامل.
الافتراضي هو عادة - الفخاخ، ولكن يمكن تجاوز هذا في وقت التكوين
استخدام - مع قسمة = فواصل. يمكن تعطيل عمليات تحقق القسمة على صفر تمامًا باستخدام
- رقم الاختيار - صفر - القسمة.
-ممبي
-منو- memcpy
فرض (لا تفرض) استخدام "memcpy" لتحركات الكتلة غير التافهة. الافتراضي هو
-منو- memcpy، والذي يسمح لـ GCC بتضمين معظم النسخ ذات الحجم الثابت.
- مكالمات طويلة
- مكالمات طويلة
تعطيل (لا تقم بتعطيل) استخدام تعليمات "jal". وظائف الاتصال باستخدام "jal"
أكثر كفاءة ولكنه يتطلب أن يكون المتصل والمستدعى بنفس سعة 256 ميجابايت
قطعة.
هذا الخيار ليس له أي تأثير على رمز طلب الشراء. الافتراضي هو - مكالمات طويلة.
-حمد
-منو-جنون
تمكين (تعطيل) استخدام تعليمات "mad" و "madu" و "mul" ، على النحو المنصوص عليه في
R4650 عيسى.
ميماد
-منو-عماد
تمكين (تعطيل) استخدام تعليمات الأعداد الصحيحة "madd" و "msub". الافتراضي هو
ميماد على البنيات التي تدعم "madd" و "msub" باستثناء 74k
حيث تم العثور على إنشاء رمز أبطأ.
-مفوس-ماد
-منو-تنصهر-ماد
تمكين (تعطيل) استخدام تعليمات مضاعفة وتراكم الفاصلة العائمة ، عندما تكون
تتوفر. الافتراضي هو -مفوس-ماد.
على وحدة المعالجة المركزية R8000 عند استخدام تعليمات التراكم المضاعف ، الوسيط
المنتج محسوب بدقة لا نهائية ولا يخضع لـ FCSR Flush لـ
بت الصفر. قد يكون هذا غير مرغوب فيه في بعض الظروف. على المعالجات الأخرى
النتيجة مطابقة عدديًا للحساب المكافئ باستخدام الضرب المنفصل ،
جمع وطرح ونفي التعليمات.
-nocpp
أخبر مجمّع MIPS بعدم تشغيل المعالج الأولي الخاص به على ملفات مجمّع المستخدم (بملحق
.s لاحقة) عند تجميعها.
- إصلاح - 24 كيلو
- رقم الإصلاح - 24 كيلو
قم بالتغلب على أخطاء 24K E48 (البيانات المفقودة في المتاجر أثناء إعادة التعبئة). الحلول
يتم تنفيذها من قبل المجمع وليس من قبل دول مجلس التعاون الخليجي.
- الإصلاح- r4000
-منو الإصلاح- r4000
العمل على حل بعض أخطاء وحدة المعالجة المركزية R4000:
- قد تؤدي الكلمة المزدوجة أو التحويل المتغير إلى نتيجة غير صحيحة إذا تم تنفيذها
مباشرة بعد بدء قسمة عدد صحيح.
- قد تؤدي الكلمة المزدوجة أو التحويل المتغير إلى نتيجة غير صحيحة إذا تم تنفيذها أثناء
جاري عملية ضرب عدد صحيح.
- قد تعطي القسمة الصحيحة نتيجة غير صحيحة إذا بدأت في فجوة تأخير من a
أخذ فرع أو قفزة.
- الإصلاح- r4400
-منو الإصلاح- r4400
العمل على حل بعض أخطاء وحدة المعالجة المركزية R4400:
- قد تؤدي الكلمة المزدوجة أو التحويل المتغير إلى نتيجة غير صحيحة إذا تم تنفيذها
مباشرة بعد بدء قسمة عدد صحيح.
- الإصلاح- r10000
-منو الإصلاح- r10000
حل بعض الأخطاء R10000:
- قد لا تتصرف التسلسلات "ll" / "sc" بشكل ذري عند التنقيحات السابقة للإصدار 3.0. انهم قد
طريق مسدود بشأن المراجعات 2.6 وما قبلها.
لا يمكن استخدام هذا الخيار إلا إذا كانت البنية الهدف تدعم احتمال الفروع
تعليمات. - الإصلاح- r10000 هو الافتراضي عندما - مارس = r10000 يستخدم ؛ -منو الإصلاح- r10000
هو الافتراضي خلاف ذلك.
-مفيكس- rm7000
-منو فيكس- rm7000
العمل حول أخطاء RM7000 "dmult" / "dmultu". يتم تنفيذ الحلول بواسطة
المجمع بدلا من دول مجلس التعاون الخليجي.
- الإصلاح- vr4120
-منو الإصلاح- vr4120
قم بالتغلب على بعض أخطاء VR4120:
- لا ينتج عن "dmultu" دائمًا النتيجة الصحيحة.
- لا ينتج عن "div" و "ddiv" دائمًا النتيجة الصحيحة إذا كان أحد المعاملين
سلبي.
تعتمد الحلول البديلة لأخطاء القسمة على وظائف خاصة في libgcc.a. في
في الوقت الحاضر ، يتم توفير هذه الوظائف فقط من خلال تكوينات "mips64vr * -elf".
تتطلب أخطاء VR4120 الأخرى إدراج NOP بين أزواج معينة من
تعليمات. يتم التعامل مع هذه الأخطاء من قبل المجمع ، وليس من قبل مجلس التعاون الخليجي نفسه.
- الإصلاح- vr4130
قم بالتغلب على أخطاء VR4130 "mflo" / "mfhi". يتم تنفيذ الحلول بواسطة
المجمع بدلاً من دول مجلس التعاون الخليجي ، على الرغم من أن دول مجلس التعاون الخليجي تتجنب استخدام "mflo" و "mfhi" إذا كان
تتوفر إرشادات VR4130 "macc" و "macchi" و "dmacc" و "dmacchi" بدلاً من ذلك.
-إصلاح- sb1
-منو الإصلاح- sb1
التغلب على أخطاء أساسية معينة لوحدة المعالجة المركزية SB-1. (تعمل هذه العلامة حاليًا حول SB-1
المراجعة 2 أخطاء الفاصلة العائمة "F1" و "F2".)
-mr10k-cache-barrier =ضبط
حدد ما إذا كان يجب على GCC إدراج حواجز ذاكرة التخزين المؤقت لتجنب الآثار الجانبية لـ
تكهنات على معالجات R10K.
كما هو الحال مع العديد من المعالجات ، يحاول R10K التنبؤ بنتيجة الشرطي
فرع ويقوم بتنفيذ التعليمات التخمينية من الفرع "المأخوذ". لاحقا
يلغي هذه التعليمات إذا كانت النتيجة المتوقعة خاطئة. ومع ذلك ، في R10K ،
حتى التعليمات المجهضة يمكن أن يكون لها آثار جانبية.
تؤثر هذه المشكلة فقط على مخازن kernel ، وبناءً على النظام ، تؤثر أحمال kernel.
على سبيل المثال ، قد يقوم المتجر الذي يتم تنفيذه بالمضاربة بتحميل الذاكرة الهدف في ذاكرة التخزين المؤقت
وقم بتمييز خط ذاكرة التخزين المؤقت على أنه متسخ ، حتى إذا تم إحباط المتجر نفسه لاحقًا. إذا كان DMA
تكتب العملية إلى نفس منطقة الذاكرة قبل مسح الخط "المتسخ" ، فإن
تستبدل البيانات المخزنة مؤقتًا بيانات DMA المحرر. راجع دليل المعالج R10K للحصول على معلومات كاملة
الوصف ، بما في ذلك المشاكل المحتملة الأخرى.
يتمثل أحد الحلول البديلة في إدراج إرشادات حاجز ذاكرة التخزين المؤقت قبل وصول كل ذاكرة إلى ذلك
قد يتم تنفيذه بشكل تخميني وقد يكون لذلك آثار جانبية حتى لو تم إجهاضه.
-mr10k-cache-barrier =ضبط يتحكم في تطبيق GCC لهذا الحل البديل. هو - هي
يفترض أن الوصول المجهض إلى أي بايت في المناطق التالية ليس له جانب
تأثيرات:
1. الذاكرة التي يشغلها إطار مكدس الوظيفة الحالية ؛
2. الذاكرة التي تحتلها وسيطة مكدس واردة ؛
3. الذاكرة التي يشغلها كائن بعنوان ارتباط - وقت - ثابت.
تقع على عاتق النواة مسؤولية ضمان وصول المضاربة إلى هذه المناطق
هي بالفعل آمنة.
إذا كان برنامج الإدخال يحتوي على إعلان دالة مثل:
باطل فو (باطل) ؛
عندها يجب أن يسمح تنفيذ "foo" بتنفيذ "j foo" و "jal foo"
تخميني. يكرم مجلس التعاون الخليجي هذا التقييد للوظائف التي تجمعها بنفسها. هو - هي
تتوقع وظائف غير دول مجلس التعاون الخليجي (مثل رمز التجميع المكتوب بخط اليد) للقيام بنفس الشيء.
الخيار له ثلاثة أشكال:
-mr10k-cache-barrier = تحميل مخزن
أدخل حاجز ذاكرة التخزين المؤقت قبل التحميل أو المتجر الذي قد يتم تنفيذه بشكل تخميني
وقد يكون لذلك آثار جانبية حتى لو تم إجهاضها.
-mr10k-cache-barrier = مخزن
أدخل حاجز ذاكرة التخزين المؤقت قبل المتجر الذي قد يتم تنفيذه بشكل تخميني و
التي قد يكون لها آثار جانبية حتى لو تم إجهاضها.
-mr10k-cache-barrier = لا شيء
تعطيل إدراج حواجز ذاكرة التخزين المؤقت. هذا هو الإعداد الافتراضي.
-mflush- func =ظائفها
-منو-دافق- func
تحدد الوظيفة التي يجب الاتصال بها لمسح ذاكرتي التخزين المؤقت I و D ، أو عدم استدعاء أي منها
وظيفة. إذا تم استدعاؤها ، يجب أن تأخذ الوظيفة نفس الوسيطات مثل العامل المشترك
"_flush_func" ، أي عنوان نطاق الذاكرة الذي يتم تخزين ذاكرة التخزين المؤقت له
مسح ، حجم نطاق الذاكرة ، والرقم 3 (لمسح كلا ذاكرتي التخزين المؤقت). ال
يعتمد الإعداد الافتراضي على الهدف الذي تم تكوين GCC من أجله ، ولكن عادةً ما يكون كذلك
"_flush_func" أو "__cpu_flush".
تكلفة mbranch =NUM
اضبط تكلفة الفروع على تقريبًا NUM تعليمات "بسيطة". هذه التكلفة ليست سوى
إرشادي وليس مضمونًا لتحقيق نتائج متسقة عبر الإصدارات. صفر
تحدد التكلفة بشكل متكرر الإعداد الافتراضي ، والذي يعتمد على -متوني الإعداد.
-من المحتمل
-من-فرع-مرجح
تمكين أو تعطيل استخدام تعليمات Branch Likely ، بغض النظر عن الإعداد الافتراضي لـ
العمارة المختارة. بشكل افتراضي ، قد يتم إنشاء تعليمات الفرع المحتمل إذا
أنها مدعومة من قبل العمارة المختارة. استثناء هو MIPS32 و
بنيات ومعالجات MIPS64 التي تنفذ تلك البنى ؛ لأولئك،
لا يتم إنشاء إرشادات الفرع المحتمل بشكل افتراضي لأن MIPS32 و
أبنية MIPS64 تستبعد استخدامها على وجه التحديد.
-mfp- استثناءات
-mno-fp- الاستثناءات
يحدد ما إذا كانت استثناءات FP ممكنة أم لا. هذا يؤثر على كيفية تعليمات FP
مجدولة لبعض المعالجات. الإعداد الافتراضي هو تمكين استثناءات FP.
على سبيل المثال ، في SB-1 ، إذا تم تعطيل استثناءات FP ، ونصدر 64 بت
رمز ، ثم يمكننا استخدام كل من أنابيب FP. خلاف ذلك ، لا يمكننا استخدام سوى أنبوب FP واحد.
-mvr4130- محاذاة
-mno- vr4130- محاذاة
إن خط أنابيب VR4130 عبارة عن خط أنابيب فائق السقوط ثنائي الاتجاه ، ولكن يمكنه إصدار تعليماتين فقط
معًا إذا كانت المحاذاة الأولى 8 بايت. عند تمكين هذا الخيار ، تتم محاذاة GCC
أزواج من التعليمات التي يعتقد أنه يجب تنفيذها بالتوازي.
هذا الخيار له تأثير فقط عند تحسين VR4130. عادة ما يصنع الكود
أسرع ، ولكن على حساب تكبيرها. يتم تمكينه افتراضيًا في
مستوى التحسين -O3.
-مسينسي
-منو- synci
تمكين (تعطيل) إنشاء إرشادات "synci" حول البنى التي تدعمها.
يتم إنشاء إرشادات "synci" (إذا تم تمكينها) عندما يكون "__builtin___clear_cache"
تجميع وانتاج.
يتم تعيين هذا الخيار افتراضيًا على -منو- synci، ولكن يمكن تجاوز الإعداد الافتراضي عن طريق التكوين
دول مجلس التعاون الخليجي مع --مع- synci.
عند تجميع التعليمات البرمجية لأنظمة معالج واحد ، من الآمن بشكل عام استخدام "synci".
ومع ذلك ، في العديد من الأنظمة متعددة النواة (SMP) ، فإنه لا يبطل التعليمات
مخبأ في جميع النوى وقد يؤدي إلى سلوك غير محدد.
- مكالمات -mrelax-pic
-منو-الاسترخاء- مكالمات الموافقة المسبقة عن علم
حاول تحويل مكالمات PIC التي يتم إرسالها عادةً عبر تسجيل 25 دولارًا إلى مكالمات مباشرة.
هذا ممكن فقط إذا كان الرابط يمكنه حل الوجهة في وقت الارتباط وإذا
أن تكون الوجهة ضمن النطاق لإجراء مكالمة مباشرة.
- مكالمات -mrelax-pic هو الإعداد الافتراضي إذا تم تكوين GCC لاستخدام مُجمّع وملف
رابط يدعم توجيه التجميع ".reloc" و -صريحة-ريوكس في
تأثير. مع -منو-صريح-ريلوكس، يمكن إجراء هذا التحسين بواسطة
المجمع والرابط وحده دون مساعدة من المترجم.
-mmcount- را- العنوان
-mno-mcount-ra-address
انبعث (لا ترسل) رمز يسمح لـ "_mcount" بتعديل إرجاع وظيفة الاستدعاء
عنوان. عند التمكين ، يعمل هذا الخيار على توسيع واجهة "_mcount" المعتادة بواجهة
RA- العنوان المعلمة ، من النوع "intptr_t *" ويتم تمريرها في السجل $ 12.
عندئذٍ يمكن لـ "_mcount" تعديل عنوان المرسل من خلال تنفيذ كلا الإجراءين التاليين:
* إعادة العنوان الجديد في التسجيل $ 31.
* تخزين العنوان الجديد في "*ra-address "، إذا RA- العنوان هو nonnull.
الافتراضي هو -mno-mcount-ra-address.
MMIX مزيد من الخيارات
يتم تحديد هذه الخيارات لـ MMIX:
- مليبفونكس
-منو-ليبفونكس
حدد أن وظائف المكتبة الجوهرية يتم تجميعها ، وتمرير جميع القيم فيها
السجلات مهما كان حجمها.
-مبسيلون
-منو إبسيلون
إنشاء تعليمات مقارنة الفاصلة العائمة التي تقارن فيما يتعلق بـ "rE"
سجل إبسيلون.
-مابي = mmixware
-مابي = جنو
قم بإنشاء التعليمات البرمجية التي تمرر معلمات الوظيفة وإرجاع القيم التي (في ملف
الدالة) على أنها مسجلات $ 0 وما فوق ، على عكس GNU ABI الذي يستخدم global
يسجل 231 دولار وما فوق.
- تمديد صفري
-متداد الصفر
عند قراءة البيانات من الذاكرة بأحجام أقصر من 64 بت ، استخدم (لا تستخدم) صفر-
تمديد تعليمات التحميل بشكل افتراضي ، بدلاً من تمديد التوقيع.
-مكنوتديف
-منو-كنوثديف
اجعل نتيجة القسمة التي ينتج عنها الباقي لها نفس علامة المقسوم عليه.
مع الافتراضي ، -منو-كنوثديف، علامة الباقي تتبع علامة
توزيعات ارباح. كلتا الطريقتين صحيحتان من الناحية الحسابية ، والأخيرة تكاد تكون حصرية
مستخدم.
رموز -mtoplevel
رموز -mno-toplevel
ضع مسبقًا (لا تضيف مسبقًا) أ : لجميع الرموز العالمية ، لذلك يمكن استخدام رمز التجميع
مع توجيه التجميع "PREFIX".
-نفس
قم بإنشاء ملف تنفيذي بتنسيق ELF ، بدلاً من الافتراضي MMO التنسيق المستخدم من قبل
ال مميكس جهاز محاكاة.
-متشروع- توقع
-منو- فرع- توقع
استخدم (لا تستخدم) إرشادات الفرع المحتمل ، عند التنبؤ بالفرع الثابت
يشير إلى فرع محتمل.
-عناوين القاعدة
-رقم-قاعدة-عناوين
توليد (لا تنشئ) الكود الذي يستخدم قاعدة عناوين. استخدام عنوان أساسي
يقوم تلقائيًا بإنشاء طلب (تتم معالجته بواسطة المجمّع والرابط) لملف
ثابت ليتم إعداده في سجل عالمي. يستخدم السجل لقاعدة واحدة أو أكثر
طلبات العنوان ضمن النطاق من 0 إلى 255 من القيمة المحتفظ بها في السجل. ال
يؤدي بشكل عام إلى رمز قصير وسريع ، ولكن عدد عناصر البيانات المختلفة التي
يمكن معالجتها محدودة. هذا يعني أن البرنامج يستخدم الكثير من البيانات الثابتة
قد يستلزم -رقم-قاعدة-عناوين.
-مخرج واحد
-من-خروج واحد
فرض (لا تفرض) الكود الذي تم إنشاؤه للحصول على نقطة خروج واحدة في كل وظيفة.
MN10300 مزيد من الخيارات
تشبه -m تم تحديد الخيارات لهياكل Matsushita MN10300:
-ممت-علة
قم بإنشاء رمز لتجنب الأخطاء في تعليمات المضاعفة الخاصة بمعالجات MN10300.
هذا هو الافتراضي.
-من-متعدد-علة
لا تقم بإنشاء رمز لتجنب الخلل في تعليمات الضرب لـ MN10300
معالجات.
-مام 33
قم بإنشاء رمز باستخدام ميزات خاصة بمعالج AM33.
-منو- am33
لا تقم بإنشاء رمز باستخدام ميزات خاصة بمعالج AM33. هذا ال
افتراضي.
-مام 33-2
قم بإنشاء التعليمات البرمجية باستخدام ميزات خاصة بمعالج AM33 / 2.0.
-مام 34
قم بإنشاء رمز باستخدام ميزات خاصة بمعالج AM34.
-mtune =نوع وحدة المعالجة المركزية
استخدم خصائص التوقيت لنوع وحدة المعالجة المركزية المشار إليها عند تعليمات الجدولة.
هذا لا يغير نوع المعالج المستهدف. يجب أن يكون نوع وحدة المعالجة المركزية واحدًا من
mn10300, am33, صباحا33-2 or am34.
-الرجوع-المؤشر- على- d0
عند إنشاء دالة تُرجع مؤشرًا ، قم بإرجاع المؤشر في كل من "a0" و
"d0". خلاف ذلك ، يتم إرجاع المؤشر في "a0" فقط ، ويحاول استدعاء هذا
وظائف بدون نموذج أولي ينتج عنها أخطاء. لاحظ أن هذا الخيار قيد التشغيل بواسطة
إفتراضي؛ استعمال -رقم-مؤشر-العودة-على-d0 لتعطيله.
-منو- crt0
لا تقم بالربط في ملف كائن التهيئة وقت التشغيل C.
-استراحة
وضح للرابط أنه يجب أن يقوم بتمرير تحسين الاسترخاء إلى
تقصير الفروع والمكالمات وعناوين الذاكرة المطلقة. هذا الخيار له تأثير فقط
عند استخدامها في سطر الأوامر لخطوة الارتباط النهائية.
هذا الخيار يجعل التصحيح الرمزي مستحيلاً.
-مليو
اسمح للمترجم بإنشاء ملفات طويل تعليمات كلمة التعليمات إذا كان الهدف هو
AM33 أو لاحقا. هذا هو الافتراضي. يحدد هذا الخيار ماكرو المعالج المسبق
"__LIW__".
-منوليو
لا تسمح للمترجم بإنشاء ملفات طويل تعليمات كلمة تعليمات. هذا الخيار
يعرّف ماكرو المعالج المسبق "__NO_LIW__".
-مستلب
اسمح للمترجم بإنشاء ملف SETLB LCC التعليمات إذا كان الهدف هو
AM33 أو لاحقا. هذا هو الافتراضي. يحدد هذا الخيار ماكرو المعالج المسبق
"__SETLB__".
-منوسيتلب
لا تسمح للمترجم بإنشاء ملفات SETLB or LCC تعليمات. يحدد هذا الخيار
ماكرو المعالج المسبق "__NO_SETLB__".
موشي مزيد من الخيارات
-meb
إنشاء رمز كبير Endian. هذا هو الإعداد الافتراضي لـ moxie - * - * تكوينات.
-ميل
قم بتوليد كود صغير.
-mmul.x
إنشاء تعليمات mul.x و umul.x. هذا هو الإعداد الافتراضي لـ moxiebox - * - *
تكوينات.
-منو- crt0
لا تقم بالربط في ملف كائن التهيئة وقت التشغيل C.
MSP430 مزيد من الخيارات
تم تحديد هذه الخيارات لـ MSP430:
-الصم-عرافة
إجبار إخراج التجميع على استخدام الثوابت السداسية. عادة يتم توقيع هذه الثوابت
الكسور العشرية ، ولكن هذا الخيار متاح للاختبار الفردي و / أو للأغراض الجمالية.
-mmcu =
حدد MCU لاستهدافها. يستخدم هذا لإنشاء رمز المعالج الأولي C بناءً على
اسم MCU ، تم تحويله إلى أحرف كبيرة وتم إصلاحه مسبقًا وبعده بامتداد __. هذا بدوره
يستخدم من قبل مللي sp430.h header لتحديد رأس تكميلي خاص بـ MCU
ملف.
يقوم الخيار أيضًا بتعيين ISA للاستخدام. إذا كان اسم MCU معروفًا فقط
دعم 430 ISA ثم الذي تم تحديده ، وإلا يتم تحديد 430X ISA. أ
اسم MCU العام لـ مللي اسب 430 يمكن أيضا أن تستخدم لتحديد 430 ISA. وبالمثل
عام مللي sp 430x يحدد اسم MCU 430X ISA.
بالإضافة إلى ذلك ، تتم إضافة برنامج نصي رابط خاص بـ MCU إلى سطر أوامر الرابط. ال
اسم البرنامج النصي هو اسم MCU مع .لد ملحق. وبالتالي تحديد -mmcu = xxx on
ال دول مجلس التعاون الخليجي يحدد سطر الأوامر رمز المعالج الأولي C "__XXX__" ويسبب الرابط
للبحث عن برنامج نصي يسمى xxx.ld.
يتم تمرير هذا الخيار أيضًا إلى المُجمِّع.
-mcpu =
تحدد ISA المطلوب استخدامها. القيم المقبولة مللي اسب 430, مللي sp 430x msp430xv2. هذا
تم إهمال الخيار. ال -mmcu = يجب استخدام الخيار لتحديد ISA.
-مسيم
الارتباط بمكتبات وقت تشغيل المحاكاة والبرامج النصية للرابط. يتجاوز أي نصوص
سيتم اختياره من قبل -mmcu = الخيار.
-كبير
استخدم عنونة النماذج الكبيرة (مؤشرات 20 بت ، "size_t" 32 بت).
صغير
استخدم عنونة النماذج الصغيرة (مؤشرات 16 بت ، "size_t" 16 بت).
-استراحة
يتم تمرير هذا الخيار إلى المجمّع والرابط ، ويسمح للرابط بالعمل
بعض التحسينات التي لا يمكن القيام بها حتى الارتباط النهائي.
مومولت =
يصف نوع الأجهزة المضاعفة التي يدعمها الهدف. القيم المقبولة
لا شيء لعدم مضاعفة الأجهزة ، 16bit للمضاعفة الأصلية ذات 16 بت فقط المدعومة
بواسطة MCUs في وقت مبكر. 32bit لمضاعفة 16/32 بت التي تدعمها MCUs لاحقًا و f5series
لمضاعفة 16/32 بت التي تدعمها وحدات MCU من سلسلة F5. قيمة السيارات يمكن أيضا أن تكون
منح. يخبر هذا GCC باستنتاج دعم مضاعف الأجهزة بناءً على اسم MCU
المقدمة من قبل -ممكو اختيار. إذا كان الجواب لا -ممكو ثم يتم تحديد الخيار 32bit خردوات
مضاعفة الدعم يفترض. السيارات هو الإعداد الافتراضي.
عادةً ما يتم تنفيذ عمليات مضاعفة الأجهزة عن طريق استدعاء روتين المكتبة. هذا يحفظ
مسافة في الكود الذي تم إنشاؤه. عند التجميع في -O3 أو أعلى ولكن الأجهزة
يتم استدعاء المضاعف في السطر. هذا يجعل رمز أكبر ولكن أسرع.
تعمل إجراءات مضاعفة الأجهزة على تعطيل المقاطعات أثناء التشغيل واستعادة ملف
حالة المقاطعة السابقة عند الانتهاء. هذا يجعلها آمنة للاستخدام في الداخل
معالجات المقاطعة وكذلك في التعليمات البرمجية العادية.
مينرت
قم بتمكين استخدام الحد الأدنى من بيئة وقت التشغيل - لا توجد مُهيئات ثابتة أو
الصانعين. هذا مخصص للأجهزة ذات الذاكرة المحدودة. يتضمن المترجم ملفات
رموز خاصة في بعض الكائنات تخبر الرابط ووقت التشغيل بأجزاء الكود
مطلوبة.
NDS32 مزيد من الخيارات
يتم تحديد هذه الخيارات لتطبيقات NDS32:
-mbig-endian
توليد التعليمات البرمجية في وضع endian الكبير.
-ملل-endian
توليد التعليمات البرمجية في وضع endian الصغير.
-نقص-ريجس
استخدم سجلات المجموعة المصغرة لتخصيص السجل.
-mfull-regs
استخدم سجلات المجموعة الكاملة لتخصيص التسجيل.
-مكموف
إنشاء تعليمات النقل الشرطي.
-منو سموف
لا تقم بإنشاء تعليمات نقل مشروطة.
-mperf تحويلة
إنشاء تعليمات تمديد الأداء.
-mno-perf-ext
لا تقم بإنشاء تعليمات تمديد الأداء.
-mv3push
إنشاء تعليمات v3 push25 / pop25.
-منو- v3push
لا تقم بإنشاء تعليمات v3 push25 / pop25.
-m16 بت
قم بإنشاء تعليمات ذات 16 بت.
-رقم -16 بت
لا تقم بإنشاء تعليمات ذات 16 بت.
حجم متجه مصرNUM
حدد حجم كل متجه للمقاطعة ، والذي يجب أن يكون 4 أو 16.
-حجم كتلة-ذاكرة التخزين المؤقت =NUM
حدد حجم كل كتلة ذاكرة تخزين مؤقت ، والتي يجب أن تكون بقوة 2 بين 4 و 512.
- مسيرة =قوس
حدد اسم العمارة الهدف.
-mcmodel =نموذج رمز
اضبط نموذج الكود على واحد من
صغير
يجب أن تكون جميع أجزاء البيانات والبيانات للقراءة فقط في حدود مساحة العنونة 512 كيلوبايت.
يجب أن يكون مقطع النص ضمن مساحة العنونة 16 ميغا بايت.
متوسط
يجب أن يكون مقطع البيانات في نطاق 512 كيلو بايت بينما يمكن أن يكون مقطع البيانات للقراءة فقط
داخل مساحة عنونة 4 جيجا بايت. يجب أن يظل جزء النص ضمن حدود 16 ميغا بايت
معالجة الفضاء.
كبير
يمكن أن تكون جميع مقاطع النص والبيانات في حدود مساحة عنونة تبلغ 4 جيجابايت.
-ماكتور- dtor
تفعيل ميزة المُنشئ / التدمير.
-استراحة
دليل رابط لتخفيف التعليمات.
NIOS II مزيد من الخيارات
هذه هي الخيارات المحددة لمعالج Altera Nios II.
-G NUM
ضع كائنات عامة وثابتة أقل من أو تساوي NUM بايت في البيانات الصغيرة أو
أقسام BSS بدلاً من أقسام البيانات العادية أو أقسام BSS. القيمة الافتراضية لـ NUM is
8.
-Mgpopt =خيار
-Mgpopt
-mno- gpopt
إنشاء (لا تنشئ) عمليات الوصول إلى GP. الأتى خيار الأسماء
معروف:
لا شيء
لا تقم بإنشاء وصول نسبي لـ GP.
محلي
قم بإنشاء عمليات وصول ذات صلة بـ GP لكائنات البيانات الصغيرة غير الخارجية أو غير الخارجية
ضعيف. استخدم أيضًا العنونة النسبية لـ GP للكائنات التي تم عرضها بشكل صريح
يتم وضعها في قسم بيانات صغير عبر سمة "section".
شامل
أما بالنسبة لل محلي، ولكن أيضًا إنشاء عمليات وصول ذات صلة بـ GP لكائنات البيانات الصغيرة التي
خارجية أو ضعيفة. إذا كنت تستخدم هذا الخيار ، فيجب عليك التأكد من أن جميع أجزاء
يتم تجميع برنامجك (بما في ذلك المكتبات) بنفس الشيء -G الإعداد.
البيانات
توليد وصول نسبي GP لجميع كائنات البيانات في البرنامج. كما ترى
هذا الخيار ، يجب أن تتناسب البيانات الكاملة وأجزاء BSS لبرنامجك مع 64 كيلو بايت من
الذاكرة ويجب عليك استخدام برنامج نصي رابط مناسب لتخصيصها داخل نطاق
النطاق القابل للعنونة من المؤشر العالمي.
الكل قم بإنشاء عناوين متعلقة بـ GP لمؤشرات الوظائف بالإضافة إلى مؤشرات البيانات. لو
إذا كنت تستخدم هذا الخيار ، يجب أن يكون النص بأكمله والبيانات وأجزاء BSS لبرنامجك
يتناسب مع 64 كيلو بايت من الذاكرة ويجب عليك استخدام برنامج نصي رابط مناسب للتخصيص
لهم ضمن النطاق القابل للعنونة من المؤشر العالمي.
-Mgpopt ما يعادل -mgpopt = محليو -mno- gpopt ما يعادل -mgpopt = لا شيء.
الافتراضي هو -Mgpopt إلا عندما -fpic or -fPIC تم تحديده لتوليد الموضع-
كود مستقل. لاحظ أن Nios II ABI لا يسمح بالوصول النسبي لـ GP من
مكتبات مشتركة.
قد تحتاج إلى التحديد -mno- gpopt صراحة عند بناء البرامج التي تتضمن
كميات كبيرة من البيانات الصغيرة ، بما في ذلك أقسام بيانات GOT الكبيرة. في هذه الحالة ، فإن
قد لا يكون الإزاحة ذات 16 بت للعنونة النسبية لـ GP كبيرة بما يكفي للسماح بالوصول إلى
قسم البيانات الصغيرة بأكمله.
-ميل
-meb
قم بإنشاء رمز صغير (افتراضي) أو رمز كبير (تجريبي) ، على التوالي.
-mbypass- ذاكرة التخزين المؤقت
-رقم-تجاوز-مخبأ
فرض جميع تعليمات التحميل والتخزين لتجاوز ذاكرة التخزين المؤقت دائمًا باستخدام متغيرات الإدخال / الإخراج لـ
التعليمات. الافتراضي هو عدم تجاوز ذاكرة التخزين المؤقت.
-منو- مخبأ- متقلبة
- مخبأة متقلبة
يتجاوز الوصول إلى الذاكرة المتغيرة ذاكرة التخزين المؤقت باستخدام متغيرات الإدخال / الإخراج للحمل والتخزين
تعليمات. الافتراضي هو عدم تجاوز ذاكرة التخزين المؤقت.
-منو سريع- sw-div
- سريع- sw-div
لا تستخدم القسمة السريعة القائمة على الجدول للأعداد الصغيرة. الافتراضي هو استخدام الصيام
قسمة في -O3 و ما فوق.
-منو- hw- مول
-mhw- مول
-منو- hw- مولكس
-mhw- مولكس
-منو- hw-div
-mhw-شعبة
تمكين أو تعطيل إصدار تعليمات مجموعة "mul" و "mulx" و "div" من خلال ملف
مترجم. الإعداد الافتراضي هو إصدار "mul" وليس إرسال "div" و "mulx".
-مخصص-نزل=N
-منو- مخصص-نزل
كل -مخصص-نزل=N يتيح الخيار استخدام تعليمات مخصصة مع الترميز N متى
توليد التعليمات البرمجية التي تستخدم نزل. على سبيل المثال، -مخصص- فادس = 253 يولد العرف
التعليمة 253 لعمليات إضافة النقطة العائمة أحادية الدقة بدلاً من
السلوك الافتراضي لاستخدام مكالمة مكتبة.
القيم التالية لـ نزل مدعمون. ما لم يذكر خلاف ذلك ، النقطة العائمة
من المتوقع أن يتم تنفيذ العمليات باستخدام دلالات IEEE 754 العادية و
تتوافق مباشرة مع مشغلي C أو الوظائف المضمنة في دول مجلس التعاون الخليجي المكافئة.
النقطة العائمة أحادية الدقة:
البدع, com.fsubs, com.fdivs, com.fmuls
العمليات الحسابية الثنائية.
com.fnegs
نفي أحادي.
فابس
قيمة مطلقة أحادية.
com.fcmpeqs, com.fcmpges, fcmpgts, com.fcmples, com.fcmpts, com.fcmpnes
عمليات المقارنة.
fmins, com.fmaxs
الحد الأدنى والحد الأقصى للفاصلة العائمة. يتم إنشاء هذه التعليمات فقط إذا
- غير محدد - الرياضيات فقط محدد.
com.fsqrts
عملية الجذر التربيعي الأحادي.
com.fcoss, com.fsins, ftans, فاتان, com.fexps, جلود
دوال الفاصلة العائمة المثلثية والأسية. هذه التعليمات
ولدت فقط إذا -ممتعة-الرياضيات-التحسينات محدد أيضا.
نقطة عائمة مزدوجة الدقة:
فاد, com.fsubd, فديف, com.fmuld
العمليات الحسابية الثنائية.
com.fnegd
نفي أحادي.
com.fabsd
قيمة مطلقة أحادية.
fcmpeqd, fcmpged, fcmpgtd, com.fcmpled, fcmptd, com.fcmpned
عمليات المقارنة.
افندي, com.fmaxd
الحد الأدنى والأقصى للدقة المزدوجة. يتم إنشاء هذه التعليمات فقط إذا
- غير محدد - الرياضيات فقط محدد.
com.fsqrtd
عملية الجذر التربيعي الأحادي.
fcosd, fsind, قدم, فاتن, com.fexpd, جلد
الدوال المثلثية والأسية مزدوجة الدقة. هذه التعليمات
ولدت فقط إذا -ممتعة-الرياضيات-التحسينات محدد أيضا.
التحويلات:
com.fextsd
التحويل من الدقة الفردية إلى الدقة المزدوجة.
com.ftruncds
التحويل من الدقة المزدوجة إلى الدقة الفردية.
فيكسسي, فيكسسو, فيكسدي, فيكسدو
التحويل من النقطة العائمة إلى أنواع الأعداد الصحيحة الموقعة أو بدون إشارة ، باستخدام
اقتطاع نحو الصفر.
دائري
التحويل من نقطة عائمة أحادية الدقة إلى عدد صحيح بعلامة ، مع التقريب إلى
أقرب عدد صحيح ويربط بعيدًا عن الصفر. هذا يتوافق مع
وظيفة "__builtin_lroundf" عندما -fno-Math-Errno .
يطفو, تعويم, عائم, تعويم
التحويل من أنواع الأعداد الصحيحة التي تحمل إشارة أو بدون إشارة إلى أنواع الفاصلة العائمة.
بالإضافة إلى ذلك ، جميع إرشادات النقل التالية للسجلات الداخلية X و Y.
يجب توفيرها لاستخدام أي من تعليمات النقطة العائمة مزدوجة الدقة.
تتوقع التعليمات المخصصة التي تأخذ عاملي مصدر مزدوج الدقة الأول
المعامل في السجل 64 بت X. المعامل الآخر (أو المعامل الوحيد
العملية) لتعليمات حسابية مخصصة بأقل دلالة
نصف في سجل المصدر src1 والنصف الأهم في src2. عادة
تقوم التعليمات التي تقوم بإرجاع نتيجة ذات دقة مزدوجة بإرجاع أهم 32
بت في سجل الوجهة والنصف الآخر في سجل 32 بت Y. GCC
يقوم تلقائيًا بإنشاء تسلسلات التعليمات البرمجية اللازمة لكتابة السجل X و / أو القراءة
سجل Y عند استخدام تعليمات النقطة العائمة مزدوجة الدقة.
فوركس
كتابة src1 في النصف الأقل أهمية من X و src2 في أهم
نصف X.
صراع
كتابة src1 في Y.
com.frdxhi, com.frdxlo
اقرأ النصف الأكبر أو الأقل أهمية (على التوالي) من X واحفظه في دست.
frdy
اقرأ قيمة Y واحفظها في دست.
لاحظ أنه يمكنك الحصول على مزيد من التحكم المحلي في إنشاء مخصص Nios II
التعليمات باستخدام "الهدف (" مخصص-insn = N ")" و "target (" no-custom-insn ")"
سمات الوظيفة أو البراغمات.
-مخصص- fpu-cfg =الاسم
يتيح هذا الخيار مجموعة محددة مسبقًا ومسمية من ترميزات التعليمات المخصصة (راجع
-مخصص-نزل فوق). حاليًا ، يتم تحديد المجموعات التالية:
-مخصص- fpu-cfg = 60-1 يساوي: -مخصص- fmuls = 252 -مخصص- فادس = 253
-مخصص- fsubs = 254 - ثابت واحد - الدقة
-مخصص- fpu-cfg = 60-2 يساوي: -مخصص- fmuls = 252 -مخصص- فادس = 253
-مخصص- fsubs = 254 -مخصص- fdivs = 255 - ثابت واحد - الدقة
-مخصص- fpu-cfg = 72-3 يساوي: - تعويم مخصص = 243 -مخصص- fixsi = 244
- تعويم مخصص = 245 -مخصص- fcmpgts = 246 -مخصص- fcmples = 249 -مخصص- fcmpeqs = 250
-مخصص- fcmpnes = 251 -مخصص- fmuls = 252 -مخصص- فادس = 253 -مخصص- fsubs = 254
-مخصص- fdivs = 255 - ثابت واحد - الدقة
تعيينات التعليمات المخصصة التي قدمها الفرد -مخصص-نزل= تجاوز الخيارات
تلك التي قدمها -مخصص- fpu-cfg =، بغض النظر عن ترتيب الخيارات في
سطر الأوامر.
لاحظ أنه يمكنك الحصول على مزيد من التحكم المحلي في تحديد تكوين FPU بواسطة
باستخدام "target (" custom-fpu-cfg =اسم")" سمة وظيفية أو براغما.
هذه إضافية -m الخيارات متاحة لهدف Altera Nios II ELF (معدن مكشوف):
-مهال
الارتباط بـ HAL BSP. يؤدي هذا إلى منع الارتباط ببدء تشغيل C المقدم من دول مجلس التعاون الخليجي
ورمز الإنهاء ، وعادة ما يتم استخدامه بالتزامن مع -msys-crt0 = لتحديد
موقع رمز بدء التشغيل البديل الذي يوفره HAL BSP.
-مصغر
ارتباط بنسخة محدودة من مكتبة C ، -لصغيرة، بدلاً من Newlib.
-msys-crt0 =ملف البداية
ملف البداية هو اسم ملف startfile (crt0) لاستخدامه عند الارتباط. هذا الخيار
مفيد فقط بالتزامن مع -مهال.
-msys-lib =com.systemlib
com.systemlib هو اسم مكتبة المكتبة التي توفر مكالمات نظام منخفضة المستوى
مطلوب من قبل مكتبة C ، على سبيل المثال "اقرأ" و "كتابة". يستخدم هذا الخيار عادة ل
الارتباط بمكتبة مقدمة من HAL BSP.
NVIDIA PTX مزيد من الخيارات
تم تحديد هذه الخيارات لـ Nvidia PTX:
م 32
م 64
قم بإنشاء رمز لـ 32 بت أو 64 بت ABI.
-منكيرنيل
رابط في الكود لنواة __main. هذا من أجل قائمة بذاتها بدلاً من التفريغ
تنفيذ.
PDP-11 مزيد من الخيارات
يتم تحديد هذه الخيارات لـ PDP-11:
-مفبو
استخدم النقطة العائمة FPP للأجهزة. هذا هو الافتراضي. (النقطة العائمة FIS على
PDP-11/40 غير مدعوم.)
-مسنة- تعويم
لا تستخدم النقطة العائمة للأجهزة.
-ماك0
ينتج عن إرجاع الفاصلة العائمة ac0 (fr0 في صيغة مُجمّع Unix).
-منو- ac0
إرجاع النتائج العائمة في الذاكرة. هذا هو الافتراضي.
م 40
قم بإنشاء رمز لـ PDP-11/40.
م 45
قم بإنشاء رمز لـ PDP-11/45. هذا هو الافتراضي.
م 10
قم بإنشاء رمز لـ PDP-11/10.
-mbcopy- المدمج
استخدم أنماط "movmemhi" المضمنة لنسخ الذاكرة. هذا هو الافتراضي.
-mbcopy
لا تستخدم أنماط "movmemhi" المضمنة لنسخ الذاكرة.
النعناع 16
-mno- int32
استخدم 16 بت "int". هذا هو الافتراضي.
النعناع 32
-mno- int16
استخدم 32 بت "int".
- طفو 64
-منو-فلوت 32
استخدم 64 بت "عائم". هذا هو الافتراضي.
- طفو 32
-منو-فلوت 64
استخدم 32 بت "عائم".
-مبشي
استخدم نمط "abshi2". هذا هو الافتراضي.
-منو-أبشي
لا تستخدم نمط "abshi2".
- باهظة الثمن
افترض أن الفروع باهظة الثمن. هذا من أجل تجربة إنشاء الكود
فقط.
-رخيصة-فرانش
لا تتظاهر بأن الفروع باهظة الثمن. هذا هو الافتراضي.
-مونيكس- asm
استخدم صيغة مُجمّع يونكس. هذا هو الإعداد الافتراضي عند تكوينه من أجل pdp11 - * - bsd.
-Mdec- asm
استخدم بناء جملة DEC المجمع. هذا هو الإعداد الافتراضي عند تكوينه لأي هدف PDP-11
غير pdp11 - * - bsd.
بيكو تشيب مزيد من الخيارات
تشبه -m يتم تحديد الخيارات لتطبيقات picoChip:
-ماي =ae_type
قم بتعيين مجموعة التعليمات ، وتسجيل مجموعة ، ومعلمات جدولة التعليمات للمصفوفة
نوع العنصر ae_type. القيم المدعومة لـ ae_type . أي, MULو ماك.
-mae = أي يختار نوع AE عام بالكامل. يتم تشغيل التعليمات البرمجية التي تم إنشاؤها باستخدام هذا الخيار
على أي من أنواع AE الأخرى. الشفرة ليست فعالة كما لو تم تجميعها
بالنسبة لنوع AE معين ، وبعض أنواع العمليات (مثل الضرب) لا تعمل
بشكل صحيح على جميع أنواع AE.
-mae = MUL يختار نوع MUL AE. هذا هو نوع AE الأكثر فائدة للكود المترجم ،
وهو الافتراضي.
-mae = MAC يختار MAC AE بنمط DSP. قد يعاني الرمز المترجم مع هذا الخيار من
ضعف أداء معالجة البايت ، لأن DSP AE لا يوفر
دعم الأجهزة لتحميل بايت / مخازن.
-msymbol- كعنوان
تمكين المترجم من استخدام اسم رمز مباشرة كعنوان في تحميل / مخزن
التعليمات ، دون تحميلها أولاً في السجل. عادة ، استخدام هذا
الخيار ينشئ برامج أكبر ، والتي تعمل بشكل أسرع مما لو لم يتم استخدام الخيار.
ومع ذلك ، فإن النتائج تختلف من برنامج إلى آخر ، لذلك يتم تركها كخيار للمستخدم ،
بدلاً من تمكينه بشكل دائم.
- تحذيرات غير فعالة
تعطيل التحذيرات حول إنشاء كود غير فعال. يمكن أن تكون هذه التحذيرات
يتم إنشاؤه ، على سبيل المثال ، عند ترجمة التعليمات البرمجية التي تؤدي عمليات الذاكرة على مستوى البايت
على نوع MAC AE. لا يحتوي MAC AE على دعم أجهزة للذاكرة على مستوى البايت
العمليات ، لذلك يجب تصنيع كل تحميل / تخزين البايت من تحميل / تخزين الكلمات
عمليات. هذا غير فعال ويتم إنشاء تحذير للإشارة إلى أنك
يجب إعادة كتابة الكود لتجنب عمليات البايت ، أو لاستهداف نوع AE الذي يحتوي على الامتداد
دعم الأجهزة الضروري. يقوم هذا الخيار بتعطيل هذه التحذيرات.
باور مزيد من الخيارات
تم سرد هذه تحت
RL78 مزيد من الخيارات
-مسيم
روابط في مكتبات هدف إضافية لدعم العملية داخل جهاز محاكاة.
-mmul = لا شيء
-mmul = g13
-mmul = rl78
يحدد نوع دعم مضاعفة الأجهزة المراد استخدامه. الافتراضي هو
لا شيء، والذي يستخدم وظائف الضرب بالبرمجيات. ال g13 الخيار هو
مضاعفة / تقسيم الأجهزة الطرفية فقط على أهداف RL78 / G13. ال rl78 الخيار
لمضاعفة الأجهزة القياسية المحددة في دليل برنامج RL78.
-m64bit- يتضاعف
-m32bit- يتضاعف
اجعل نوع البيانات "مزدوج" 64 بت (-m64bit- يتضاعف) أو 32 بت (-m32bit- يتضاعف)
في الحجم. الافتراضي هو -m32bit- يتضاعف.
IBM RS / 6000 باور مزيد من الخيارات
تشبه -m يتم تحديد الخيارات لـ IBM RS / 6000 و PowerPC:
-مباويربك- gpopt
-mno-powerpc-gpopt
-مباويربك- gfxopt
-mno-powerpc-gfxopt
-محطة
-منو- powerpc64
-مفكرف
-منو- مفكرف
-mpopcntb
-منو- popcntb
-mpopcntd
-mno-popcntd
-مفبرند
-منو- فبرند
-مكمب
-منو- cmpb
-mmfpgpr
-منو- mfpgpr
-محارد- dfp
-من الصعب-dfp
يمكنك استخدام هذه الخيارات لتحديد التعليمات المتوفرة على المعالج
يستخدمون. يتم تحديد القيمة الافتراضية لهذه الخيارات عند تكوين GCC.
تحديد -mcpu =نوع_ وحدة المعالجة المركزية يتجاوز مواصفات هذه الخيارات. نحن
أوصيك باستخدام -mcpu =نوع_ وحدة المعالجة المركزية بدلاً من الخيارات المذكورة أعلاه.
تحديد -مباويربك- gpopt يسمح لـ GCC باستخدام بنية PowerPC الاختيارية
التعليمات في مجموعة الأغراض العامة ، بما في ذلك الجذر التربيعي للفاصلة العائمة.
تحديد -مباويربك- gfxopt يسمح لـ GCC باستخدام بنية PowerPC الاختيارية
الإرشادات الموجودة في مجموعة الرسومات ، بما في ذلك تحديد النقطة العائمة.
تشير -مفكرف يسمح الخيار GCC بإنشاء الانتقال من حقل تسجيل الحالة
التعليمات المطبقة على معالج POWER4 والمعالجات الأخرى التي تدعم
هندسة PowerPC V2.01. ال -mpopcntb يتيح الخيار لـ GCC إنشاء عدد popcount
وتعليمات تقدير متبادلة مزدوجة الدقة FP مطبقة على POWER5
المعالج والمعالجات الأخرى التي تدعم بنية PowerPC V2.02. ال
-mpopcntd يسمح الخيار لـ GCC بإنشاء تعليمات popcount المطبقة على
معالج POWER7 والمعالجات الأخرى التي تدعم بنية PowerPC V2.06.
تشير -مفبرند يسمح الخيار لـ GCC بإنشاء تعليمات FP من جولة إلى عدد صحيح
تم تنفيذه على معالج POWER5 + والمعالجات الأخرى التي تدعم PowerPC
العمارة V2.03. ال -مكمب يتيح الخيار لـ GCC إنشاء وحدات بايت المقارنة
التعليمات المطبقة على معالج POWER6 والمعالجات الأخرى التي تدعم
هندسة PowerPC V2.05. ال -mmfpgpr يسمح الخيار لـ GCC بإنشاء حركة FP
إلى / من تعليمات التسجيل للأغراض العامة المنفذة على معالج POWER6X و
معالجات أخرى تدعم بنية PowerPC V2.05 الموسعة. ال -محارد- dfp
يتيح الخيار لـ GCC إنشاء تعليمات الفاصلة العشرية المنفذة على
بعض معالجات الطاقة.
تشير -محطة يتيح الخيار لـ GCC إنشاء إرشادات 64 بت إضافية
تم العثور عليها في بنية PowerPC64 الكاملة ولمعاملة GPRs ككلمة مزدوجة 64 بت
كميات. افتراضيات GCC إلى -منو- powerpc64.
-mcpu =نوع_ وحدة المعالجة المركزية
قم بتعيين نوع البنية ، وتسجيل الاستخدام ، ومعلمات جدولة التعليمات لـ
نوع الجهاز نوع_ وحدة المعالجة المركزية. القيم المدعومة لـ نوع_ وحدة المعالجة المركزية . 401, 403, 405, 405fp, 440,
440fp, 464, 464fp, 476, 476fp, 505, 601, 602, 603, 603e, 604, 604e, 620, 630, 740,
7400, 7450, 750, 801, 821, 823, 860, 970, 8540, a2, e300c2, e300c3, e500mc, e500mc64,
e5500, e6500, ec603e, G3, G4, G5, عملاق, power3, power4, power5, قوة 5 +, power6,
القوة 6x, power7, power8, بوويرب, powerpc64, powerpc64leو rs64.
-mcpu = powerpc, -mcpu = powerpc64و -mcpu = powerpc64le تحديد نقي 32 بت PowerPC
(إما endian) ، PowerPC كبير بحجم 64 بت و PowerPC صغير 64 بت
أنواع آلات العمارة ، مع افتراض نموذج معالج عام مناسب
أغراض الجدولة.
تحدد الخيارات الأخرى معالجًا معينًا. تم إنشاء رمز في ظل هذه الخيارات
يعمل بشكل أفضل على هذا المعالج ، وقد لا يعمل على الإطلاق مع الآخرين.
تشير - وحدة المعالجة المركزية تعمل الخيارات تلقائيًا على تمكين أو تعطيل الخيارات التالية:
-مالتيفيك -مفبرند -مشدد-تعويم -مفكرف - متعدد -mpopcntb -mpopcntd -محطة
-مباويربك- gpopt -مباويربك- gfxopt - تعويم واحد - تعويم مزدوج -بسيط- fpu - الخيط
-ممولهو -مدلمذب -mmfpgpr -مفسكس -مشفرة - التحرك المباشر -8-الانصهار
-قوة 8-ناقلات - ذاكرة رباعية -كواد-ذاكرة-ذرية
تختلف الخيارات المحددة لأي وحدة معالجة مركزية معينة بين إصدارات المترجم ،
اعتمادًا على الإعداد الذي يبدو أنه ينتج الرمز الأمثل لوحدة المعالجة المركزية تلك ؛ لا
تعكس بالضرورة قدرات الأجهزة الفعلية. إذا كنت ترغب في تعيين ملف
خيار فردي لقيمة معينة ، يمكنك تحديده بعد - وحدة المعالجة المركزية اختيار،
مثل - وحدة المعالجة المركزية = 970 -منو-التيفيك.
في AIX ، يعد ملف -مالتيفيك -محطة لم يتم تمكين الخيارات أو تعطيلها بواسطة - وحدة المعالجة المركزية
الخيار في الوقت الحاضر لأن AIX ليس لديه دعم كامل لهذه الخيارات. يمكنك
لا يزال بإمكانك تمكينها أو تعطيلها بشكل فردي إذا كنت متأكدًا من أنها ستعمل في ملف
بيئة.
-mtune =نوع_ وحدة المعالجة المركزية
قم بتعيين معلمات جدولة التعليمات لنوع الجهاز نوع_ وحدة المعالجة المركزية، ولكن لا تحدد
نوع العمارة أو تسجيل الاستخدام ، مثل -mcpu =نوع_ وحدة المعالجة المركزية هل. نفس القيم ل
نوع_ وحدة المعالجة المركزية تستخدم ل -متوني أما بالنسبة لل - وحدة المعالجة المركزية. إذا تم تحديد كليهما ، يتم إنشاء الكود
يستخدم الهندسة المعمارية والسجلات التي حددها - وحدة المعالجة المركزية، ولكن تم تعيين معلمات الجدولة بواسطة
-متوني.
-mcmodel = صغير
إنشاء رمز PowerPC64 للنموذج الصغير: جدول المحتويات مقتصر على 64 كيلو.
-mcmodel = متوسط
إنشاء رمز PowerPC64 للطراز المتوسط: قد يكون جدول المحتويات والبيانات الثابتة الأخرى قيد التشغيل
إلى ما مجموعه 4G في الحجم.
-mcmodel = كبير
قم بإنشاء رمز PowerPC64 للطراز الكبير: قد يصل حجم TOC إلى 4G. آخر
البيانات والتعليمات البرمجية محدودة فقط بمساحة العنوان 64 بت.
-مالتيفيك
-منو-التيفيك
قم بإنشاء رمز يستخدم (لا يستخدم) تعليمات AltiVec ، وقم أيضًا بتمكين الاستخدام
من الوظائف المدمجة التي تسمح بالوصول المباشر بشكل أكبر إلى مجموعة تعليمات AltiVec.
قد تحتاج أيضًا إلى ضبط -مابي = التيفيك لضبط ABI الحالي باستخدام AltiVec ABI
التحسينات.
متى -مالتيفيك يستخدم بدلاً من -maltivec = جنيه or -maltivec = be، ترتيب العناصر
لمكونات Altivec مثل تطابق "vec_splat" و "vec_extract" و "vec_insert"
ترتيب عنصر المصفوفة المطابق لقيمة الهدف. هذا هو العنصر
يحدد الصفر العنصر الموجود في أقصى اليسار في سجل المتجه عند استهداف طرف كبير
النظام الأساسي ، ويحدد العنصر الموجود في أقصى اليمين في سجل المتجه عند استهداف ملف
منصة صغيرة.
-maltivec = be
قم بإنشاء تعليمات Altivec باستخدام ترتيب عناصر كبير ، بغض النظر عما إذا كان
الهدف كبير أو صغير. هذا هو الإعداد الافتراضي عند استهداف شخص كبير
.
يتم استخدام ترتيب العناصر لتفسير أرقام العناصر في جوهر Altivec مثل
"vec_splat" و "vec_extract" و "vec_insert". بشكل افتراضي ، تتطابق هذه العناصر مع عنصر المصفوفة
ترتيب يتوافق مع endianness للهدف.
-maltivec = جنيه
قم بإنشاء تعليمات Altivec باستخدام ترتيب العناصر الصغير ، بغض النظر عما إذا كان
الهدف كبير أو صغير. هذا هو الإعداد الافتراضي عند استهداف القليل
منصة Endian. يتم تجاهل هذا الخيار حاليًا عند استهداف شخص كبير
.
يتم استخدام ترتيب العناصر لتفسير أرقام العناصر في جوهر Altivec مثل
"vec_splat" و "vec_extract" و "vec_insert". بشكل افتراضي ، تتطابق هذه العناصر مع عنصر المصفوفة
ترتيب يتوافق مع endianness للهدف.
-mvrsave
-منو- فرسافي
قم بإنشاء تعليمات VRSAVE عند إنشاء كود AltiVec.
-mgen- الخلية- الرمز الصغير
إنشاء تعليمات الرمز الصغير للخلية.
-الرمز الصغير للخلية المحذرة
تحذير عند إصدار تعليمات الرمز الصغير للخلية. مثال على الرمز الصغير للخلية
التعليمات هي تحول متغير.
-msecure- PLT
توليد التعليمات البرمجية التي تسمح ld ld.so لبناء الملفات التنفيذية والمكتبات المشتركة مع
أقسام ".plt" و ".got" غير قابلة للتنفيذ. هذا هو خيار PowerPC SYSV ABI 32 بت.
-mbss- PLT
توليد التعليمات البرمجية التي تستخدم قسم ".plt" BSS الذي ld.so يملأ ويتطلب ".plt"
وأقسام ".got" القابلة للكتابة والتنفيذ. هذا هو PowerPC 32 بت
خيار SYSV ABI.
-مزيل
-منو-ايزيل
يمكّن رمز التبديل هذا أو يعطل إنشاء تعليمات ISEL.
-مزيل =نعم لا
تم إهمال رمز التبديل هذا. يستخدم -مزيل -منو-ايزيل بدلا من ذلك.
-مسب
-منو- spe
يتيح رمز التبديل هذا إنشاء تعليمات SPE simd أو يعطلها.
- معطلة
-رقم الاقتران
يمكّن هذا المفتاح أو يعطل إنشاء تعليمات simd PAIRED.
-mspe =نعم لا
تم إهمال هذا الخيار. يستخدم -مسب -منو- spe بدلا من ذلك.
-مفسكس
-منو- vsx
قم بإنشاء رمز يستخدم (لا يستخدم) تعليمات المتجه / العددية (VSX) ، وأيضًا
تمكين استخدام الوظائف المضمنة التي تتيح وصولاً مباشرًا إلى VSX
مجموعة التعليمات.
-مشفرة
-رقم التشفير
قم بتمكين استخدام (تعطيل) الوظائف المضمنة التي تسمح بالوصول المباشر إلى
إرشادات التشفير التي تمت إضافتها في الإصدار 2.07 من PowerPC ISA.
- التحرك المباشر
-لا تحرك مباشر
قم بإنشاء رمز يستخدم (لا يستخدم) الإرشادات لنقل البيانات بين ملفات
سجلات الأغراض العامة وسجلات المتجه / العددية (VSX) التي تمت إضافتها في
الإصدار 2.07 من PowerPC ISA.
-8-الانصهار
-من-الطاقة -8-الانصهار
قم بإنشاء رمز يحافظ على (لا يحتفظ) ببعض عمليات الأعداد الصحيحة المجاورة بحيث يكون ملف
يمكن دمج التعليمات معًا في المعالجات power8 والإصدارات الأحدث.
-قوة 8-ناقلات
-mno-power8- ناقلات
قم بإنشاء التعليمات البرمجية التي تستخدم (لا تستخدم) التعليمات الموجهة والحجمية التي كانت
تمت إضافته في الإصدار 2.07 من PowerPC ISA. قم أيضًا بتمكين استخدام الوظائف المضمنة
التي تتيح الوصول المباشر إلى إرشادات المتجه.
- ذاكرة رباعية
-لا ذاكرة رباعية
توليد التعليمات البرمجية التي تستخدم (لا تستخدم) تعليمات ذاكرة الكلمات الرباعية غير الذرية.
تشير - ذاكرة رباعية يتطلب الخيار استخدام وضع 64 بت.
-كواد-ذاكرة-ذرية
-رقم-رباعي-ذاكرة-ذرية
توليد التعليمات البرمجية التي تستخدم (لا تستخدم) تعليمات ذاكرة الكلمات الرباعية الذرية. ال
-كواد-ذاكرة-ذرية يتطلب الخيار استخدام وضع 64 بت.
-الجمعية- regs-df
-منو العلوي- ريجس- مدافع
قم بإنشاء رمز يستخدم (لا يستخدم) تعليمات الدقة المزدوجة العددية التي
استهداف كافة السجلات الـ 64 في مجموعة تسجيل الفاصلة العائمة / العددية التي كانت
تمت إضافته في الإصدار 2.06 من PowerPC ISA. -الجمعية- regs-df يتم تشغيله بشكل افتراضي إذا
يمكنك استخدام أي من -mcpu = power7, -mcpu = power8الطرق أو -مفسكس خيارات.
-الجمعية- regs-sf
-من-العلوي-ريجس- سادس
توليد التعليمات البرمجية التي تستخدم (لا تستخدم) التعليمات الدقيقة الفردية التي
استهداف كافة السجلات الـ 64 في مجموعة تسجيل الفاصلة العائمة / العددية التي كانت
تمت إضافته في الإصدار 2.07 من PowerPC ISA. -الجمعية- regs-sf يتم تشغيله بشكل افتراضي إذا
يمكنك استخدام أي من -mcpu = power8 or -قوة 8-ناقلات خيارات.
-مابر-ريجس
-من-العلوي-ريجس
قم بإنشاء رمز يستخدم (لا يستخدم) الإرشادات العددية التي تستهدف جميع الـ 64
السجلات في مجموعة تسجيل الفاصلة العائمة / العددية ، اعتمادًا على نموذج
الآلة.
إذا كان -من-العلوي-ريجس يستخدم الخيار ، فإنه يقوم بإيقاف تشغيل كليهما -الجمعية- regs-sf
-الجمعية- regs-df خيارات.
-mfloat-gprs =نعم / مفرد / مزدوج / لا
- طفو- gprs
يمكّن رمز التبديل هذا أو يعطل إنشاء عمليات الفاصلة العائمة على
سجلات الأغراض العامة للبنى التي تدعمها.
الحجة نعم فعلا or عزباء تمكن من استخدام النقطة العائمة أحادية الدقة
العمليات.
الحجة مضاعفة تمكن من استخدام نقطة عائمة مفردة ومزدوجة الدقة
العمليات.
الحجة لا تعطيل عمليات الفاصلة العائمة في سجلات الأغراض العامة.
هذا الخيار متاح حاليًا فقط في MPC854x.
م 32
م 64
قم بإنشاء رمز لبيئات 32 بت أو 64 بت لأهداف Darwin و SVR4 (بما في ذلك
جنو / لينكس). تقوم بيئة 32 بت بتعيين int و long ومؤشر إلى 32 بت و
يولد رمزًا يتم تشغيله على أي متغير من PowerPC. تعيين بيئة 64 بت int إلى
32 بت وطويل ومؤشر إلى 64 بت ، ويقوم بإنشاء رمز لـ PowerPC64 ، كما هو الحال بالنسبة لـ
-محطة.
-mfull-toc
-mno-fp-in-toc
-من-مجموع-في-توك
- الحد الأدنى - توك
تعديل إنشاء جدول المحتويات TOC (جدول المحتويات) ، والذي يتم إنشاؤه لكل ملف
ملف تنفيذي. ال -mfull-toc يتم تحديد الخيار افتراضيًا. في هذه الحالة ، دول مجلس التعاون الخليجي
يخصص إدخال جدول محتويات واحد على الأقل لكل مرجع متغير فريد غير تلقائي في
برنامجك. يضع مجلس التعاون الخليجي أيضًا ثوابت الفاصلة العائمة في جدول المحتويات. ومع ذلك ، فقط
تتوفر 16,384 إدخالاً في جدول المحتويات.
إذا تلقيت رسالة خطأ رابط تفيد بأنك قد تجاوزت مساحة
مساحة TOC ، يمكنك تقليل مقدار مساحة TOC المستخدمة مع ملف -mno-fp-in-toc
-من-مجموع-في-توك خيارات. -mno-fp-in-toc يمنع دول مجلس التعاون الخليجي من وضع الفاصلة العائمة
الثوابت في جدول المحتويات و -من-مجموع-في-توك يفرض GCC على إنشاء رمز لحساب
مجموع العنوان والثابت في وقت التشغيل بدلاً من وضع هذا المبلغ في جدول المحتويات.
يمكنك تحديد أحد هذين الخيارين أو كليهما. كل يتسبب في دول مجلس التعاون الخليجي لإنتاج جدا
رمز أبطأ وأكبر قليلاً على حساب الحفاظ على مساحة TOC.
إذا استمرت المساحة في النفاد في جدول المحتويات حتى عند تحديد كلا الخيارين ،
تحديد - الحد الأدنى - توك في حين أن. يؤدي هذا الخيار إلى قيام GCC بعمل إدخال واحد فقط لجدول المحتويات
كل ملف. عند تحديد هذا الخيار ، ينتج GCC رمزًا أبطأ وأكبر
ولكنه يستخدم مساحة صغيرة جدًا من الكربون العضوي الكلي. قد ترغب في استخدام هذا الخيار فقط في
الملفات التي تحتوي على تعليمات برمجية يتم تنفيذها بشكل أقل تكرارًا.
-مايكس 64
-مايكس 32
تمكين AIX ABI 64 بت واصطلاح الاستدعاء: مؤشرات 64 بت ونوع "طويل" 64 بت و
البنية التحتية اللازمة لدعمهم. التحديد -مايكس 64 يدل -محطة,
في حين -مايكس 32 يعطل 64 بت ABI ويشير إلى -منو- powerpc64. افتراضيات GCC إلى
-مايكس 32.
-mxl- التوافق
-mno-xl- متوافق
قم بإنتاج رمز يتوافق بشكل وثيق مع دلالات المترجم IBM XL عند استخدام AIX-
متوافق مع ABI. قم بتمرير وسيطات الفاصلة العائمة إلى دوال نموذجية خارج نطاق
تسجيل منطقة الحفظ (RSA) على المكدس بالإضافة إلى وسيطة FPRs. لا تفترض
يتم تقريب هذا الضعف الأكثر أهمية في قيمة مزدوجة طويلة 128 بت بشكل صحيح عندما
مقارنة القيم والتحويل إلى ضعف. استخدم أسماء رموز XL للمضاعفة الطويلة
إجراءات الدعم.
تم تمديد اصطلاح استدعاء AIX ولكن لم يتم توثيقه في البداية للتعامل مع ملف
حالة K&R C الغامضة لاستدعاء دالة تأخذ عنوان وسيطاتها مع
حجج أقل مما هو معلن. مترجمي IBM XL يصلون إلى وسيطات الفاصلة العائمة التي
لا تتناسب مع RSA من المكدس عند تجميع روتين فرعي بدون
الاقوي. لأن تخزين وسيطات الفاصلة العائمة على المكدس دائمًا هو
غير فعال ونادرًا ما تكون هناك حاجة إليه ، لا يتم تمكين هذا الخيار افتراضيًا وهو فقط
ضروري عند استدعاء الإجراءات الفرعية التي تم تجميعها بواسطة مترجمي IBM XL بدون تحسين.
-Mpe
الدعم الفني IBM RS / 6000 SP موازية البيئة (PE). ربط تطبيق مكتوب للاستخدام
تمرير رسالة مع رمز بدء تشغيل خاص لتمكين التطبيق من العمل. ال
يجب أن يحتوي النظام على PE مثبتة في الموقع القياسي (/usr/lpp/ppe.poe/)، أو ال
المواصفات يجب تجاوز الملف بامتداد -النوع = الخيار لتحديد المناسب
موقع الدليل. البيئة المتوازية لا تدعم الخيوط ، لذا فإن ملف -Mpe
الخيار و -الخطأ الخيار غير متوافق.
-خفيفة-طبيعية
-القوة الحميدة
في AIX ، و Darwin 32 بت ، و PowerPC GNU / Linux 64 بت ، يكون الخيار -خفيفة-طبيعية
يتجاوز المحاذاة المحددة بواسطة ABI للأنواع الأكبر ، مثل مضاعفات الفاصلة العائمة ،
على حدودها الطبيعية القائمة على الحجم. الخيار -القوة الحميدة يوجه مجلس التعاون الخليجي إلى
اتبع قواعد المحاذاة المحددة من ABI. افتراضات GCC إلى المحاذاة القياسية
المحددة في ABI.
في داروين 64 بت ، المحاذاة الطبيعية هي الإعداد الافتراضي ، و -القوة الحميدة ليس
أيد.
-مسنة- تعويم
-مشدد-تعويم
إنشاء رمز لا يستخدم (يستخدم) مجموعة تسجيل الفاصلة العائمة. برمجة
يتم توفير مضاهاة الفاصلة العائمة إذا كنت تستخدم الامتداد -مسنة- تعويم الخيار ، وتمرير
الخيار لدول مجلس التعاون الخليجي عند الربط.
- تعويم واحد
- تعويم مزدوج
إنشاء رمز لعمليات الفاصلة العائمة أحادية أو مزدوجة الدقة.
- تعويم مزدوج يدل - تعويم واحد.
-بسيط- fpu
لا تقم بإنشاء تعليمات "sqrt" و "div" لوحدة الفاصلة العائمة للأجهزة.
-mfpu =الاسم
حدد نوع وحدة الفاصلة العائمة. قيم صالحة لـ الاسم . sp_lite (أي ما يعادل
- تعويم واحد -بسيط- fpu), dp_lite (أي ما يعادل - تعويم مزدوج -بسيط- fpu),
sp_full (أي ما يعادل - تعويم واحد)، و dp_full (أي ما يعادل - تعويم مزدوج).
-مكسيلينكس- fpu
إجراء تحسينات لوحدة الفاصلة العائمة على Xilinx PPC 405/440.
- متعدد
- متعددة
قم بإنشاء التعليمات البرمجية التي تستخدم (لا تستخدم) تعليمات تحميل كلمات متعددة و
تعليمات تخزين كلمات متعددة. يتم إنشاء هذه التعليمات بشكل افتراضي في
أنظمة الطاقة ، ولا يتم إنشاؤها على أنظمة PowerPC. لا تستخدم - متعدد على القليل
endian PowerPC ، نظرًا لأن هذه التعليمات لا تعمل عندما يكون المعالج قيد التشغيل
وضع endian الصغير. الاستثناءات هي PPC740 و PPC750 والتي تسمح بذلك
تعليمات في وضع القليل من Endian.
- الخيط
-منو- سلسلة
قم بإنشاء رمز يستخدم (لا يستخدم) تعليمات سلسلة التحميل والمخزن
سلسلة تعليمات كلمة لحفظ سجلات متعددة والقيام بحركات كتلة صغيرة. هؤلاء
يتم إنشاء التعليمات افتراضيًا على أنظمة الطاقة ، ولا يتم إنشاؤها على PowerPC
أنظمة. لا تستخدم - الخيط على أنظمة PowerPC الصغيرة ، منذ ذلك الحين
التعليمات لا تعمل عندما يكون المعالج في الوضع الصغير. الاستثناءات
هي PPC740 و PPC750 اللذان يسمحان بهذه التعليمات في الوضع الصغير.
-حديث
-رقم التحديث
قم بإنشاء التعليمات البرمجية التي تستخدم (لا تستخدم) تعليمات التحميل أو التخزين التي تقوم بتحديث ملف
قاعدة تسجيل لعنوان موقع الذاكرة المحسوب. هذه التعليمات
يتم إنشاؤها بشكل افتراضي. كما ترى -رقم التحديث، هناك نافذة صغيرة بين
الوقت الذي يتم فيه تحديث مؤشر المكدس ويكون عنوان الإطار السابق
المخزنة ، مما يعني أن الكود الذي يمشي في إطار المكدس عبر المقاطعات أو الإشارات
الحصول على بيانات تالفة.
-عناوين مفهرسة
-رقم-تجنب-عناوين مفهرسة
قم بإنشاء رمز يحاول تجنب (وليس تجنب) استخدام التحميل أو التخزين المفهرس
تعليمات. يمكن أن تؤدي هذه التعليمات إلى عقوبة الأداء على معالجات Power6
في مواقف معينة ، مثل عند التنقل بين المصفوفات الكبيرة التي تعبر 16M
الحدود. يتم تمكين هذا الخيار افتراضيًا عند استهداف Power6 وتعطيله
غير ذلك.
-مفوس-ماد
-منو-تنصهر-ماد
قم بإنشاء رمز يستخدم (لا يستخدم) الفاصلة العائمة في الضرب والتراكم
تعليمات. يتم إنشاء هذه التعليمات بشكل افتراضي إذا كانت النقطة العائمة للأجهزة
يستخدم. يعتمد على الآلة -مفوس-ماد يتم الآن تعيين الخيار للجهاز-
مستقل -ffp-Contract = سريع الخيار، و -منو-تنصهر-ماد تم تعيينه إلى
-ffp- عقد = إيقاف.
-ممولهو
-منو-مولهو
قم بإنشاء رمز يستخدم (لا يستخدم) مضاعفة نصف كلمة ومضاعفة تتراكم
تعليمات حول معالجات IBM 405 و 440 و 464 و 476. هذه التعليمات
تم إنشاؤها افتراضيًا عند استهداف تلك المعالجات.
-مدلمذب
-منو-دلمزب
توليد التعليمات البرمجية التي تستخدم (لا تستخدم) البحث عن سلسلة دلمزب تعليمات على شركة آي بي إم
معالجات 405 و 440 و 464 و 476. يتم إنشاء هذه التعليمات بشكل افتراضي عندما
تستهدف تلك المعالجات.
-لا بت محاذاة
-mbit- محاذاة
في النظام V.4 وأنظمة PowerPC المضمنة ، لا تفرض (تفعل) الهياكل والنقابات
التي تحتوي على حقول بت يجب محاذاتها مع النوع الأساسي لحقل البت.
على سبيل المثال ، بشكل افتراضي ، بنية لا تحتوي إلا على 8 حقول بت "غير موقعة" من
الطول 1 محاذي لحد 4 بايت وله حجم 4 بايت. باستخدام
-لا بت محاذاة، يتم محاذاة الهيكل إلى حد 1 بايت وحجمه 1 بايت.
-لا صارمة- محاذاة
-mstrict- محاذاة
في النظام V.4 وأنظمة PowerPC المضمنة ، لا تفترض (لا) أن الذاكرة غير المحاذاة
يتم التعامل مع المراجع من قبل النظام.
-نقل
-منو-ريموكاتابل
قم بإنشاء رمز يسمح (لا يسمح) بنقل ملف ثابت قابل للتنفيذ إلى ملف
عنوان مختلف في وقت التشغيل. يجب أن يكون محمل نظام PowerPC مضمنًا بسيطًا
نقل محتويات المواقع ".got2" و 4 بايت المدرجة في ".fixup"
، جدول عناوين 32 بت التي تم إنشاؤها بواسطة هذا الخيار. من أجل هذا العمل ، كل شيء
يجب تجميع الكائنات المرتبطة معًا باستخدام -نقل or -مرحل-ليب.
-نقل يقوم الكود بمحاذاة المكدس لحد 8 بايت.
-مرحل-ليب
-منو-ريلوكاتابل-ليب
اعجاب -نقل, -مرحل-ليب يولد قسم ".fixup" للسماح بالثبات
سيتم نقل الملفات التنفيذية في وقت التشغيل ، ولكن -مرحل-ليب لا يستخدم
أصغر كومة من المحاذاة -نقل. الكائنات المترجمة مع -مرحل-ليب قد
أن تكون مرتبطة بالكائنات المترجمة مع أي مجموعة من -نقل خيارات.
-منو توك
-mtoc
في النظام V.4 وأنظمة PowerPC المضمنة ، لا تفترض (لا) أن السجل 2 يحتوي على
مؤشر إلى منطقة عالمية يشير إلى العناوين المستخدمة في البرنامج.
-ملي قليلا
-ملل-endian
في النظام V.4 وأنظمة PowerPC المضمنة ، تجمع التعليمات البرمجية للمعالج في
وضع endian. ال -ملل-endian الخيار هو نفسه -ملي قليلا.
-مكبر
-mbig-endian
في النظام V.4 وأنظمة PowerPC المضمنة ، تقوم بترجمة التعليمات البرمجية للمعالج بحجم كبير
وضع endian. ال -mbig-endian الخيار هو نفسه -مكبر.
-mdynamic-no-pic
على أنظمة Darwin و Mac OS X ، قم بترجمة التعليمات البرمجية بحيث لا يمكن تغيير مكانها ، ولكن ذلك
مراجعها الخارجية relocatable. الكود الناتج مناسب ل
التطبيقات ، ولكن ليس المكتبات المشتركة.
-مفردة الموافقة المسبقة عن علم- قاعدة
تعامل مع السجل المستخدم لعنونة الموافقة المسبقة عن علم على أنه للقراءة فقط ، بدلاً من تحميله في ملف
مقدمة لكل وظيفة. نظام وقت التشغيل مسؤول عن تهيئة هذا
التسجيل بقيمة مناسبة قبل بدء التنفيذ.
-إعطاء الأولوية- مقيد- insns =الأولوية
يتحكم هذا الخيار في الأولوية التي تم تعيينها لتقييد فتحة الإرسال
التعليمات خلال ممر الجدولة الثاني. الحجة الأولوية يأخذ القيمة
0, 1الطرق أو 2 لتعيين لا ، أو أعلى ، أو ثاني أعلى أولوية (على التوالي) لـ
تعليمات مقيدة بفتحة الإرسال.
-msched-cost-dep =نوع_التبعية
يتحكم هذا الخيار في التبعيات التي يعتبرها الهدف مكلفة أثناء
جدولة التعليمات. الحجة نوع_التبعية يأخذ واحدًا مما يلي
القيم:
لا لا تبعية مكلفة.
الكل جميع التبعيات مكلفة.
صحيح_المخزن_تحميل
الاعتماد الحقيقي من المتجر للتحميل أمر مكلف.
store_to_load
أي اعتماد من المتجر للتحميل أمر مكلف.
عدد
أي تبعية يكون زمن الانتقال لها أكبر من أو يساوي عدد مكلف.
-minsert-Sched-nops =مخطط
يتحكم هذا الخيار في مخطط إدراج NOP المستخدم أثناء الجدولة الثانية
يمر. الحجة مخطط يأخذ إحدى القيم التالية:
لا لا تقم بإدخال NOPs.
وسادة ضع مع NOPs أي مجموعة إرسال بها فتحات إصدار شاغرة ، وفقًا لـ
تجميع المجدول.
إعادة التجميع
أدخل NOPs لفرض الإدخالات التابعة المكلفة في مجموعات منفصلة. أدخل بالضبط
عدد NOPs حسب الحاجة لإجبار INN على مجموعة جديدة ، وفقًا للتقديرات
تجميع المعالج.
عدد
أدخل NOPs لفرض الإدخالات التابعة المكلفة في مجموعات منفصلة. إدراج عدد
NOPs لإجبار INN على مجموعة جديدة.
-mcall-sysv
في النظام V.4 وأنظمة PowerPC المضمنة ، تجمع التعليمات البرمجية باستخدام اصطلاحات الاستدعاء التي
الالتزام بمسودة مارس 1995 الخاصة بالواجهة الثنائية لتطبيق النظام الخامس ، PowerPC
ملحق المعالج. هذا هو الإعداد الافتراضي إلا إذا قمت بتكوين GCC باستخدام
powerpc - * - eabiaix.
-mcall-sysv-eabi
-مكال-ايبي
حدد كليهما -mcall-sysv -ميبي خيارات.
-mcall-sysv-noeabi
حدد كليهما -mcall-sysv -منو ايبي خيارات.
-mcall-aixdesc
في النظام V.4 وأنظمة PowerPC المضمنة ، قم بترجمة التعليمات البرمجية لنظام التشغيل AIX.
-مكال لينكس
في النظام V.4 وأنظمة PowerPC المضمنة ، جمِّع التعليمات البرمجية لنظام GNU القائم على Linux
نظام.
-mcall-freebsd
في النظام V.4 وأنظمة PowerPC المضمنة ، تجمع التعليمات البرمجية لتشغيل FreeBSD
نظام.
-mcall- netbsd
في النظام V.4 وأنظمة PowerPC المضمنة ، تجمع التعليمات البرمجية لتشغيل NetBSD
نظام.
-mcall- openbsd
في النظام V.4 وأنظمة PowerPC المضمنة ، تجمع التعليمات البرمجية لتشغيل OpenBSD
نظام.
-maix- بناء- العودة
قم بإرجاع جميع الهياكل الموجودة في الذاكرة (كما هو محدد بواسطة AIX ABI).
-msvr4- هيكلة العودة
إرجاع الهياكل الأصغر من 8 بايت في السجلات (كما هو محدد بواسطة SVR4 ABI).
-مابي =نوع أبي
قم بتمديد ABI الحالي بامتداد معين ، أو قم بإزالة هذا الامتداد. صالح
القيم هي التيفيك, لا altivec, جمعية مهندسي البترول, لا spe, com.ibmlongdouble, com.ieeelongdouble, elfv1,
elfv2.
-مابي = spe
قم بتوسيع ABI الحالي بامتدادات SPE ABI. هذا لا يغير ABI الافتراضي ،
بدلاً من ذلك يضيف ملحقات SPE ABI إلى ABI الحالي.
-مابي = لا spe
تعطيل امتدادات Book-E SPE ABI لـ ABI الحالي.
-mabi = ibmlongdouble
قم بتغيير ABI الحالي لاستخدام مضاعفة طويلة ذات دقة ممتدة من IBM. هذا هو PowerPC
خيار SYSV ABI 32 بت.
-مابي = ieeelongdouble
قم بتغيير ABI الحالي لاستخدام IEEE ذو الدقة الطويلة المزدوجة. هذا هو PowerPC
خيار Linux ABI 32 بت.
-مابي = elfv1
قم بتغيير ABI الحالي لاستخدام ELFv1 ABI. هذا هو ABI الافتراضي للكبار
PowerPC 64 بت لينوكس. يتطلب تجاوز ABI الافتراضي دعمًا خاصًا للنظام وملفات
من المرجح أن تفشل بطرق مذهلة.
-مابي = elfv2
قم بتغيير ABI الحالي لاستخدام ELFv2 ABI. هذا هو ABI الافتراضي لـ
Endian PowerPC 64 بت لينوكس. يتطلب تجاوز ABI الافتراضي نظامًا خاصًا
الدعم ومن المرجح أن تفشل بطرق مذهلة.
-مبروتوب
-النموذج الأولي
في النظام V.4 وأنظمة PowerPC المضمنة تفترض أن جميع استدعاءات وسيطة متغيرة
يتم وضع نماذج أولية للوظائف بشكل صحيح. خلاف ذلك ، يجب على المترجم إدخال تعليمات
قبل كل مكالمة غير نموذجية لتعيين أو مسح البت 6 من سجل كود الشرط
("CR") لتوضيح ما إذا كان يتم تمرير قيم الفاصلة العائمة في النقطة العائمة
تسجل في حال كانت الوظيفة تأخذ وسيطات متغيرة. مع -مبروتوب، المكالمات فقط
لوضع نماذج أولية لدوال الوسيطة المتغيرة ، قم بتعيين أو مسح البت.
-مسيم
في أنظمة PowerPC المضمنة ، افترض أن وحدة بدء التشغيل تسمى سيم- crt0.o
أن مكتبات C القياسية libsim.a libc.a. هذا هو الإعداد الافتراضي لـ
powerpc - * - eabisim تكوينات.
-mmvme
في أنظمة PowerPC المضمنة ، افترض أن وحدة بدء التشغيل تسمى crt0.o و
مكتبات C القياسية هي libmvme.a libc.a.
سادة
في أنظمة PowerPC المضمنة ، افترض أن وحدة بدء التشغيل تسمى crt0.o و
مكتبات C القياسية هي libads.a libc.a.
-ميالنايف
في أنظمة PowerPC المضمنة ، افترض أن وحدة بدء التشغيل تسمى crt0.o و
مكتبات C القياسية هي libyk.a libc.a.
-mvxworks
في النظام V.4 وأنظمة PowerPC المضمنة ، حدد أنك تقوم بترجمة ملف
نظام VxWorks.
-مب
في أنظمة PowerPC المضمنة ، قم بتعيين بت "PPC_EMB" في رأس إشارات ELF للإشارة
أن إبي يتم استخدام عمليات الترحيل الممتدة.
-ميبي
-منو ايبي
في النظام V.4 وأنظمة PowerPC المضمنة ، (لا) تلتزم بـ Embedded
الواجهة الثنائية للتطبيقات (EABI) ، وهي عبارة عن مجموعة من التعديلات على النظام
مواصفات V.4. التحديد -ميبي يعني أن المكدس يتم محاذاته إلى 8 بايت
حد ، يتم استدعاء الوظيفة "__eabi" من "رئيسي" لإعداد بيئة EABI ،
و -msdata يمكن أن يستخدم الخيار كلاً من "r2" و "r13" للإشارة إلى بيانات صغيرة منفصلة
المناطق. اختيار -منو ايبي يعني أن المكدس محاذي لحد 16 بايت ، لا
يتم استدعاء وظيفة التهيئة EABI من "main" و -msdata يستخدم الخيار فقط
"r13" للإشارة إلى منطقة بيانات صغيرة واحدة. ال -ميبي الخيار قيد التشغيل افتراضيًا إذا كنت
تكوين GCC باستخدام واحد من powerpc * - * - eabi * خيارات.
-msdata = eabi
في النظام V.4 وأنظمة PowerPC المضمنة ، ضع "const" العالمية الصغيرة و
بيانات ثابتة في قسم ".sdata2" ، والتي يشار إليها بالسجل "r2". ضع صغيرا
تمت تهيئة البيانات العمومية والثابتة غير "const" في قسم ".sdata" ، وهو
وأشار إلى السجل "r13". ضع بيانات عالمية وثابتة صغيرة غير مهيأة في ملف
قسم ".sbss" المجاور لقسم ".sdata". ال -msdata = eabi خيار
لا يتوافق مع -نقل اختيار. ال -msdata = eabi الخيار يعين أيضا
-مب الخيار.
-msdata = sysv
في النظام V.4 وأنظمة PowerPC المضمنة ، ضع البيانات العالمية والثابتة الصغيرة في ملف
قسم ".sdata" والذي يشار إليه بالسجل "r13". ضع صغيرًا غير مهيأ
البيانات العامة والثابتة في قسم ".sbss" المجاور لـ ".sdata"
الجزء. ال -msdata = sysv الخيار غير متوافق مع -نقل الخيار.
-msdata = افتراضي
-msdata
في النظام V.4 وأنظمة PowerPC المضمنة ، إذا -ميبي يتم استخدامه ، قم بترجمة التعليمات البرمجية بنفس الطريقة
as -msdata = eabi، وإلا قم بترجمة الكود نفسه مثل -msdata = sysv.
-msdata = بيانات
في النظام V.4 وأنظمة PowerPC المضمنة ، ضع البيانات العالمية الصغيرة في ".sdata"
الجزء. ضع بيانات عالمية صغيرة غير مهيأة في قسم ".sbss". لا تستخدم
تسجيل "r13" لمعالجة البيانات الصغيرة ولكن. هذا هو السلوك الافتراضي ما لم
آخر -msdata تستخدم الخيارات.
-msdata = لا شيء
-منو- sdata
في أنظمة PowerPC المضمنة ، ضع جميع البيانات العالمية والثابتة التي تمت تهيئتها في ".data"
وجميع البيانات غير المهيأة في قسم ".bss".
-mblock-move-inline-limit =NUM
جميع حركات الكتل المضمنة (مثل استدعاءات "memcpy" أو نسخ البنية) أقل من أو
يساوي NUM بايت. الحد الأدنى لقيمة NUM هو 32 بايت على أهداف 32 بت و 64
بايت على أهداف 64 بت. القيمة الافتراضية خاصة بالهدف.
-G NUM
في أنظمة PowerPC المضمنة ، ضع العناصر العامة والثابتة أقل من أو تساوي NUM
بايت في البيانات الصغيرة أو أقسام BSS بدلاً من البيانات العادية أو قسم BSS.
افتراضيا، NUM هو 8. إن -G NUM يتم تمرير التبديل أيضًا إلى الرابط. كل الوحدات
يجب أن يتم تجميعها مع نفس الشيء -G NUM .
-أسماء العريس
-أسماء متعددة
في النظام V.4 وأنظمة PowerPC المضمنة ، (لا) ترسل أسماء التسجيل في ملف
إخراج لغة التجميع باستخدام أشكال رمزية.
-ملونجكال
-من-لونج كول
افتراضيا أن جميع المكالمات بعيدة بحيث أطول وأكثر تكلفة
تسلسل الاتصال مطلوب. هذا مطلوب للمكالمات التي تزيد عن 32 ميغا بايت
(33,554,432،XNUMX،XNUMX بايت) من الموقع الحالي. يتم إنشاء مكالمة قصيرة إذا كان
يعرف المترجم أن المكالمة لا يمكن أن تكون بعيدة. يمكن تجاوز هذا الإعداد من خلال
سمة وظيفة "المكالمة القصيرة" ، أو بواسطة "# براغما Longcall(0) ".
بعض الروابط قادرة على اكتشاف المكالمات خارج النطاق وإنشاء كود لاصق
الذبابة. في هذه الأنظمة ، تكون المكالمات الطويلة غير ضرورية وتولد رمزًا أبطأ. كما
حتى كتابة هذه السطور ، يمكن لرابط AIX القيام بذلك ، وكذلك رابط GNU لـ PowerPC / 64. هو - هي
تم التخطيط لإضافة هذه الميزة إلى رابط GNU لأنظمة PowerPC 32 بت أيضًا.
في أنظمة Darwin / PPC ، تنشئ "#pragma longcall" "jbsr callee، L42" بالإضافة إلى خيران
جزيرة (كود الغراء). يمثل العنوانان المستهدفان المستدعي والفرع
جزيرة. يفضل رابط Darwin / PPC العنوان الأول ويقوم بإنشاء "bl callee"
إذا وصلت تعليمات PPC "bl" إلى المستدعي مباشرة ؛ خلاف ذلك ، الرابط
يولد "bl L42" لاستدعاء جزيرة الفرع. يتم إلحاق جزيرة الفرع بـ
جسد وظيفة الاستدعاء ؛ يحسب العنوان الكامل 32 بت المستدعى و
يقفز إليه.
في أنظمة Mach-O (داروين) ، يوجه هذا الخيار المترجم المنبعث إلى الغراء لـ
كل مكالمة مباشرة ، ويقرر رابط داروين ما إذا كان سيستخدمها أو يتجاهلها.
في المستقبل ، قد يتجاهل GCC كافة مواصفات المكالمات الطويلة عندما يكون الرابط معروفًا
توليد الغراء.
-mtls- علامات
-منو- TLS- علامات
ضع علامة (لا تضع علامة) على المكالمات إلى "__tls_get_addr" مع إعادة تحديد مكان الوظيفة
جدال. يسمح النقل للرابط بربط استدعاء الوظيفة بشكل موثوق به
تعليمات إعداد الوسيطة لتحسين TLS ، والتي بدورها تسمح لـ GCC إلى الأفضل
جدولة التسلسل.
-الخطأ
يضيف دعمًا لتعدد مؤشرات الترابط باستخدام امتداد pthreads مكتبة. يحدد هذا الخيار علامات لـ
كل من المعالج والرابط.
- رثاء
-منو- المتلقي
يتيح هذا الخيار استخدام التقدير المتبادل وتقدير الجذر التربيعي المتبادل
تعليمات بخطوات نيوتن رافسون الإضافية لزيادة الدقة بدلاً من
عمل قسمة أو جذر تربيعي وقسمة على وسيطات الفاصلة العائمة. يجب عليك استخدام ملفات
ال -فاست-الرياضيات الخيار عند استخدام - رثاء (أو على الأقل -ممتعة-الرياضيات-التحسينات,
-الرياضيات- فقط, الرياضيات المتبادلة - الرياضيات). لاحظ أنه في حين أن ملف
إنتاجية التسلسل بشكل عام أعلى من صبيب غير
تعليمات متبادلة ، يمكن تقليل دقة التسلسل حتى 2 ulp
(أي أن معكوس 1.0 يساوي 0.99999994) للجذور التربيعية المقلوبة.
-mrecip =اختار
يتحكم هذا الخيار في إرشادات التقدير المتبادل التي يمكن استخدامها. اختار هو
قائمة خيارات مفصولة بفواصل ، والتي قد يسبقها علامة "!" لعكس الخيار:
الكل قم بتمكين كل تعليمات التقدير.
الافتراضي
تمكين التعليمات الافتراضية ، أي ما يعادل - رثاء.
لا شيء
تعطيل جميع تعليمات التقدير ، أي ما يعادل -منو- المتلقي.
شعبة قم بتمكين تعليمات التقريب المتبادل لكل من الفردي والمزدوج
الدقة.
divf
قم بتمكين تعليمات التقريب العكسي أحادية الدقة.
divd
قم بتمكين تعليمات التقريب المتبادل ذات الدقة المزدوجة.
rsqrt
قم بتمكين تعليمات تقريب الجذر التربيعي المقلوب لكل من الملف الفردي و
دقة مزدوجة.
rsqrtf
قم بتمكين تعليمات تقريب الجذر التربيعي المتبادل أحادية الدقة.
rsqrtd
قم بتمكين تعليمات تقريب الجذر التربيعي ذات الدقة المزدوجة.
لذلك ، على سبيل المثال ، -mrecip = الكل ،! rsqrtd تمكن كل التقدير المتبادل
التعليمات ، باستثناء إرشادات "FRSQRTE" و "XSRSQRTEDP" و "XVRSQRTEDP"
التي تتعامل مع حسابات الجذر التربيعي المقلوب ذات الدقة المزدوجة.
- الدقة
-منو- المتلقي الدقة
افترض (لا تفترض) أن إرشادات التقدير المتبادل توفر أعلى -
تقديرات الدقة مما هو مطلوب بواسطة PowerPC ABI. اختيار -mcpu = power6,
-mcpu = power7 or -mcpu = power8 يختار تلقائيا - الدقة. المزدوج-
لا يتم إنشاء إرشادات تقدير الجذر التربيعي الدقيقة افتراضيًا عند
الآلات الدقيقة ، لأنها لا تقدم تقديرًا يتقارب بعد ثلاثة
خطوات.
-mveclibabi =نوع
يحدد نوع ABI لاستخدامه في توجيه العناصر المضمنة باستخدام مكتبة خارجية.
النوع الوحيد المدعوم في الوقت الحاضر هو كتلة، والتي تحدد استخدام الرياضيات الخاصة بشركة IBM
مكتبات النظام الفرعي للتسريع (MASS) لتوجيه العناصر الجوهرية باستخدام خارجي
المكتبات. تصدر دول مجلس التعاون الخليجي حاليًا مكالمات إلى "acosd2" ، "acosf4" ، "acoshd2" ، "acoshf4" ،
"asind2" ، "asinf4" ، "asinhd2" ، "asinhf4" ، "atan2d2" ، "atan2f4" ، "atand2" ، "atanf4" ،
"atanhd2" ، "atanhf4" ، "cbrtd2" ، "cbrtf4" ، "cosd2" ، "cosf4" ، "coshd2" ، "coshf4" ،
"erfcd2" ، "erfcf4" ، "erfd2" ، "erff4" ، "exp2d2" ، "exp2f4" ، "expd2" ، "expf4" ، "expm1d2" ،
"expm1f4" ، "hypotd2" ، "hypotf4" ، "lgammad2" ، "lgammaf4" ، "log10d2" ، "log10f4" ،
"log1pd2" ، "log1pf4" ، "log2d2" ، "log2f4" ، "logd2" ، "logf4" ، "powd2" ، "powf4" ، "sind2" ،
"sinf4" و "sinhd2" و "sinhf4" و "sqrtd2" و "sqrtf4" و "tand2" و "tanf4" و "tanhd2" و
"tanhf4" عند إنشاء رمز power7. على حد سواء -ftree-vectorize
-ممتعة-الرياضيات-التحسينات يجب أيضًا تمكينه. يجب أن تكون مكتبات MASS
المحدد في وقت الارتباط.
-مفريز
-منو-فريز
قم بإنشاء (لا تنشئ) تعليمات "friz" عندما يكون ملف -ممتعة-الرياضيات-التحسينات
يستخدم الخيار لتحسين تقريب قيم الفاصلة العائمة إلى عدد صحيح 64 بت و
العودة إلى النقطة العائمة. لا تقوم التعليمات "friz" بإرجاع نفس القيمة إذا كان
رقم الفاصلة العائمة أكبر من أن يتناسب مع عدد صحيح.
-مؤشرات- إلى-وظائف متداخلة
-رقم-مؤشرات-إلى-دالات متداخلة
إنشاء (لا تنشئ) رمز لتحميل سجل السلسلة الثابتة ("r11") عندما
استدعاء من خلال مؤشر على أنظمة لينكس AIX و 64 بت حيث مؤشر وظيفة
يشير إلى واصف مكون من 3 كلمات يعطي عنوان الوظيفة وقيمة TOC ليتم تحميلها
سجل "r2" ، وقيمة السلسلة الثابتة ليتم تحميلها في السجل "r11". ال
-مؤشرات- إلى-وظائف متداخلة قيد التشغيل افتراضيًا. لا يمكنك الاتصال من خلال المؤشرات إلى
الدالات المتداخلة أو المؤشرات للوظائف المترجمة بلغات أخرى تستخدم الامتداد
سلسلة ثابتة إذا كنت تستخدم -رقم-مؤشرات-إلى-دالات متداخلة.
-msave-toc- غير مباشر
-من-حفظ-توك-غير مباشر
قم بإنشاء (لا تنشئ) رمزًا لحفظ قيمة جدول المحتويات في موقع المكدس المحجوز
في مقدمة الوظيفة إذا كانت الدالة تستدعي من خلال مؤشر على AIX و 64 بت
أنظمة لينوكس. إذا لم يتم حفظ قيمة جدول المحتويات في المقدمة ، فسيتم حفظها قبل ذلك مباشرة
المكالمة من خلال المؤشر. ال -من-حفظ-توك-غير مباشر الخيار هو الافتراضي.
-مكومبات-محاذاة-بارم
-منو-التوافق- محاذاة- parm
قم بإنشاء (لا تنشئ) رمزًا لتمرير معلمات الهيكل بأقصى قدر من المحاذاة
من 64 بت ، للتوافق مع الإصدارات القديمة من GCC.
لم تقم الإصدارات القديمة من GCC (قبل 4.9.0) بمحاذاة معلمة بنية بشكل غير صحيح
على حدود 128 بت عندما تحتوي تلك البنية على عضو يتطلب 128 بت
انتقام. تم تصحيح هذا في الإصدارات الأحدث من GCC. يمكن استخدام هذا الخيار
لإنشاء رمز متوافق مع الوظائف التي تم تجميعها مع الإصدارات القديمة من
مجلس التعاون الخليجي.
تشير -منو-التوافق- محاذاة- parm الخيار هو الافتراضي.
RX مزيد من الخيارات
تم تحديد خيارات سطر الأوامر هذه لأهداف RX:
-m64bit- يتضاعف
-m32bit- يتضاعف
اجعل نوع البيانات "مزدوج" 64 بت (-m64bit- يتضاعف) أو 32 بت (-m32bit- يتضاعف)
في الحجم. الافتراضي هو -m32bit- يتضاعف. ملاحظات تعمل أجهزة الفاصلة العائمة RX فقط
على قيم 32 بت ، وهذا هو السبب الافتراضي -m32bit- يتضاعف.
-fpu
-نوفبو
تمكن (-fpu) أو يعطل (-نوفبو) استخدام أجهزة النقطة العائمة RX. ال
يتم تمكين الإعداد الافتراضي لسلسلة RX600 وتعطيله في سلسلة RX200.
يتم إنشاء إرشادات الفاصلة العائمة فقط لقيم الفاصلة العائمة ذات 32 بت ،
ومع ذلك ، لذلك لا يتم استخدام أجهزة FPU لمضاعفة إذا كان -m64bit- يتضاعف الخيار
مستخدم.
ملاحظات إذا كان -fpu ثم يتم تمكين الخيار -ممتعة-الرياضيات-التحسينات تم تمكينه أيضًا
تلقائيا. هذا لأن تعليمات RX FPU هي نفسها غير آمنة.
-mcpu =الاسم
يحدد نوع وحدة المعالجة المركزية RX المراد استهدافها. يتم دعم ثلاثة أنواع حاليًا ، وهي
عام RX600 RX200 سلسلة الأجهزة والمحددة RX610 وحدة المعالجة المركزية. الافتراضي هو
RX600.
الفرق الوحيد بين RX600 RX610 وهذا هو RX610 لا يدعم
تعليمات "MVTIPL".
تشير RX200 لا تحتوي السلسلة على وحدة فاصلة عائمة للأجهزة وهكذا -نوفبو يتم تمكين
بشكل افتراضي عند تحديد هذا النوع.
-mbig-endian-data
-مليلا-endian- البيانات
قم بتخزين البيانات (ولكن ليس التعليمات البرمجية) بتنسيق كبير الحجم. الافتراضي هو
-مليلا-endian- البيانات، أي لتخزين البيانات بتنسيق صغير.
-msmall-data-limit =N
يحدد الحجم الأقصى بالبايت للمتغيرات العامة والثابتة التي يمكن وضعها
في منطقة البيانات الصغيرة. يمكن أن يؤدي استخدام منطقة البيانات الصغيرة إلى حجم أصغر وأسرع
رمز ، ولكن حجم المنطقة محدود والأمر متروك للمبرمج للتأكد من ذلك
المنطقة لا تفيض. أيضًا عند استخدام منطقة البيانات الصغيرة ، يتم استخدام أحد RX's
السجلات (عادةً "r13") محجوزة للاستخدام للإشارة إلى هذه المنطقة ، لذا فهي لا
تعد متاحة للاستخدام من قبل المترجم. قد يؤدي هذا إلى إبطاء و / أو أكبر
رمز إذا تم دفع المتغيرات إلى المكدس بدلاً من الاحتفاظ بها في هذا السجل.
ملاحظة ، المتغيرات الشائعة (المتغيرات التي لم تتم تهيئتها) والثوابت هي
لم يتم وضعها في منطقة البيانات الصغيرة حيث تم تخصيصها لأقسام أخرى في
الإخراج القابل للتنفيذ.
القيمة الافتراضية هي صفر ، مما يؤدي إلى تعطيل هذه الميزة. ملاحظة ، هذه الميزة ليست كذلك
ممكّن افتراضيًا مع مستويات تحسين أعلى (-O2 إلخ) بسبب
الآثار الضارة المحتملة لحجز السجل. الأمر متروك للمبرمج
لتجربة واكتشاف ما إذا كانت هذه الميزة مفيدة لبرنامجهم. ارى
وصف -موقع خيار لوصف كيفية التسجيل الفعلي ل
عقد اختيار مؤشر منطقة البيانات الصغيرة.
-مسيم
-منو سيم
استخدم وقت تشغيل المحاكاة. الإعداد الافتراضي هو استخدام وقت التشغيل الخاص بلوحة libgloss.
-الماس 100- بناء الجملة
-mno-as100- بناء الجملة
عند إنشاء إخراج المُجمع ، استخدم صيغة متوافقة مع AS100 من Renesas
المجمع. يمكن أيضًا معالجة بناء الجملة هذا بواسطة مجمع GAS ، ولكن لديه بعض
القيود بحيث لا يتم إنشاؤها افتراضيًا.
-ماكس-ثابت-الحجم =N
تعيين الحد الأقصى لحجم ثابت يمكن استخدامه كمعامل بالبايت
تعليمات RX. على الرغم من أن مجموعة تعليمات RX تسمح بثوابت تصل إلى 4
بايت لاستخدامها في التعليمات ، قيمة أطول تساوي أطول
تعليمات. وبالتالي في بعض الظروف قد يكون من المفيد تقييد حجم
الثوابت التي تستخدم في التعليمات. الثوابت التي تكون كبيرة جدًا هي بدلاً من ذلك
وضعت في تجمع ثابت والمشار إليها عبر المراوغة السجل.
القيمة N يمكن أن تكون بين 0 و 4. القيمة 0 (الافتراضي) أو 4 تعني ذلك
الثوابت من أي حجم مسموح بها.
-استراحة
تفعيل استرخاء الرابط. استرخاء الرابط هو عملية يحاول بواسطتها الرابط
لتقليل حجم البرنامج من خلال إيجاد إصدارات أقصر من التعليمات المختلفة.
معطل افتراضيًا.
-تسجيل النعناع =N
حدد عدد السجلات المطلوب حجزها لوظائف معالج المقاطعة السريعة. ال
قيمنا N يمكن أن تكون بين 0 و 4. القيمة 1 تعني أن السجل "r13" محجوز
للاستخدام الحصري لمعالجات المقاطعة السريعة. قيمة 2 احتياطي "r13" و
"r12". قيمة 3 احتياطيات "r13" و "r12" و "r11" وقيمة 4 احتياطيات "r13"
من خلال "r10". القيمة 0 ، القيمة الافتراضية ، لا تحتفظ بأي سجلات.
-msave-acc-in- المقاطعات
يحدد أن وظائف معالج المقاطعة يجب أن تحتفظ بسجل المجمع.
هذا ضروري فقط إذا كان الرمز العادي قد يستخدم سجل المجمع ، على سبيل المثال
لأنه ينفذ عمليات مضاعفة 64 بت. الافتراضي هو تجاهل المجمع
لأن هذا يجعل معالجات المقاطعة أسرع.
-موقع
-منو- pid
تمكن من توليد بيانات مستقلة عن الموقع. عند تمكين أي وصول إلى
تتم البيانات الثابتة عن طريق إزاحة من عنوان أساسي محفوظ في سجل. هذه
يسمح بتحديد موقع البيانات الثابتة في وقت التشغيل دون الحاجة
الملف التنفيذي المراد نقله ، وهو أمر مفيد للتطبيقات المضمنة بإحكام
قيود الذاكرة. لا تتأثر البيانات التي يمكن تعديلها بهذا الخيار.
لاحظ أن استخدام هذه الميزة يحتفظ بسجل ، عادةً "r13" ، للبيانات الثابتة
العنوان الأساسي. يمكن أن يؤدي هذا إلى رمز أبطأ و / أو أكبر ، خاصةً في التعقيد
الوظائف.
يعتمد السجل الفعلي الذي تم اختياره للاحتفاظ بعنوان قاعدة البيانات الثابتة على ما إذا كان
ال -msmall- البيانات الحد و / أو -النعناع-التسجيل تم تمكين خيارات سطر الأوامر.
بدءًا من السجل "r13" والمضي قدمًا ، يتم تخصيص السجلات أولاً
لتلبية متطلبات -النعناع-التسجيل، ثم -موقع و اخيرا
-msmall- البيانات الحد. وبالتالي فمن الممكن أن يكون سجل منطقة البيانات الصغيرة "r8"
إذا كان كل من -سجل النعناع = 4 -موقع في سطر الأوامر.
افتراضيًا ، لا يتم تمكين هذه الميزة. يمكن استعادة الوضع الافتراضي عبر ملف -منو- pid
خيار سطر الأوامر.
- عدة مقاطعات سريعة
- تحذير - عدة مقاطعات سريعة
يمنع GCC من إصدار رسالة تحذير إذا عثر على أكثر من مقاطعة سريعة
معالج عندما يتم تجميع ملف. الافتراضي هو إصدار تحذير لكل إضافي
تم العثور على معالج المقاطعة السريعة ، حيث يدعم RX مقاطعة واحدة فقط.
ملحوظة: خيار سطر أوامر GCC العام -مثبت-ريج له أهمية خاصة ل RX
المنفذ عند استخدامه مع سمة وظيفة "المقاطعة". تشير هذه السمة إلى ملف
وظيفة تهدف إلى معالجة المقاطعات السريعة. يضمن GCC أنه يستخدم السجلات فقط
"r10" و "r11" و "r12" و / أو "r13" وفقط بشرط أن يكون الاستخدام العادي لـ
تم تقييد السجلات المقابلة عبر -مثبت-ريج or -النعناع-التسجيل
خيارات سطر الأوامر.
S / 390 zSeries مزيد من الخيارات
هذه هي -m خيارات محددة لمعمارية S / 390 و zSeries.
-مشدد-تعويم
-مسنة- تعويم
استخدم (لا تستخدم) إرشادات وتسجيلات الفاصلة العائمة للأجهزة من أجل العائمة-
عمليات النقطة. متي -مسنة- تعويم محدد ، وظائف في libgcc.a تستخدم ل
إجراء عمليات الفاصلة العائمة. متي -مشدد-تعويم المحدد ، المترجم
يولد تعليمات الفاصلة العائمة IEEE. هذا هو الافتراضي.
-محارد- dfp
-من الصعب-dfp
استخدم (لا تستخدم) تعليمات الفاصلة العشرية للأجهزة للعشرية-
عمليات الفاصلة العائمة. متي -من الصعب-dfp محدد ، وظائف في libgcc.a .
تُستخدم لإجراء عمليات الفاصلة العشرية. متي -محارد- dfp محددًا ،
ينشئ المترجم تعليمات الأجهزة العشرية ذات الفاصلة العائمة. هذا هو الافتراضي
For -مارش = z9-ec أو ما يفوقها.
-لونغ-ضعف -64
-لونغ-ضعف -128
تتحكم مفاتيح التبديل هذه في حجم النوع "المزدوج الطويل". حجم 64 بت يجعل ملف
نوع "مزدوج طويل" مكافئ للنوع "مزدوج". هذا هو الافتراضي.
سلسلة الظهر
-mno- backchain
تخزين (لا تخزن) عنوان إطار المتصل كمؤشر backchain في
إطار كومة كالي. قد تكون هناك حاجة إلى backchain للسماح بالتصحيح باستخدام الأدوات التي
لا تفهم معلومات إطار استدعاء DWARF 2. متي -mno-معبأة-المكدس في
التأثير ، يتم تخزين مؤشر backchain في الجزء السفلي من إطار المكدس ؛ متي
مكدسة مكدسة قيد التنفيذ ، يتم وضع backchain في أعلى كلمة في
96/160 بايت تسجيل منطقة حفظ.
بشكل عام ، الكود المترجم مع سلسلة الظهر متوافق مع المكالمات مع الرمز المترجم مع
-mmo- backchain؛ ومع ذلك ، يتطلب استخدام backchain لأغراض التصحيح عادةً
الذي تم بناء الثنائي بأكمله به سلسلة الظهر. لاحظ أن الجمع بين
سلسلة الظهر, مكدسة مكدسة -مشدد-تعويم غير مدعومة. من أجل بناء ملف
استخدام نواة لينكس -مسنة- تعويم.
الافتراضي هو عدم الحفاظ على backchain.
مكدسة مكدسة
-mno-معبأة-المكدس
استخدم (لا تستخدم) تخطيط المكدس المكدس. متي -mno-معبأة-المكدس محددًا ،
المترجم يستخدم جميع حقول 96/160 بايت تسجيل منطقة حفظ فقط من أجلهم
الغرض الافتراضي الحقول غير المستخدمة لا تزال تشغل مساحة مكدس. متي مكدسة مكدسة is
محدد ، سجل حفظ الفتحات معبأة بشكل مكثف في الجزء العلوي من السجل حفظ
منطقة؛ يتم إعادة استخدام المساحة غير المستخدمة لأغراض أخرى ، مما يسمح باستخدام أكثر كفاءة لـ
مساحة المكدس المتاحة. رغم ذلك، متى سلسلة الظهر هو أيضا ساري المفعول ، الأعلى
تُستخدم كلمة منطقة الحفظ دائمًا لتخزين backchain وعنوان المرسل
يتم حفظ التسجيل دائمًا بكلمتين أسفل سلسلة الخلفية.
طالما لم يتم استخدام سلسلة backchain لإطار المكدس ، يتم إنشاء الكود باستخدام مكدسة مكدسة
متوافق مع المكالمة مع الرمز الذي تم إنشاؤه باستخدام -mno-معبأة-المكدس. لاحظ أن بعض غير FSF
إصدارات GCC 2.95 لـ S / 390 أو رمز zSeries الذي يستخدم إطار المكدس
backchain في وقت التشغيل ، وليس فقط لأغراض التصحيح. هذا الرمز ليس استدعاء-
متوافق مع التعليمات البرمجية المجمعة مع مكدسة مكدسة. لاحظ أيضًا أن الجمع بين
سلسلة الظهر, مكدسة مكدسة -مشدد-تعويم غير مدعومة. من أجل بناء ملف
استخدام نواة لينكس -مسنة- تعويم.
الافتراضي هو عدم استخدام تخطيط المكدس المكدس.
-msmall- إكسيك
-mno- صغير- exec
أنشئ (أو لا تنشئ) رمزًا باستخدام تعليمات "bras" للقيام بإجراء فرعي
المكالمات. يعمل هذا بشكل موثوق فقط إذا كان الحجم الإجمالي القابل للتنفيذ لا يتجاوز 64 كيلو بايت.
الافتراضي هو استخدام تعليمات "basr" بدلاً من ذلك ، والتي لا تحتوي على هذا
تحديد.
م 64
م 31
متى م 31 تم تحديده ، قم بإنشاء كود متوافق مع GNU / Linux لـ S / 390 ABI. متي
م 64 إنشاء كود متوافق مع GNU / Linux لـ zSeries ABI. هذه
يسمح GCC على وجه الخصوص لإنشاء تعليمات 64 بت. بالنسبة إلى s390 الأهداف
الافتراضي هو م 31، في حين أن s390x الأهداف الافتراضية م 64.
-مزارخ
ميسا
متى -مزارخ محددًا ، أنشئ رمزًا باستخدام التعليمات المتوفرة في
ض / العمارة. متي ميسا تم تحديده ، قم بإنشاء رمز باستخدام التعليمات
متاح على ESA / 390. لاحظ أن ميسا غير ممكن مع م 64. عند التوليد
كود متوافق مع GNU / Linux لـ S / 390 ABI ، الافتراضي هو ميسا. عند التوليد
كود متوافق مع GNU / Linux لـ zSeries ABI ، الافتراضي هو -مزارخ.
-ملفكل
-منو- mvcle
قم بإنشاء (أو عدم إنشاء) رمز باستخدام تعليمات "mvcle" لتنفيذ الكتلة
التحركات. متي -منو- mvcle تم تحديده ، استخدم حلقة "mvc" بدلاً من ذلك. هذا هو الافتراضي
ما لم يتم التحسين من أجل الحجم.
-mdebug
-منو التصحيح
اطبع (أو لا تطبع) معلومات تصحيح الأخطاء الإضافية عند التحويل البرمجي. الافتراضي هو
لعدم طباعة معلومات التصحيح.
- مسيرة =نوع وحدة المعالجة المركزية
توليد التعليمات البرمجية التي تعمل على نوع وحدة المعالجة المركزية، وهو اسم نظام يمثل ملف
نوع معالج معين. القيم الممكنة لـ نوع وحدة المعالجة المركزية . g5, g6, z900, z990, z9-109,
z9-ec, z10, z196, زيك12و z13. عند إنشاء رمز باستخدام التعليمات
متاح على z / Architecture ، الإعداد الافتراضي هو - مسيرة = z900. خلاف ذلك ، الافتراضي هو
- مسيرة = g5.
-mtune =نوع وحدة المعالجة المركزية
ضبط ل نوع وحدة المعالجة المركزية كل ما ينطبق على الكود الذي تم إنشاؤه ، باستثناء ABI
ومجموعة التعليمات المتاحة. القائمة ل نوع وحدة المعالجة المركزية القيم هي نفسها ل
-مارس. القيمة الافتراضية هي القيمة المستخدمة من أجل -مارس.
-mtpf- تتبع
-mno-tpf- تتبع
قم بإنشاء التعليمات البرمجية التي تضيف (لا تضيف) في الفروع المحددة لنظام التشغيل TPF لتتبع الإجراءات
في نظام التشغيل. يتم إيقاف تشغيل هذا الخيار افتراضيًا ، حتى عند التحويل البرمجي لملف
نظام تشغيل TPF.
-مفوس-ماد
-منو-تنصهر-ماد
قم بإنشاء رمز يستخدم (لا يستخدم) الفاصلة العائمة في الضرب والتراكم
تعليمات. يتم إنشاء هذه التعليمات بشكل افتراضي إذا كانت النقطة العائمة للأجهزة
.
-حجم الإطارات المحذرة =حجم الاطار
أرسل تحذيرًا إذا تجاوزت الوظيفة الحالية حجم الإطار المحدد. لأن هذا هو
التحقق من وقت الترجمة لا يحتاج إلى أن يكون مشكلة حقيقية عند تشغيل البرنامج. هو - هي
الغرض منه هو تحديد الوظائف التي من المحتمل أن تتسبب في تجاوز سعة مكدس. إنها
مفيد للاستخدام في بيئة ذات حجم مكدس محدود مثل نواة لينكس.
- ديناميكي حذر
أرسل تحذيرًا إذا كانت الوظيفة تستدعي "تخصيص" أو تستخدم مصفوفات ذات حجم ديناميكي. هذه
بشكل عام فكرة سيئة مع حجم مكدس محدود.
-mstack-guard =حارس المكدس
-حجم المكدس =حجم كومة
إذا تم توفير هذه الخيارات ، فإن الواجهة الخلفية S / 390 ترسل إرشادات إضافية في ملف
مقدمة الوظيفة التي تؤدي إلى تشغيل مصيدة إذا كان حجم المكدس هو حارس المكدس بايت فوق
حجم كومة (تذكر أن المكدس الموجود في S / 390 ينمو إلى أسفل). إذا كان حارس المكدس
يتم حذف الخيار أصغر قوة 2 أكبر من حجم الإطار المترجم
تم اختيار الوظيفة. تهدف هذه الخيارات إلى استخدامها للمساعدة في تصحيح أخطاء المكدس
مشاكل الفائض. بالإضافة إلى ذلك ، فإن الكود المنبعث يسبب القليل من النفقات العامة و
ومن ثم يمكن استخدامها أيضًا في أنظمة شبيهة بالإنتاج بدون أداء أفضل
انحلال. يجب أن تكون القيم المعطاة قوى بالضبط لـ 2 و حجم كومة يجب أن يكون
أكبر من حارس المكدس دون تجاوز 64 كيلو بايت. من أجل أن تكون أكثر كفاءة
يقوم الكود بافتراض أن المكدس يبدأ من عنوان محاذ للقيمة
معطى بواسطة حجم كومة. حارس المكدس يمكن استخدام الخيار فقط جنبًا إلى جنب مع
حجم كومة.
-mhotpatch =قبل نصف الكلمات,نصفي كلمات
إذا تم تمكين خيار hotpatch ، فسيتم إنشاء مقدمة دالة "hot-patching" لـ
جميع الوظائف في وحدة الترجمة. يتم تقديم تسمية funtion مع المعطى
عدد تعليمات NOP ثنائية البايت (قبل نصف الكلمات، بحد أقصى 1000000). بعد
التسمية ، 2 * نصفي كلمات يتم إلحاق بايت ، باستخدام أكبر NOP مثل الإرشادات
تسمح العمارة (بحد أقصى 1000000).
إذا كانت كلتا الوسيطتين صفرًا ، فسيتم تعطيل التصحيح السريع.
يمكن تجاوز هذا الخيار للوظائف الفردية بسمة "hotpatch".
العلامة مزيد من الخيارات
تم تحديد هذه الخيارات لتطبيقات الدرجة:
-meb
تجميع التعليمات البرمجية لوضع endian الكبير. هذا هو الافتراضي.
-ميل
قم بتجميع التعليمات البرمجية للوضع الصغير.
-منهوروب
تعطيل إنشاء تعليمات "bcnz".
-مولس
تفعيل إنشاء تعليمات التحميل والتخزين غير المحاذاة.
-مماك
تمكين استخدام تعليمات الضرب والتراكم. معطل بشكل افتراضي.
-مسكور 5
حدد SCORE5 كالبنية الهدف.
-مسكور 5 يو
حدد SCORE5U للبنية الهدف.
-مسكور 7
حدد SCORE7 كالبنية الهدف. هذا هو الافتراضي.
-مسكور 7 د
حدد SCORE7D كالبنية الهدف.
SH مزيد من الخيارات
تشبه -m يتم تحديد الخيارات لتطبيقات SH:
م 1 قم بإنشاء رمز لـ SH1.
م 2 قم بإنشاء رمز لـ SH2.
-m2e
توليد التعليمات البرمجية لـ SH2e.
-m2a- nofpu
قم بإنشاء رمز لـ SH2a بدون FPU ، أو لـ SH2a-FPU بطريقة تجعل
لا يتم استخدام وحدة الفاصلة العائمة.
-m2a- مفرد فقط
إنشاء رمز لـ SH2a-FPU ، بطريقة لا تحتوي على نقطة عائمة مزدوجة الدقة
يتم استخدام العمليات.
-m2a- واحد
قم بإنشاء رمز لـ SH2a-FPU بافتراض أن وحدة النقطة العائمة بدقة أحادية
الوضع افتراضيًا.
-m2a
قم بإنشاء رمز لـ SH2a-FPU بافتراض أن وحدة النقطة العائمة ذات دقة مزدوجة
الوضع افتراضيًا.
م 3 قم بإنشاء رمز لـ SH3.
-m3e
توليد التعليمات البرمجية لـ SH3e.
-m4-nofpu
قم بإنشاء رمز لـ SH4 بدون وحدة الفاصلة العائمة.
-m4- مفرد فقط
قم بإنشاء رمز لـ SH4 باستخدام وحدة النقطة العائمة التي تدعم فقط
دقة الحساب.
- م 4 واحد
قم بإنشاء رمز لـ SH4 بافتراض أن وحدة الفاصلة العائمة في وضع الدقة المفردة
بشكل افتراضي.
م 4 قم بإنشاء رمز لـ SH4.
-م4-100
قم بإنشاء رمز لـ SH4-100.
-m4-100-nofpu
قم بإنشاء رمز لـ SH4-100 بحيث لا يتم استخدام وحدة الفاصلة العائمة.
-m4-100- واحد
قم بإنشاء رمز لـ SH4-100 بافتراض أن وحدة الفاصلة العائمة في وضع الدقة المفردة
بشكل افتراضي.
-m4-100- مفرد فقط
قم بإنشاء رمز لـ SH4-100 بطريقة لا تحتوي على نقطة عائمة مزدوجة الدقة
يتم استخدام العمليات.
-م4-200
قم بإنشاء رمز لـ SH4-200.
-m4-200-nofpu
قم بإنشاء رمز لـ SH4-200 بدون أن تكون وحدة الفاصلة العائمة ليست كذلك
مستخدم.
-m4-200- واحد
قم بإنشاء رمز لـ SH4-200 بافتراض أن وحدة الفاصلة العائمة في وضع الدقة المفردة
بشكل افتراضي.
-m4-200- مفرد فقط
قم بإنشاء رمز لـ SH4-200 بطريقة لا تحتوي على نقطة عائمة مزدوجة الدقة
يتم استخدام العمليات.
-م4-300
قم بإنشاء رمز لـ SH4-300.
-m4-300-nofpu
قم بإنشاء رمز لـ SH4-300 بدون أن تكون وحدة الفاصلة العائمة ليست كذلك
مستخدم.
-m4-300- واحد
قم بإنشاء رمز لـ SH4-300 بطريقة لا تحتوي على نقطة عائمة مزدوجة الدقة
يتم استخدام العمليات.
-m4-300- مفرد فقط
قم بإنشاء رمز لـ SH4-300 بطريقة لا تحتوي على نقطة عائمة مزدوجة الدقة
يتم استخدام العمليات.
-م4-340
قم بإنشاء رمز لـ SH4-340 (بدون MMU ، بدون FPU).
-م4-500
قم بإنشاء رمز لـ SH4-500 (بدون FPU). يمر، يمرر، اجتاز بنجاح -isa = sh4-nofpu للمجمع.
-m4a- nofpu
قم بإنشاء رمز لـ SH4al-dsp ، أو لـ SH4a بطريقة تجعل النقطة العائمة
لا يتم استخدام الوحدة.
-m4a- مفرد فقط
قم بإنشاء رمز لـ SH4a ، بطريقة لا تحتوي على نقطة عائمة مزدوجة الدقة
يتم استخدام العمليات.
-m4a- واحد
قم بإنشاء رمز لـ SH4a بافتراض أن وحدة الفاصلة العائمة بدقة مفردة
الوضع افتراضيًا.
-m4a
قم بإنشاء رمز لـ SH4a.
-m4al
مثل -m4a- nofpu، إلا أنه يمر ضمنيًا -dsp للمجمع. مجلس التعاون الخليجي
لا يُنشئ أي تعليمات DSP في الوقت الحالي.
-m5-32ميديا
إنشاء رمز 32 بت لـ SHmedia.
-m5-32media- nofpu
قم بإنشاء كود 32 بت لـ SHmedia بطريقة لا تكون وحدة الفاصلة العائمة كذلك
مستخدم.
-m5-64ميديا
إنشاء رمز 64 بت لـ SHmedia.
-m5-64media- nofpu
قم بإنشاء كود 64 بت لـ SHmedia بطريقة لا تكون وحدة الفاصلة العائمة كذلك
مستخدم.
-m5- المدمجة
إنشاء رمز لـ SHcompact.
-m5- المدمجة- nofpu
إنشاء رمز لـ SHcompact بطريقة لا تستخدم فيها وحدة الفاصلة العائمة.
-مب قم بتجميع التعليمات البرمجية للمعالج في الوضع الكبير.
-مل قم بتجميع التعليمات البرمجية للمعالج في الوضع الصغير.
-Mdalign
يتضاعف المحاذاة عند حدود 64 بت. لاحظ أن هذا يغير اصطلاحات الاستدعاء ،
وبالتالي فإن بعض الوظائف من مكتبة C القياسية لا تعمل إلا إذا قمت بإعادة التحويل البرمجي
أولا مع -Mdalign.
-استراحة
تقصير بعض مراجع العنوان في وقت الارتباط ، عندما يكون ذلك ممكنًا ؛ يستخدم خيار الرابط
-الاسترخاء.
-مهم
استخدم إزاحات 32 بت في جداول "التبديل". الافتراضي هو استخدام إزاحات 16 بت.
-مبيتوبس
تفعيل استخدام تعليمات معالجة البت في SH2A.
-مفموفد
تفعيل استخدام التعليمات "fmovd". التحقق من -Mdalign لقيود المحاذاة.
-مرينا
الامتثال لاتفاقيات الاستدعاء المحددة بواسطة Renesas.
-منو-رينيساس
الامتثال لاتفاقيات الاستدعاء المحددة لـ GCC قبل اتفاقيات Renesas
كانت متاحة. هذا الخيار هو الخيار الافتراضي لجميع أهداف سلسلة أدوات SH.
-منوماكسيف
ضع علامة على سجل "MAC" على أنه clobbered ، حتى لو كان -مرينا معطى.
-مييي
-منو-اييي
التحكم في امتثال IEEE لمقارنات النقطة العائمة ، مما يؤثر على المعالجة
الحالات التي تكون فيها نتيجة المقارنة غير مرتبة. بشكل افتراضي -مييي is
ممكّن ضمنيًا. لو - غير محدد - الرياضيات فقط يتم تمكين -منو-اييي تم تعيينه ضمنيًا ،
مما ينتج عنه مقارنات أسرع بالفاصلة العائمة أكبر مساواة وأقل مساواة. ال
يمكن تجاوز إعدادات implcit بتحديد إما -مييي or -منو-اييي.
-minline- ic_invalidate
التعليمات البرمجية المضمنة لإبطال إدخالات ذاكرة التخزين المؤقت للتعليمات بعد إعداد وظيفة متداخلة
الترامبولين. هذا الخيار ليس له أي تأثير إذا -موسمود ساري المفعول والمختار
خيار إنشاء الكود (على سبيل المثال م 4) لا يسمح باستخدام تعليمات "icbi".
إذا كان خيار إنشاء الكود المحدد لا يسمح باستخدام "icbi"
التعليمات و -موسمود ليس ساري المفعول ، فالشفرة المضمنة تتعامل مع
مصفوفة عنوان ذاكرة التخزين المؤقت للتعليمات مباشرةً مع كتابة ترابطية. هذا ليس فقط
يتطلب وضعًا مميزًا في وقت التشغيل ، ولكنه يفشل أيضًا إذا كان سطر ذاكرة التخزين المؤقت
تعيينها عبر TLB وأصبحت غير مخططة.
-حجم
حجم التعليمات التفريغ والموقع في كود التجميع.
-مباديم
تم إهمال هذا الخيار. إنها تقوم بتدبيس الهياكل بمضاعفات 4 بايت ، وهو
غير متوافق مع SH ABI.
-النموذج الذري =نموذج
يضبط نموذج العمليات الذرية والمعلمات الإضافية على هيئة فاصلة مفصولة
قائمة. للحصول على تفاصيل حول الوظائف الذرية المدمجة انظر __الذري البنايات.
يتم دعم النماذج والمعلمات التالية:
لا شيء
تعطيل المتواليات الذرية التي تم إنشاؤها بواسطة المترجم وإصدار استدعاءات مكتبة لـ atomic
عمليات. هذا هو الإعداد الافتراضي إذا لم يكن الهدف "sh * - * - linux *".
لينة غوسا
قم بإنشاء تسلسلات ذرية لبرمجيات gUSA متوافقة مع GNU / Linux للمحتوى الذري المدمج
في الوظائف. تتطلب التسلسلات الذرية المتولدة دعمًا إضافيًا من
رمز معالجة المقاطعة / الاستثناء للنظام وهي مناسبة فقط لـ SH3 * و
SH4 * أنظمة أحادية النواة. يتم تمكين هذا الخيار افتراضيًا عندما يكون الهدف هو
"sh * - * - linux *" و SH3 * أو SH4 *. عندما يكون الهدف هو SH4A ، فإن هذا الخيار أيضًا
يستخدم جزئيًا التعليمات الذرية للأجهزة "movli.l" و "movco.l" إلى
إنشاء كود أكثر كفاءة ، ما لم صارم محدد.
لينة tcb
قم بإنشاء تسلسلات ذرية للبرامج تستخدم متغيرًا في عنصر التحكم في مؤشر الترابط
منع. هذا هو نوع مختلف من تسلسل gUSA والذي يمكن استخدامه أيضًا على SH1 *
وأهداف SH2 *. تتطلب التسلسلات الذرية المتولدة دعمًا إضافيًا من
رمز معالجة المقاطعة / الاستثناء للنظام وهي مناسبة فقط لـ
أنظمة أحادية النواة. عند استخدام هذا النموذج ، فإن gbr-offset = يجب أن تكون المعلمة
محدد كذلك.
لينة قناع
قم بإنشاء تسلسلات ذرية للبرامج تعمل على تعطيل المقاطعات مؤقتًا عن طريق الضبط
"SR.IMASK = 1111". يعمل هذا النموذج فقط عندما يعمل البرنامج في الوضع المميز
وهو مناسب فقط للأنظمة أحادية النواة. دعم إضافي من
المقاطعة / الاستثناء التعامل مع رمز النظام غير مطلوب. هذا النموذج
يتم تمكينه افتراضيًا عندما يكون الهدف هو "sh * - * - linux *" و SH1 * أو SH2 *.
صعب llcs
قم بإنشاء تسلسلات ذرية للأجهزة باستخدام تعليمات "movli.l" و "movco.l"
فقط. هذا متاح فقط في SH4A وهو مناسب للأنظمة متعددة النواة.
نظرًا لأن تعليمات الأجهزة تدعم فقط 32 بت المتغيرات الذرية ، يمكنك الوصول إلى 8
أو متغيرات 16 بت تتم محاكاتها بوصول 32 بت. تم تجميع التعليمات البرمجية مع هذا
الخيار متوافق أيضًا مع مقاطعة / استثناء البرنامج الذري الآخر
أنظمة المناولة إذا تم تنفيذها على نظام SH4A. دعم إضافي من
رمز معالجة المقاطعة / الاستثناء للنظام غير مطلوب لهذا الطراز.
gbr-offset =
تحدد هذه المعلمة الإزاحة بالبايت للمتغير في عنصر تحكم مؤشر الترابط
هيكل الكتلة الذي يجب استخدامه بواسطة المتواليات الذرية المتولدة عند
لينة tcb تم اختيار النموذج. بالنسبة للنماذج الأخرى ، يتم تجاهل هذه المعلمة.
يجب أن تكون القيمة المحددة عددًا صحيحًا مضاعفًا لأربعة ويتراوح بين 0 و 1020.
صارم
تمنع هذه المعلمة الاستخدام المختلط لنماذج ذرية متعددة ، حتى لو كانت كذلك
متوافق ، ويجعل المترجم يولد متواليات ذرية من المحدد
الموديل فقط.
-متاس
قم بإنشاء كود التشغيل "tas.b" لـ "__atomic_test_and_set". لاحظ أن اعتمادًا على ملف
يمكن أن يؤدي تكوين أجهزة وبرامج معينة إلى تدهور الأداء العام
بسبب عمليات مسح سطر ذاكرة التخزين المؤقت للمعامل التي يتم تضمينها بواسطة تعليمة "tas.b". تشغيل
معالجات SH4A متعددة النواة يجب استخدام تعليمات "tas.b" بحذر نظرًا لأنها
يمكن أن يؤدي إلى تلف البيانات لبعض تكوينات ذاكرة التخزين المؤقت.
-مبريفيرجوت
عند إنشاء رمز مستقل عن الموضع ، أرسل استدعاءات دالة باستخدام Global Offset
جدول بدلاً من جدول ربط الإجراءات.
-موسمود
-منو-المستخدم
لا تسمح (تسمح) للمترجم بإنشاء رمز وضع الامتياز. التحديد
-موسمود يعني أيضا -mno- مضمنة- ic_invalidate إذا لم يعمل الرمز المضمّن
في وضع المستخدم. -موسمود هو الافتراضي عندما يكون الهدف هو "sh * - * - linux *". إذا كان
الهدف هو SH1 * أو SH2 * -موسمود ليس له أي تأثير ، حيث لا يوجد وضع مستخدم.
-Multcost =عدد
قم بتعيين التكلفة التي يجب تحملها مقابل عملية الضرب.
-mdiv =إستراتيجية
تعيين استراتيجية القسمة لاستخدامها في عمليات القسمة الصحيحة. لشميديا
إستراتيجية يمكن أن يكون أحد:
fp ينفذ العملية في النقطة العائمة. هذا له وقت استجابة مرتفع جدًا ، ولكنه يحتاج
فقط بعض التعليمات ، لذلك قد يكون اختيارًا جيدًا إذا كانت التعليمات البرمجية الخاصة بك كافية
ILP سهل الاستغلال للسماح للمترجم بجدولة النقطة العائمة
تعليمات مع تعليمات أخرى. القسمة على الصفر تسبب أ
استثناء النقطة العائمة.
الجرد يستخدم عمليات الأعداد الصحيحة لحساب معكوس المقسوم عليه ، ثم
يضرب المقسوم في المعكوس. تسمح هذه الإستراتيجية بمحرك CSE والرفع
من الحساب العكسي. تحسب القسمة على الصفر نتيجة غير محددة ،
لكنها لا تحبس.
inv: minlat
متغير من الجرد أين ، إذا لم يتم العثور على CSE أو فرص الرفع ، أو إذا
تم رفع العملية بأكملها إلى نفس المكان ، في المراحل الأخيرة من
يتشابك الحساب العكسي مع الضرب النهائي لتقليل الإجمالي
الكمون ، على حساب استخدام عدد قليل من الإرشادات ، وبالتالي تقديم عدد أقل
جدولة الفرص مع كود آخر.
دعوة
يستدعي وظيفة المكتبة التي عادةً ما تنفذ الامتداد inv: minlat إستراتيجية. هذه
يعطي كثافة رمز عالية لمجموعات "m5- * media-nofpu".
call2
يستخدم نقطة إدخال مختلفة لوظيفة المكتبة نفسها ، حيث تفترض أن ملف
تم بالفعل إعداد المؤشر إلى جدول بحث ، مما يعرض تحميل المؤشر
إلى محرك البحث المخصص وتحسينات رفع التعليمات البرمجية.
inv: call
inv: call2
inv: fp
استخدم الجرد خوارزمية لتوليد الكود الأولي ، ولكن إذا بقيت الشفرة
غير محسن ، ارجع إلى دعوة, call2الطرق أو fp الاستراتيجيات ، على التوالي. لاحظ أن
يحمل التأثير الجانبي الذي يحتمل اصطياده للقسمة على الصفر بواسطة منفصل
التعليمات ، لذلك من الممكن أن يتم رفع جميع تعليمات الأعداد الصحيحة ،
لكن علامة الأثر الجانبي تبقى في مكانها. إعادة تركيب ل
لا يمكن إجراء عمليات الفاصلة العائمة أو المكالمة في هذه الحالة.
inv20u
inv20l
المتغيرات من inv: minlat إستراتيجية. في حالة أن الحساب المعكوس هو
غير مفصولة عن المضاعفة ، فهي تسرع القسمة حيث يناسب المقسوم
20 بت (علامة الجمع عند الاقتضاء) عن طريق إدخال اختبار لتخطي عدد من
العمليات في هذه الحالة ؛ هذا الاختبار يبطئ حالة أرباح الأسهم الكبيرة.
inv20u يفترض أنه من غير المحتمل أن يكون هناك عائد صغير مثل هذا ، و inv20l
يفترض أنه من المحتمل.
لأهداف أخرى غير SHmedia إستراتيجية يمكن أن يكون أحد:
دعوة div1
لاستدعاء وظيفة مكتبة تستخدم تعليمات القسمة بخطوة واحدة "div1" إلى
إجراء العملية. تحسب القسمة على الصفر نتيجة غير محددة وتقوم بذلك
لا فخ. هذا هو الإعداد الافتراضي باستثناء SH4 و SH2A و SHcompact.
دعوة fp
لاستدعاء وظيفة مكتبة تؤدي العملية بدقة مزدوجة عائمة
نقطة. تؤدي القسمة على الصفر إلى استثناء النقطة العائمة. هذا هو الافتراضي
من أجل SHcompact مع FPU. تحديد هذا للأهداف التي لا تحتوي على مزدوج
الدقة الافتراضية FPU إلى "call-div1".
طاولة الاتصال
لاستدعاء وظيفة مكتبة تستخدم جدول بحث للمقسومات الصغيرة و
تعليمات "div1" مع تمييز حالة الأحرف للقواسم الأكبر. القسمة على صفر
يحسب نتيجة غير محددة ولا اعتراض. هذا هو الإعداد الافتراضي لـ SH4.
تحديد هذا للأهداف التي لا تحتوي على إرشادات افتراضية للتحويل الديناميكي
إلى "call-div1".
عندما لا يتم تحديد إستراتيجية التقسيم ، يتم تحديد الإستراتيجية الافتراضية على أساس
على الهدف الحالي. بالنسبة إلى SH2A ، تتمثل الإستراتيجية الافتراضية في استخدام "divs" و "divu"
التعليمات بدلاً من استدعاءات وظيفة المكتبة.
-تراكم-أرغس الصادرة
احتفظ بمساحة مرة واحدة للحجج الصادرة في مقدمة الوظيفة وليس حولها
كل مكالمة. مفيد بشكل عام للأداء والحجم. هناك حاجة أيضًا للفك
لتجنب تغيير إطار المكدس حول الكود الشرطي.
-mdivsi3_libfunc =الاسم
قم بتعيين اسم وظيفة المكتبة المستخدمة للتقسيم الموقع 32 بت إلى الاسم. هذا
يؤثر فقط على الاسم المستخدم في دعوة inv: call تقسيم استراتيجيات و
لا يزال المترجم يتوقع نفس مجموعات الإدخال / الإخراج / السجلات المضطربة كما لو كان هذا
الخيار لم تكن موجودة.
- المدى الثابت =نطاق التسجيل
إنشاء رمز يعامل نطاق السجل المحدد كسجلات ثابتة. سجل ثابت
هو الذي لا يمكن لمخصص السجل استخدامه. هذا مفيد عند تجميع النواة
الشفرة. يتم تحديد نطاق التسجيل كسجلين مفصولة بشرطة. عديد
يمكن تحديد نطاقات التسجيل مفصولة بفاصلة.
-مخاطبة-مخاطبة
تفعيل استخدام وضع العنونة المفهرس لـ SHmedia32 / SHcompact. هذا فقط
آمن إذا كان الجهاز و / أو نظام التشغيل يطبقان دلالات التفافية 32 بت للمفهرس
وضع العنونة. تسمح البنية بتنفيذ معالجات 64 بت
MMU ، والتي يمكن أن يستخدمها نظام التشغيل للحصول على عنونة 32 بت ، ولكن نظرًا لعدم وجود أجهزة حالية
يدعم التطبيق هذا أو أي طريقة أخرى لجعل وضع العنونة المفهرس آمنًا
لاستخدامه في 32 بت ABI ، الافتراضي هو -رقم-العنونة المفهرسة.
-mgettrcost =عدد
قم بتعيين التكلفة المفترضة لتعليمات "gettr" على عدد. الافتراضي هو 2 إذا
-مبت- ثابت سارية ، 100 خلاف ذلك.
-مبت- ثابت
افترض أن الإرشادات "pt *" لن تتعارض. يؤدي هذا بشكل عام إلى إنشاء رمز مجدول بشكل أفضل ،
لكنه غير آمن على الأجهزة الحالية. تعريف العمارة الحالي يقول ذلك
فخ "ptabs" و "ptrel" عندما يكون الهدف و 3 هو 3. هذا يحتوي على
تأثير غير مقصود يجعل من غير الآمن جدولة هذه التعليمات قبل أ
فرع ، أو ارفعهم خارج الحلقة. على سبيل المثال ، "__do_global_ctor" ، جزء من
libgcc الذي يدير المُنشئين عند بدء تشغيل البرنامج ، يستدعي الوظائف في قائمة هي
محدد بـ -1. مع ال -مبت- ثابت الخيار ، يتم عمل "ptabs" قبل الاختبار
ضد -1. هذا يعني أن جميع المنشئات تعمل بسرعة أكبر قليلاً ، ولكن عندما يكون ملف
تصل الحلقة إلى نهاية القائمة ، ويتعطل البرنامج لأن "ptabs" يتم تحميل -1 إلى ملف
سجل الهدف.
نظرًا لأن هذا الخيار غير آمن لأي جهاز يقوم بتنفيذ البنية الحالية
المواصفات ، الافتراضي هو -منو- حزب العمال- ثابت. ما لم يتم تحديده صراحةً بـ
-mgettrcost, -منو- حزب العمال- ثابت يعني أيضا -mgettrcost = 100؛ هذا يردع التسجيل
التخصيص من استخدام السجلات الهدف لتخزين الأعداد الصحيحة العادية.
-الرموز غير الصالحة
افترض أن الرموز قد تكون غير صالحة. رموز الوظيفة العادية التي تم إنشاؤها بواسطة المترجم
صالحة دائمًا للتحميل مع "movi" / "shori" / "ptabs" أو "movi" / "shori" / "ptrel" ، ولكن
باستخدام حيل المجمع و / أو الرابط ، من الممكن إنشاء الرموز التي تسبب
"ptabs" أو "ptrel" للفخ. يكون هذا الخيار ذا مغزى فقط عندما -منو- حزب العمال- ثابت في
تأثير. يمنع محرك البحث المخصص المتقاطع الأساسي ، ورفع معظم الرموز وجدولة
الأحمال. الافتراضي هو -رموز-غير صالحة.
- تكلفة الامتياز =NUM
افترض NUM لتكون تكلفة تعليمات الفرع. أعداد أكبر تصنع المترجم
حاول إنشاء المزيد من التعليمات البرمجية الخالية من الفروع إن أمكن. إذا لم يتم تحديد القيمة
تم تحديده وفقًا لنوع المعالج الذي يتم تجميعه من أجله.
-مزدكبرانش
-mno-zdcbranch
افترض (لا تفترض) أن تعليمات الفرع الشرطي للإزاحة الصفرية "bt" و
"فرنك بلجيكي" سريعة. لو -مزدكبرانش محددًا ، فإن المترجم يفضل عدم الإزاحة
تسلسل رمز الفرع. يتم تمكين هذا افتراضيًا عند إنشاء رمز لـ SH4 و
SH4A. يمكن تعطيله بشكل صريح عن طريق تحديد -mno-zdcbranch.
-mcbranch- قوة- تأخير- فتحة
فرض استخدام خانات التأخير للفروع الشرطية ، مما يؤدي إلى حشو فجوة التأخير
مع "nop" إذا تعذر العثور على التعليمات المناسبة. افتراضيا هذا الخيار هو
معاق. يمكن تمكينه للتغلب على أخطاء الأجهزة كما هو موجود في الأصل
SH7055.
-مفوس-ماد
-منو-تنصهر-ماد
قم بإنشاء رمز يستخدم (لا يستخدم) الفاصلة العائمة في الضرب والتراكم
تعليمات. يتم إنشاء هذه التعليمات بشكل افتراضي إذا كانت النقطة العائمة للأجهزة
يستخدم. يعتمد على الآلة -مفوس-ماد يتم الآن تعيين الخيار للجهاز-
مستقل -ffp-Contract = سريع الخيار، و -منو-تنصهر-ماد تم تعيينه إلى
-ffp- عقد = إيقاف.
-مفسكا
-منو- fsca
السماح أو عدم السماح للمترجم بإرسال تعليمات "fsca" للجيب وجيب التمام
تقريبية. الخيار -مفسكا يجب أن تستخدم في تركيبة مع
-ممتعة-الرياضيات-التحسينات. يتم تمكينه افتراضيًا عند إنشاء رمز لـ SH4A.
باستخدام -منو- fsca تعطيل تقريب الجيب وجيب التمام حتى لو
-ممتعة-الرياضيات-التحسينات ساري المفعول.
-مفسرا
-منو فسرا
اسمح أو لا تسمح للمترجم بإرسال تعليمات "fsrra" للمربع المتبادل
تقريب الجذر. الخيار -مفسرا يجب أن تستخدم في تركيبة مع
-ممتعة-الرياضيات-التحسينات - غير محدد - الرياضيات فقط. يتم تمكينه بشكل افتراضي عندما
توليد كود SH4A. استخدام -منو فسرا تعطيل مقلوب الجذر التربيعي
تقريبية حتى لو -ممتعة-الرياضيات-التحسينات - غير محدد - الرياضيات فقط هي في
تأثير.
- ترجمة - سموف
تفضل الفروع الشرطية ذات الإزاحة الصفرية لتعليمات الحركة الشرطية
أنماط - رسم. يمكن أن ينتج عن هذا رمز أسرع على معالج SH4.
سولاريس 2 مزيد من الخيارات
تشبه -m الخيارات مدعومة في Solaris 2:
-Mclear-hwcap
-Mclear-hwcap يخبر المترجم بإزالة إمكانيات الأجهزة التي تم إنشاؤها بواسطة
مجمع سولاريس. هذا ضروري فقط عندما تستخدم ملفات الكائن ملحقات ISA لا
مدعوم من الجهاز الحالي ، ولكن تحقق في وقت التشغيل مما إذا كنت تريد استخدامها أم لا.
-طبخ-النص
-طبخ-النصتستخدم بالإضافة إلى -مشاركةيخبر المترجم بعدم المرور -z نص إلى
الرابط عند ربط كائن مشترك. باستخدام هذا الخيار ، يمكنك ربط الموضع-
رمز تابع في كائن مشترك.
-طبخ-النص يلغي "عمليات النقل تظل ضد التخصيص ولكن غير قابلة للكتابة
المقاطع "رسالة خطأ رابط. ومع ذلك ، تؤدي عمليات النقل الضرورية إلى
الكتابة ، ولا تتم مشاركة الكائن المشترك فعليًا عبر العمليات. بدلا من
استخدام -طبخ-النص، يجب عليك تجميع كافة التعليمات البرمجية المصدر باستخدام -fpic or -fPIC.
يتم دعم هذه المفاتيح بالإضافة إلى ما سبق في Solaris 2:
- الصفحات
أضف دعمًا لتعدد مؤشرات الترابط باستخدام مكتبة خيوط POSIX. يحدد هذا الخيار
أعلام لكل من المعالج والرابط. هذا الخيار لا يؤثر على الموضوع
سلامة التعليمات البرمجية الهدف التي ينتجها المترجم أو المكتبات المزودة به.
-الخطأ
هذا مرادف ل - الصفحات.
SPARC مزيد من الخيارات
تشبه -m الخيارات مدعومة على SPARC:
-mno-app-regs
-map-regs
تحديد -map-regs لتوليد المخرجات باستخدام السجلات العالمية من 2 إلى 4 ، والتي
يحتفظ SPARC SVR4 ABI بالتطبيقات. مثل السجل العالمي 1 ، كل عالمي
يتم التعامل مع السجل من 2 إلى 4 على أنه سجل قابل للتخصيص يتم ضربه بواسطة
مكالمات وظيفية. هذا هو الافتراضي.
لكي تكون متوافقًا تمامًا مع SVR4 ABI على حساب بعض فقدان الأداء ، حدد
-mno-app-regs. يجب عليك تجميع المكتبات وبرامج النظام باستخدام هذا الخيار.
-مسطحة
-منو- شقة
بدافع -مسطحة، لا يقوم المترجم بإنشاء تعليمات الحفظ / الاستعادة ويستخدم ملف
نموذج نافذة "مسطح" أو تسجيل مفرد. هذا النموذج متوافق مع العادي
تسجيل نموذج النافذة. السجلات المحلية وسجلات الإدخال (0-5) لا تزال
تعامل كسجلات "حفظ الاتصال" ويتم حفظها في المكدس حسب الحاجة.
بدافع -منو- شقة (الافتراضي) ، يقوم المترجم بإنشاء تعليمات الحفظ / الاستعادة (باستثناء ملفات
لوظائف الأوراق). هذا هو وضع التشغيل العادي.
-مفبو
-مشدد-تعويم
توليد الإخراج الذي يحتوي على تعليمات الفاصلة العائمة. هذا هو الافتراضي.
-منو- fpu
-مسنة- تعويم
توليد الناتج يحتوي على المكالمات مكتبة للالنقطة العائمة. : تحذير المطلوب
المكتبات غير متوفرة لجميع أهداف SPARC. عادة ما تكون مرافق
يتم استخدام مترجم C المعتاد للجهاز ، ولكن لا يمكن القيام بذلك بشكل مباشر
التحويل البرمجي. يجب عليك عمل الترتيبات الخاصة بك لتوفير مكتبة مناسبة
وظائف للترجمة المتقاطعة. الأهداف المضمنة sparc - * - aout سباركلايت - * - *
لا تقدم دعم البرمجيات العائمة.
-مسنة- تعويم يغير اصطلاح الاستدعاء في ملف الإخراج ؛ لذلك ، فهي فقط
مفيد إذا كنت تقوم بالتجميع الكل من برنامج بهذا الخيار. على وجه الخصوص ، تحتاج إلى
جمع libgcc.a، المكتبة التي تأتي مع دول مجلس التعاون الخليجي ، مع -مسنة- تعويم من أجل هذا
للعمل.
-محدد-رباعي-تعويم
قم بإنشاء إخراج يحتوي على تعليمات ذات فاصلة عائمة رباعية الكلمات (طويلة مزدوجة).
-يمنة-رباعية-تعويم
قم بإنشاء إخراج يحتوي على استدعاءات مكتبة للفاصلة العائمة الرباعية الكلمات (طويلة مزدوجة)
تعليمات. الوظائف المسماة هي تلك المحددة في SPARC ABI. هذا ال
افتراضي.
حتى كتابة هذه السطور ، لا توجد تطبيقات SPARC تدعم الأجهزة الخاصة بها
تعليمات الفاصلة العائمة الرباعية الكلمات. كلهم يستدعيون معالج الفخ لواحد من
هذه التعليمات ، ثم يقوم معالج الملاءمة بمحاكاة تأثير التعليمات.
بسبب حمل معالج الملاءمة ، يكون هذا أبطأ بكثير من استدعاء مكتبة ABI
الروتين. وهكذا -يمنة-رباعية-تعويم الخيار هو الافتراضي.
زوجي غير محاذي
-متلائم-الزوجي
افترض أن المضاعفات لها محاذاة 8 بايت. هذا هو الافتراضي.
بدافع -متلائم-الزوجي، يفترض مجلس التعاون الخليجي أن المضاعفات لها محاذاة 8 بايت فقط إذا كانت كذلك
مضمنة في نوع آخر ، أو إذا كان لها عنوان مطلق. وإلا فإنه
يفترض أن لديهم محاذاة 4 بايت. تحديد هذا الخيار يتجنب بعض نادرة
مشاكل التوافق مع التعليمات البرمجية التي تم إنشاؤها بواسطة المجمعين الآخرين. ليس هذا هو الافتراضي
لأنه ينتج عنه خسارة في الأداء ، خاصةً بالنسبة لرمز الفاصلة العائمة.
- وضع المستخدم
-لا-وضع المستخدم
لا تنشئ رمزًا يمكن تشغيله في وضع المشرف فقط. هذا مناسب فقط ل
تعليمات "casa" المنبعثة من معالج LEON3. هذا هو الافتراضي.
- أسرع - الهياكل
-أسرع الهياكل
بدافع -أسرع الهياكل، يفترض المترجم أن الهياكل يجب أن تحتوي على 8 بايت
انتقام. يتيح ذلك استخدام أزواج من التعليمات "ldd" و "الأمراض المنقولة جنسياً" للنسخ
في تعيين الهيكل ، بدلاً من ضعف عدد أزواج "ld" و "st". ومع ذلك ، فإن
استخدام هذا المحاذاة المتغيرة ينتهك بشكل مباشر SPARC ABI. وبالتالي ، فهو مقصود
فقط للاستخدام على الأهداف حيث يقر المطور بأن الكود الناتج هو
لا يتماشى بشكل مباشر مع قواعد ABI.
-mcpu =نوع_ وحدة المعالجة المركزية
قم بتعيين مجموعة التعليمات ، وتسجيل مجموعة ، ومعلمات جدولة التعليمات لـ
نوع الجهاز نوع_ وحدة المعالجة المركزية. القيم المدعومة لـ نوع_ وحدة المعالجة المركزية . v7, شجر السرو, v8, com.supersparc,
هايبرسبارك, ليون, leon3, ليون, سباركلايت, f930, f934, سباركليت, سباركليت,
TSC701, v9, أولتراسبارك, Ultrasparc3, نياجرا, نياجرا 2, نياجرا 3 نياجرا 4.
تدعم سلاسل أدوات Native Solaris و GNU / Linux القيمة أيضًا محليالتي تختار
أفضل خيار معماري للمعالج المضيف. -mcpu = أصلي ليس له تأثير إذا
مجلس التعاون الخليجي لا يتعرف على المعالج.
تُستخدم معلمات جدولة التعليمات الافتراضية للقيم التي تحدد ملف
العمارة وليس التنفيذ. وهذه هي v7, v8, سباركلايت, سباركليت, v9.
فيما يلي قائمة بكل بنية مدعومة وعمليات تنفيذها المدعومة.
v7 السرو ، leon3v7
v8 سوبيرسبارك ، هايبرسبارك ، ليون ، ليون 3
سباركلايت
f930 ، f934 ، sparclite86x
سباركليت
TSC701
v9 ultrasparc ، ultrasparc3 ، niagara ، niagara2 ، niagara3 ، niagara4
بشكل افتراضي (ما لم يتم تكوينه بطريقة أخرى) ، ينشئ GCC رمزًا لمتغير V7 من
هندسة SPARC. مع -mcpu = شجر السرو، بالإضافة إلى ذلك ، يقوم المترجم بتحسينها من أجل
شريحة Cypress CY7C602 ، كما هو مستخدم في سلسلة SPARCStation / SPARCServer 3xx. هذا هو
مناسب أيضًا لأجهزة SPARCStation 1 و 2 و IPX الأقدم وما إلى ذلك.
بدافع -mcpu = v8، ينشئ GCC رمزًا لمتغير V8 لهندسة SPARC. ال
الاختلاف الوحيد عن كود V7 هو أن المحول البرمجي يرسل عددًا صحيحًا يتضاعف و
تعليمات قسمة الأعداد الصحيحة الموجودة في SPARC-V8 ولكن ليس في SPARC-V7. مع
-mcpu = supersparc، يقوم المترجم أيضًا بتحسينها لشريحة SuperSPARC ، مثل
تستخدم في سلسلة SPARCStation 10 و 1000 و 2000.
بدافع -mcpu = سباركلايت، يقوم مجلس التعاون الخليجي بإنشاء رمز لمتغير SPARClite من SPARC
هندسة معمارية. يؤدي هذا إلى إضافة عدد صحيح مضاعف ، وخطوة قسمة عدد صحيح ومسح ("ffs")
التعليمات الموجودة في SPARClite ولكن ليس في SPARC-V7. مع - وحدة المعالجة المركزية = f930أطلقت حملة
بالإضافة إلى ذلك ، يقوم المترجم بتحسينها لشريحة Fujitsu MB86930 ، وهي الأصلية
SPARClite ، مع عدم وجود FPU. مع - وحدة المعالجة المركزية = f934، بالإضافة إلى ذلك ، يقوم المترجم بتحسينها من أجل
شريحة Fujitsu MB86934 ، وهي أحدث SPARClite مع FPU.
بدافع -mcpu = سباركليت، ينشئ GCC رمزًا لمتغير SPARClet الخاص بـ SPARC
هندسة معمارية. هذا يضيف عددًا صحيحًا يتضاعف ، يضرب / يتراكم ، قسمة عدد صحيح
الخطوة والمسح الضوئي ("ffs") التعليمات الموجودة في SPARClet ولكن ليس في SPARC-V7. مع
-mcpu = tsc701، يقوم المترجم أيضًا بتحسينها لشريحة TEMIC SPARClet.
بدافع -mcpu = v9، ينشئ GCC رمزًا لمتغير V9 لهندسة SPARC. هذه
يضيف عددًا صحيحًا 64 بت وتعليمات نقل النقطة العائمة ، 3 فاصلة عائمة إضافية
سجلات كود الشرط وتعليمات النقل الشرطية. مع -mcpu = ultrasparc,
يقوم المترجم أيضًا بتحسينها لرقائق Sun UltraSPARC I / II / IIi. مع
-mcpu = ultrasparc3، بالإضافة إلى ذلك ، يقوم المترجم بتحسينه من أجل Sun UltraSPARC
رقائق III / III + / IIIi / IIIi + / IV / IV +. مع -mcpu = نياجرا، بالإضافة إلى المترجم
يحسنها لرقائق Sun UltraSPARC T1. مع -mcpu = niagara2المترجم
بالإضافة إلى ذلك يحسنها لرقائق Sun UltraSPARC T2. مع -mcpu = niagara3أطلقت حملة
بالإضافة إلى ذلك ، يعمل المترجم على تحسينه لرقائق Sun UltraSPARC T3. مع -mcpu = niagara4,
يقوم المترجم أيضًا بتحسينها لرقائق Sun UltraSPARC T4.
-mtune =نوع_ وحدة المعالجة المركزية
قم بتعيين معلمات جدولة التعليمات لنوع الجهاز نوع_ وحدة المعالجة المركزية، ولكن لا تحدد
مجموعة التعليمات أو سجل تعيين هذا الخيار -mcpu =نوع_ وحدة المعالجة المركزية لا.
نفس القيم ل -mcpu =نوع_ وحدة المعالجة المركزية يمكن استخدامها ل -mtune =نوع_ وحدة المعالجة المركزية، ولكن الوحيد
القيم المفيدة هي تلك التي تحدد تطبيقًا معينًا لوحدة المعالجة المركزية. هؤلاء يكونون
شجر السرو, com.supersparc, هايبرسبارك, ليون, leon3, ليون, f930, f934, سباركليت,
TSC701, أولتراسبارك, Ultrasparc3, نياجرا, نياجرا 2, نياجرا 3 نياجرا 4. مع
سلاسل أدوات Solaris و GNU / Linux الأصلية ، محلي يمكن أن تستخدم أيضا.
-mv8plus
-منو- v8plus
بدافع -mv8plus، يقوم مجلس التعاون الخليجي بإنشاء رمز لـ SPARC-V8 + ABI. الفرق من V8
ABI هو أن المسجلات العالمية والخارجية تعتبر بعرض 64 بت. تم تمكين هذا
افتراضيًا على Solaris في وضع 32 بت لجميع معالجات SPARC-V9.
-مفيس
-منو-فيس
بدافع -مفيس، ينشئ GCC رمزًا يستفيد من UltraSPARC Visual
مجموعة التعليمات ملحقات. الافتراضي هو -منو-فيس.
-mvis2
-منو- vis2
بدافع -mvis2، ينشئ GCC رمزًا يستفيد من الإصدار 2.0 من UltraSPARC
ملحقات مجموعة التعليمات المرئية. الافتراضي هو -mvis2 عند استهداف وحدة المعالجة المركزية
يدعم مثل هذه التعليمات ، مثل UltraSPARC-III والإصدارات الأحدث. ضبط -mvis2 أيضا
بدلات رسمية -مفيس.
-mvis3
-منو- vis3
بدافع -mvis3، ينشئ GCC رمزًا يستفيد من الإصدار 3.0 من UltraSPARC
ملحقات مجموعة التعليمات المرئية. الافتراضي هو -mvis3 عند استهداف وحدة المعالجة المركزية
يدعم هذه التعليمات ، مثل niagara-3 وما بعده. ضبط -mvis3 يحدد أيضا
-mvis2 -مفيس.
-مكوند
-منو- cbcond
بدافع -مكوند، ينشئ GCC رمزًا يستفيد من المقارنة والفرع
التعليمات ، كما هو محدد في Sparc Architecture 2011. الافتراضي هو -مكوند متى
استهداف وحدة المعالجة المركزية التي تدعم مثل هذه التعليمات ، مثل niagara-4 وما بعده.
-mpopc
-منو-بوبك
بدافع -mpopc، ينشئ GCC رمزًا يستفيد من مجموعة UltraSPARC
عد التعليمات. الافتراضي هو -mpopc عند استهداف وحدة المعالجة المركزية التي تدعم مثل
التعليمات ، مثل Niagara-2 والإصدارات الأحدث.
-مفماف
-منو فماف
بدافع -مفماف، ينشئ GCC رمزًا يستفيد من UltraSPARC Fused Multiply-
أضف ملحقات الفاصلة العائمة. الافتراضي هو -مفماف عند استهداف وحدة المعالجة المركزية
يدعم هذه التعليمات ، مثل Niagara-3 والإصدارات الأحدث.
- إصلاح- at697f
قم بتمكين الحل البديل الموثق للخطأ الفردي لمعالج Atmel AT697F
(والذي يتوافق مع الخطأ رقم 13 الخاص بمعالج AT697E).
-مفيكس- UT699
تمكين الحلول الموثقة لأخطاء الفاصلة العائمة وذاكرة التخزين المؤقت للبيانات
إبطال أخطاء المعالج UT699.
تشبه -m الخيارات مدعومة بالإضافة إلى ما سبق على معالجات SPARC-V9 في 64 بت
البيئات:
م 32
م 64
قم بإنشاء رمز لبيئة 32 بت أو 64 بت. تحدد بيئة 32 بت int ،
طويل ومؤشر إلى 32 بت. تعيين بيئة 64 بت int إلى 32 بت وطويل و
المؤشر إلى 64 بت.
-mcmodel =التي
اضبط نموذج الكود على واحد من
متوسط يميل للدنو
نموذج رمز متوسط / منخفض: عناوين 64 بت ، يجب ربط البرامج في 32 منخفضة
أجزاء من الذاكرة. يمكن ربط البرامج بشكل ثابت أو ديناميكي.
com.medmid
نموذج الشفرة المتوسطة / المتوسطة: عناوين 64 بت ، يجب ربط البرامج في المستوى المنخفض
44 بت من الذاكرة ، يجب أن يكون حجم مقاطع النص والبيانات أقل من 2 جيجابايت في الحجم و
يجب وضع مقطع البيانات في حدود 2 غيغابايت من مقطع النص.
مداني
نموذج الرمز "متوسط / في أي مكان": عناوين 64 بت ، يمكن ربط البرامج في أي مكان
في الذاكرة ، يجب أن يكون حجم نصي وبيانات البيانات أقل من 2 جيجابايت
يجب أن يقع الجزء في حدود 2 غيغابايت من مقطع النص.
تطريز
نموذج الرمز "متوسط / في أي مكان" للأنظمة المضمنة: عناوين 64 بت ، النص
ويجب أن يكون حجم أجزاء البيانات أقل من 2 غيغابايت ، وكلاهما يبدأ من أي مكان في الذاكرة
(تحدد في وقت الارتباط). سجل العام٪ g4 يشير إلى قاعدة البيانات
قطعة. البرامج مرتبطة بشكل ثابت ولا يتم دعم الموافقة المسبقة عن علم.
نموذج الذاكرة =نموذج الذاكرة
اضبط نموذج الذاكرة الساري على المعالج على واحد من
الافتراضي
نموذج الذاكرة الافتراضي للمعالج ونظام التشغيل.
RMO ترتيب الذاكرة المريحة
جهاز الأمن السياسي طلب متجر جزئي
تسو إجمالي طلب المتجر
sc الاتساق المتسلسل
تم تعريف نماذج الذاكرة هذه رسميًا في الملحق D الخاص بهندسة Sparc V9
يدويًا ، كما هو محدد في حقل المعالج "PSTATE.MM".
- التحيز المكدس
-لا-كومة-التحيز
بدافع - التحيز المكدس، يفترض GCC أن مؤشر المكدس ومؤشر الإطار إذا كان موجودًا ،
يتم تعويضها عن طريق -2047 والتي يجب إضافتها مرة أخرى عند عمل مراجع إطارات المكدس. هذه
هو الإعداد الافتراضي في وضع 64 بت. خلاف ذلك ، افترض عدم وجود مثل هذه الإزاحة.
SPU مزيد من الخيارات
تشبه -m الخيارات مدعومة في SPU:
-موارن-ريلوك
-الخطأ-نقل
مُحمل SPU لا يتعامل مع عمليات النقل الديناميكية. بشكل افتراضي ، يعطي GCC معنى
خطأ عند إنشاء رمز يتطلب نقل ديناميكي. -رقم-خطأ-نقل
يعطل الخطأ ، -موارن-ريلوك يولد تحذيرًا بدلاً من ذلك.
-المأمون- dma
-Munsafe- دما
يجب عدم إعادة ترتيب التعليمات التي تبدأ أو تختبر إكمال التحليل الميكانيكي الديناميكي (DMA) باستخدامها
فيما يتعلق بأحمال ومخازن الذاكرة التي يتم الوصول إليها. مع -Munsafe- دما
يجب عليك استخدام الكلمة الأساسية "المتغيرة" لحماية عمليات الوصول إلى الذاكرة ، ولكن يمكن أن يؤدي ذلك إلى
رمز غير فعال في الأماكن التي من المعروف أن الذاكرة لا تتغير. بدلا من مارك
الذاكرة متقلبة ، يمكنك استخدامها -المأمون- dma لإخبار المترجم بمعالجة التحليل الميكانيكي الديناميكي (DMA)
تعليمات يحتمل أن تؤثر على كل الذاكرة.
- تلميحات فرع
بشكل افتراضي ، ينشئ GCC إرشادات تلميح فرع لتجنب توقف خطوط الأنابيب لـ
الفروع المأخوذة دائمًا أو التي يحتمل أخذها. لم يتم إنشاء تلميح أقرب من 8
تعليمات بعيدا عن فرعها. لا يوجد سبب كاف لتعطيلها ، باستثناء
أغراض التصحيح ، أو لجعل كائن أصغر قليلاً.
-msmall-ميم
-كبير-ميم
بشكل افتراضي ، ينشئ GCC رمزًا بافتراض أن العناوين لا تزيد أبدًا عن 18 بت.
بدافع -كبير-ميم يتم إنشاء رمز يفترض عنوان 32 بت كامل.
-مستدمين
بشكل افتراضي ، روابط GCC مقابل رمز بدء التشغيل الذي يفترض الوظيفة الرئيسية لنمط SPU
الواجهة (التي تحتوي على قائمة معلمات غير تقليدية). مع -مستدمين، روابط دول مجلس التعاون الخليجي
برنامجك مقابل رمز بدء التشغيل الذي يفترض واجهة على غرار C99 إلى "main" ،
بما في ذلك نسخة محلية من سلاسل "argv".
- المدى الثابت =نطاق التسجيل
إنشاء رمز يعامل نطاق السجل المحدد كسجلات ثابتة. سجل ثابت
هي تلك التي لا يمكن لمخصص السجل استخدامها. هذا مفيد عند تجميع النواة
الشفرة. يتم تحديد نطاق التسجيل كسجلين مفصولة بشرطة. عديد
يمكن تحديد نطاقات التسجيل مفصولة بفاصلة.
-ميا 32
-ميا 64
تجميع التعليمات البرمجية بافتراض أن المؤشرات إلى مساحة عنوان PPU التي يتم الوصول إليها عبر "__ea"
مؤهل مساحة العنوان المسماة بعرض 32 أو 64 بت. الافتراضي هو 32 بت.
نظرًا لأن هذا خيار لتغيير ABI ، يجب تجميع كل التعليمات البرمجية للكائن في الملف القابل للتنفيذ
مع نفس الإعداد.
- العنوان - تحويل الفضاء
-رقم-عنوان-فضاء-تحويل
السماح / عدم السماح بمعالجة مساحة العنوان "__ea" كمجموعة شاملة من العنوان العام
فضاء. يتيح ذلك إمكانية إرسال النوع الصريح بين "__ea" والمؤشر العام أيضًا
التحويلات الضمنية للمؤشرات العامة إلى مؤشرات "__ea". الافتراضي هو السماح
عنوان تحويلات مؤشر الفضاء.
-حجم المخبأ =حجم ذاكرة التخزين المؤقت
يتحكم هذا الخيار في إصدار libgcc الذي يربط المحول البرمجي به ملف تنفيذي
ويحدد ذاكرة التخزين المؤقت التي يديرها البرنامج للوصول إلى المتغيرات في العنوان "__ea"
مساحة بحجم معين لذاكرة التخزين المؤقت. الخيارات الممكنة لـ حجم ذاكرة التخزين المؤقت . 8, 16, 32, 64
128. حجم ذاكرة التخزين المؤقت الافتراضي هو 64 كيلو بايت.
-التيارات-التحديثات
تحديثات -mno- الذرية
يتحكم هذا الخيار في إصدار libgcc الذي يربط المحول البرمجي به ملف تنفيذي
ويحدد ما إذا كانت التحديثات الذرية للتخزين المؤقت الذي يديره البرنامج لمتغيرات جانب PPU
يستخدم. إذا كنت تستخدم التحديثات الذرية ، فقم بالتغييرات إلى متغير PPU من كود SPU باستخدام
لا يتداخل مؤهل مساحة العنوان المسمى "__ea" مع التغييرات التي تطرأ على PPU الأخرى
المتغيرات الموجودة في نفس سطر ذاكرة التخزين المؤقت من كود PPU. إذا كنت لا تستخدم الذري
التحديثات ، قد يحدث مثل هذا التداخل ؛ ومع ذلك ، فإن إعادة كتابة سطور ذاكرة التخزين المؤقت أكثر
فعالة. السلوك الافتراضي هو استخدام التحديثات الذرية.
-مزدوج-نوبس
-mdual-nops =n
بشكل افتراضي ، تُدرج دول مجلس التعاون الخليجي nops لزيادة الإصدار المزدوج عندما تتوقع زيادة
أداء. n يمكن أن تكون القيمة من 0 إلى 10. أصغر n إدراج عدد أقل من nops. 10 هو
الافتراضي ، 0 هو نفسه -رقم-ثنائي-نوبس. معاق مع -أوس.
-النعناع-ماكس-نوبس =n
الحد الأقصى لعدد nops لإدراجها في تلميح فرع. يجب أن يكون تلميح الفرع 8 على الأقل
تعليمات بعيدًا عن الفرع الذي يؤثر فيه. دول مجلس التعاون الخليجي إدراج يصل إلى n نوب ل
فرض هذا ، وإلا فإنه لا يولد تلميح الفرع.
-نعمة-ماكس-مسافة =n
يحد تشفير تعليمات تلميح الفرع من أن يكون التلميح في حدود 256
تعليمات الفرع الذي يؤثر فيه. بشكل افتراضي ، تتأكد دول مجلس التعاون الخليجي من وجودها في الداخل
125
- تلميحات
قم بالتغلب على خطأ في الجهاز يؤدي إلى توقف SPU إلى أجل غير مسمى. بشكل افتراضي ، GCC
يقوم بإدراج تعليمات "hbrp" للتأكد من عدم حدوث هذا المماطلة.
مزيد من الخيارات For نظام V
تتوفر هذه الخيارات الإضافية في الإصدار 4 من النظام الخامس للتوافق مع الخيارات الأخرى
المجمعين على تلك الأنظمة:
-G إنشاء كائن مشترك. هذا موصى به -رمزي or -مشاركة يمكن استخدامها بدلا من ذلك.
-QY حدد إصدارات كل أداة يستخدمها المترجم ، في مُجمّع ".ident"
التوجيه في الإخراج.
-Qn الامتناع عن إضافة توجيهات ".ident" إلى ملف الإخراج (هذا هو الإعداد الافتراضي).
-YP ،تطبيق الاستعراض المفصل
ابحث في الدلائل تطبيق الاستعراض المفصل، وليس غيرها ، للمكتبات المحددة بـ -l.
نعم ،دير
ابحث في الدليل دير للعثور على المعالج M4. المجمع يستخدم هذا
الخيار.
بلاط Gx مزيد من الخيارات
تشبه -m الخيارات مدعومة على TILE-Gx:
-mcmodel = صغير
توليد رمز للنموذج الصغير. المسافة للمكالمات المباشرة محدودة بـ 500 متر
في أي من الاتجاهين. العناوين النسبية للكمبيوتر الشخصي هي 32 بت. دعم العناوين المطلقة
نطاق العنوان الكامل.
-mcmodel = كبير
توليد رمز للنموذج الكبير. لا توجد قيود على مسافة المكالمة ، الكمبيوتر-
عناوين نسبية ، أو عناوين مطلقة.
-mcpu =الاسم
يحدد نوع وحدة المعالجة المركزية المراد استهدافها. حاليا النوع الوحيد المدعوم هو معرف com لهذا التطبيق هو com.tilegx.
م 32
م 64
قم بإنشاء رمز لبيئة 32 بت أو 64 بت. تحدد بيئة 32 بت int ،
طويل ، ومؤشر إلى 32 بت. تعيين بيئة 64 بت int إلى 32 بت وطويل و
المؤشر إلى 64 بت.
-mbig-endian
-ملل-endian
إنشاء رمز في وضع endian كبير / صغير ، على التوالي.
تيليبرو مزيد من الخيارات
تشبه -m الخيارات مدعومة على TILEPro:
-mcpu =الاسم
يحدد نوع وحدة المعالجة المركزية المراد استهدافها. حاليا النوع الوحيد المدعوم هو تيليبرو.
م 32
قم بإنشاء رمز لبيئة 32 بت ، والتي تعين int ، وطويل ، ومؤشر إلى 32 بت.
هذا هو السلوك الوحيد المدعوم لذلك يتم تجاهل العلامة بشكل أساسي.
V850 مزيد من الخيارات
تشبه -m تم تحديد الخيارات لتطبيقات V850:
- مكالمات طويلة
- مكالمات طويلة
تعامل مع جميع المكالمات على أنها بعيدة (قريبة). إذا كان من المفترض أن تكون المكالمات بعيدة ، فإن
يقوم المترجم دائمًا بتحميل عنوان الوظيفة في سجل ، ويستدعي غير مباشر
من خلال المؤشر.
-منو- الجيش الشعبي
-ميب
لا تقم بتحسين (تحسين) الكتل الأساسية التي تستخدم نفس مؤشر الفهرس 4 أو أكثر
مرات لنسخ المؤشر في سجل "ep" ، واستخدام الأقصر "sld" و "sst"
تعليمات. ال -ميب يكون الخيار قيد التشغيل افتراضيًا إذا قمت بالتحسين.
- وظيفة برولوج
وظيفة -mprolog
لا تستخدم (استخدم) الوظائف الخارجية لحفظ السجلات واستعادتها في المقدمة
وخاتمة وظيفة. الوظائف الخارجية أبطأ ، لكنها تستخدم رمزًا أقل
مسافة إذا كانت هناك أكثر من وظيفة تحفظ نفس عدد السجلات. ال
وظيفة -mprolog يكون الخيار قيد التشغيل افتراضيًا إذا قمت بالتحسين.
-مساحة
حاول أن تجعل الشفرة صغيرة بقدر الإمكان. في الوقت الحاضر ، هذا يتحول فقط على -ميب
وظيفة -mprolog خيارات.
-متدى =n
ضع متغيرات ثابتة أو عالمية حجمها n بايت أو أقل في منطقة البيانات الصغيرة
التي تسجل "الجيش الشعبي" يشير إلى. يمكن أن تستوعب منطقة البيانات الصغيرة ما يصل إلى 256 بايت في المجموع
(128 بايت لمراجع البايت).
-مسدا =n
ضع متغيرات ثابتة أو عالمية حجمها n بايت أو أقل في منطقة البيانات الصغيرة
التي تسجل "gp" يشير إلى. يمكن أن تستوعب منطقة البيانات الصغيرة حتى 64 كيلو بايت.
-مزدا =n
ضع متغيرات ثابتة أو عالمية حجمها n بايت أو أقل في أول 32
كيلوبايت من الذاكرة.
-mv850
حدد أن المعالج الهدف هو V850.
-mv850e3v5
حدد أن المعالج الهدف هو V850E3V5. ثابت المعالج
يتم تعريف "__v850e3v5__" إذا تم استخدام هذا الخيار.
-mv850e2v4
حدد أن المعالج الهدف هو V850E3V5. هذا هو الاسم المستعار لـ
-mv850e3v5 الخيار.
-mv850e2v3
حدد أن المعالج الهدف هو V850E2V3. ثابت المعالج
يتم تعريف "__v850e2v3__" إذا تم استخدام هذا الخيار.
-mv850e2
حدد أن المعالج الهدف هو V850E2. ثابت المعالج
يتم تعريف "__v850e2__" إذا تم استخدام هذا الخيار.
-mv850e1
حدد أن المعالج الهدف هو V850E1. ثوابت المعالج
يتم تعريف "__v850e1__" و "__v850e__" إذا تم استخدام هذا الخيار.
-mv850es
حدد أن المعالج الهدف هو V850ES. هذا هو الاسم المستعار لـ -mv850e1
الخيار.
-mv850e
حدد أن المعالج الهدف هو V850E. ثابت المعالج المسبق "__v850e__"
إذا تم استخدام هذا الخيار.
إذا لم يكن أي منهما -mv850 ولا -mv850e ولا -mv850e1 ولا -mv850e2 ولا -mv850e2v3 ولا -mv850e3v5
يتم تحديدها ثم يتم اختيار المعالج الهدف الافتراضي والمناسب __v850 * __
يتم تعريف ثابت المعالج المسبق.
دائمًا ما يتم تعريف ثوابت المعالج الأولي "__v850" و "__v851__" ، بغض النظر عن
أي متغير المعالج هو الهدف.
-تعطيل- callt
-رقم- تعطيل- callt
يمنع هذا الخيار إنشاء تعليمات "CALLT" لـ v850e ، v850e1 ،
نكهات v850e2 و v850e2v3 و v850e3v5 لمعمارية v850.
يتم تمكين هذا الخيار افتراضيًا عندما يكون RH850 ABI قيد الاستخدام (راجع -mrh850-أبي)، و
معطل بشكل افتراضي عندما يكون GCC ABI قيد الاستخدام. إذا تم إجراء تعليمات "CALLT"
ولدت ثم تم تعريف رمز المعالج الأولي C "__V850_CALLT__".
-استراحة
-منو الاسترخاء
قم بتمرير (أو لا تمرر) -استراحة خيار سطر الأوامر للمجمع.
القفزات الطويلة
- قفزات طويلة
قم بتعطيل (أو إعادة تمكين) إنشاء إرشادات الانتقال المتعلقة بالكمبيوتر الشخصي.
-مسنة- تعويم
-مشدد-تعويم
تعطيل (أو إعادة تمكين) إنشاء تعليمات النقطة العائمة للأجهزة. هذه
الخيار مهم فقط عندما تكون البنية الهدف V850E2V3 أو أعلى. لو
يتم إنشاء تعليمات النقطة العائمة للأجهزة ثم المعالج الأولي C.
تم تعريف الرمز "__FPU_OK__" ، وإلا يتم تحديد الرمز "__NO_FPU__".
-ملوب
تمكن من استخدام تعليمات e3v5 LOOP. استخدام هذه التعليمات ليس كذلك
يتم تمكينه افتراضيًا عند تحديد بنية e3v5 لأن استخدامها لا يزال قائمًا
تجريبي.
-mrh850-أبي
-مغس
لتمكين دعم إصدار RH850 من V850 ABI. هذا هو الافتراضي. مع
في هذا الإصدار من ABI ، يتم تطبيق القواعد التالية:
* يتم إرجاع الهياكل والنقابات ذات الحجم الصحيح عبر مؤشر ذاكرة بدلاً من
سجل.
* يتم تمرير الهياكل والنقابات الكبيرة (أكثر من 8 بايت في الحجم) بالقيمة.
* تتم محاذاة الوظائف مع حدود 16 بت.
* و -m8 بايت- محاذاة يتم دعم خيار سطر الأوامر.
* و -تعطيل- callt يتم تمكين خيار سطر الأوامر بشكل افتراضي. ال
-رقم- تعطيل- callt خيار سطر الأوامر غير معتمد.
عند تمكين هذا الإصدار من ABI ، يظهر رمز المعالج الأولي C "__V850_RH850_ABI__"
يتم تعريف.
-mgcc- أبي
يتيح دعم إصدار دول مجلس التعاون الخليجي القديم من V850 ABI. مع هذا الإصدار من ABI
تنطبق القواعد التالية:
* يتم إرجاع الهياكل والنقابات ذات الحجم الصحيح في السجل "r10".
* يتم تمرير الهياكل والنقابات الكبيرة (أكثر من 8 بايت في الحجم) عن طريق المرجع.
* تتم محاذاة الوظائف مع حدود 32 بت ، ما لم يتم تحسين الحجم.
* و -m8 بايت- محاذاة خيار سطر الأوامر غير معتمد.
* و -تعطيل- callt يتم دعم خيار سطر الأوامر ولكن لا يتم تمكينه افتراضيًا.
عند تمكين هذا الإصدار من ABI ، يظهر رمز المعالج الأولي C "__V850_GCC_ABI__"
يتم تعريف.
-m8 بايت- محاذاة
-رقم -8 بايت- محاذاة
يتيح دعم الأنواع "المزدوجة" و "الطويلة" لمحاذاة حدود 8 بايت.
الإعداد الافتراضي هو تقييد محاذاة كافة الكائنات بحد أقصى 4 بايت. متي
-m8 بايت- محاذاة هو في الواقع رمز المعالج الأولي C "__V850_8BYTE_ALIGN__" هو
يعرف.
-مفتاح كبير
إنشاء رمز مناسب لجداول التبديل الكبيرة. استخدم هذا الخيار فقط إذا كان
يشكو المجمع / الرابط من الفروع خارج النطاق داخل جدول التبديل.
-map-regs
يؤدي هذا الخيار إلى استخدام r2 و r5 في الكود الذي تم إنشاؤه بواسطة المترجم. هذه
الإعداد هو الافتراضي.
-mno-app-regs
يؤدي هذا الخيار إلى معاملة r2 و r5 كسجلات ثابتة.
VAX مزيد من الخيارات
تشبه -m تم تحديد الخيارات لـ VAX:
-مونيكس
لا تقم بإخراج تعليمات قفزة معينة ("aobleq" وما إلى ذلك) لمجمّع Unix
لأن VAX لا يمكنه التعامل مع نطاقات طويلة.
-مجنو
قم بإخراج تعليمات القفز تلك ، على افتراض أن مُجمّع جنو موجود
مستخدم.
-مغ كود الإخراج لأرقام الفاصلة العائمة بتنسيق G بدلاً من تنسيق D.
Visium مزيد من الخيارات
-mdebug
يجب أن يكون البرنامج الذي ينفذ إدخالاً / إخراجًا للملف ومقرر تشغيله على هدف MCM
مرتبط بهذا الخيار. يؤدي إلى ربط المكتبات libc.a و libdebug.a.
يجب تشغيل البرنامج على الهدف تحت سيطرة التصحيح عن بعد GDB
كعب.
-مسيم
يجب أن يكون البرنامج الذي ينفذ ملف الإدخال / الإخراج ومقرر تشغيله على جهاز المحاكاة
مرتبط بالخيار. يؤدي هذا إلى ربط المكتبات libc.a و libsim.a.
-مفبو
-مشدد-تعويم
توليد التعليمات البرمجية التي تحتوي على تعليمات الفاصلة العائمة. هذا هو الافتراضي.
-منو- fpu
-مسنة- تعويم
إنشاء رمز يحتوي على استدعاءات مكتبة للفاصلة العائمة.
-مسنة- تعويم يغير اصطلاح الاستدعاء في ملف الإخراج ؛ لذلك ، فهي فقط
مفيد إذا كنت تقوم بالتجميع الكل من برنامج بهذا الخيار. على وجه الخصوص ، تحتاج إلى
جمع libgcc.a، المكتبة التي تأتي مع دول مجلس التعاون الخليجي ، مع -مسنة- تعويم من أجل هذا
للعمل.
-mcpu =نوع_ وحدة المعالجة المركزية
قم بتعيين مجموعة التعليمات ، وتسجيل مجموعة ، ومعلمات جدولة التعليمات لـ
نوع الجهاز نوع_ وحدة المعالجة المركزية. القيم المدعومة لـ نوع_ وحدة المعالجة المركزية . مليون متر مكعب, gr5 gr6.
مليون متر مكعب هو مرادف ل gr5 الحاضر للتوافق مع الإصدارات السابقة.
بشكل افتراضي (ما لم يتم تكوينه بخلاف ذلك) ، ينشئ GCC رمزًا لمتغير GR5 من
العمارة Visium.
بدافع -mcpu = gr6، ينشئ GCC رمزًا لمتغير GR6 لمعمارية Visium.
الاختلاف الوحيد عن كود GR5 هو أن المترجم سينشئ حركة كتلة
تعليمات.
-mtune =نوع_ وحدة المعالجة المركزية
قم بتعيين معلمات جدولة التعليمات لنوع الجهاز نوع_ وحدة المعالجة المركزية، ولكن لا تحدد
مجموعة التعليمات أو سجل تعيين هذا الخيار -mcpu =نوع_ وحدة المعالجة المركزية سيكون.
وضع msv
قم بإنشاء رمز لوضع المشرف ، حيث لا توجد قيود على الوصول
للسجلات العامة. هذا هو الافتراضي.
- وضع المستخدم
إنشاء رمز لوضع المستخدم ، حيث يكون الوصول إلى بعض السجلات العامة
ممنوع: في GR5 ، لا يمكن الوصول إلى السجلات من r24 إلى r31 في هذا الوضع ؛ على ال
GR6 ، تتأثر السجلات من r29 إلى r31 فقط.
VMS مزيد من الخيارات
تشبه -m يتم تحديد الخيارات لتطبيقات VMS:
رموز العودة mvms
إرجاع رموز شرط VMS من "الرئيسي". الافتراضي هو إرجاع حالة نمط POSIX
(مثل خطأ) رموز.
-mdebug-main =بادئة
ضع علامة على الإجراء الأول الذي يبدأ اسمه بـ بادئة كإجراء روتيني رئيسي لـ
المصحح.
-مملوك 64
افتراضي إلى إجراءات تخصيص الذاكرة 64 بت.
-مؤشر-حجم =المقاس
عيّن الحجم الافتراضي للمؤشرات. الخيارات الممكنة لـ المقاس . 32 or في صفقات ل 32 بت
مؤشرات، 64 or التداول الطويل لمؤشرات 64 بت و لا لدعم مؤشرات 32 بت فقط.
الخيار الأحدث يعطل "pragma pointer_size".
VxWorks مزيد من الخيارات
تم تحديد الخيارات في هذا القسم لجميع أهداف VxWorks. خيارات خاصة بـ
يتم سرد الأجهزة الهدف مع الخيارات الأخرى لهذا الهدف.
-Mrtp
يمكن لـ GCC إنشاء رمز لكل من نواة VxWorks وعمليات الوقت الفعلي (RTPs). هذه
الخيار يتحول من السابق إلى الأخير. كما أنها تحدد ماكرو المعالج المسبق
"__RTP__".
-غير ثابت
اربط ملف RTP قابل للتنفيذ بالمكتبات المشتركة بدلاً من المكتبات الثابتة. ال
الخيارات -ثابتة -مشاركة يمكن استخدامها أيضًا في RTPs ؛ -ثابتة هو الافتراضي.
- ثابت
-ديناميكية
يتم تمرير هذه الخيارات إلى الرابط. يتم تعريفها للتوافق مع
دياب.
-Xbind-كسول
تفعيل الربط البطيء لاستدعاءات الوظائف. هذا الخيار يعادل -Wl ، -z ، الآن وغير
محددة للتوافق مع دياب.
-Xbind- الآن
تعطيل الربط البطيء لاستدعاءات الوظائف. هذا الخيار هو الخيار الافتراضي ويتم تحديده لـ
التوافق مع دياب.
x86 مزيد من الخيارات
تشبه -m يتم تحديد الخيارات لعائلة x86 من أجهزة الكمبيوتر.
- مسيرة =نوع وحدة المعالجة المركزية
قم بإنشاء تعليمات لنوع الماكينة نوع وحدة المعالجة المركزية. أضع ثقتي في -mtune =نوع وحدة المعالجة المركزية,
الذي يضبط فقط الكود الذي تم إنشاؤه لملف نوع وحدة المعالجة المركزية, - مسيرة =نوع وحدة المعالجة المركزية
يسمح لـ GCC بإنشاء رمز قد لا يعمل على الإطلاق على معالجات أخرى غير المعالجات
مبين. التحديد - مسيرة =نوع وحدة المعالجة المركزية يدل -mtune =نوع وحدة المعالجة المركزية.
اختيارات نوع وحدة المعالجة المركزية هي:
محلي
هذا يحدد وحدة المعالجة المركزية لإنشاء رمز في وقت التجميع عن طريق تحديد
نوع المعالج لآلة الترجمة. استخدام -مارش = أصلي تمكن الجميع
مجموعات التعليمات الفرعية التي يدعمها الجهاز المحلي (وبالتالي قد لا تعمل النتيجة
على أجهزة مختلفة). استخدام -mtune = أصلي تنتج رمز الأمثل للمحلي
الجهاز تحت قيود مجموعة التعليمات المختارة.
i386
وحدة المعالجة المركزية Intel i386 الأصلية.
i486
وحدة المعالجة المركزية Intel i486. (لم يتم تنفيذ أي جدولة لهذه الشريحة.)
i586
بنتيوم
وحدة المعالجة المركزية Intel Pentium مع عدم وجود دعم MMX.
بنتيوم مم ×
وحدة المعالجة المركزية Intel Pentium MMX ، القائمة على أساس Pentium مع دعم مجموعة تعليمات MMX.
بنتيومبرو
وحدة المعالجة المركزية إنتل بنتيوم برو.
i686
عند استخدامها مع -مارس، يتم استخدام مجموعة تعليمات Pentium Pro ، لذلك يتم تشغيل الكود
على جميع رقائق الأسرة i686. عند استخدامها مع -متوني، لها نفس المعنى مثل
عام.
بنتيوم 2
وحدة المعالجة المركزية Intel Pentium II ، القائمة على أساس Pentium Pro مع دعم مجموعة تعليمات MMX.
بنتيوم 3
بنتيوم 3 م
وحدة المعالجة المركزية Intel Pentium III ، على أساس Pentium Pro مع مجموعة تعليمات MMX و SSE
دعم.
بنتيوم م
إنتل بنتيوم إم ؛ إصدار منخفض الطاقة من وحدة المعالجة المركزية Intel Pentium III مع MMX و SSE و SSE2
دعم مجموعة التعليمات. تستخدم من قبل أجهزة الكمبيوتر المحمولة Centrino.
بنتيوم 4
بنتيوم 4 م
وحدة المعالجة المركزية Intel Pentium 4 مع دعم مجموعة تعليمات MMX و SSE و SSE2.
بريسكوت
نسخة محسنة من وحدة المعالجة المركزية Intel Pentium 4 مع تعليمات MMX و SSE و SSE2 و SSE3
مجموعة الدعم.
nocona
نسخة محسنة من Intel Pentium 4 CPU مع امتدادات 64 بت و MMX و SSE و SSE2 و
دعم مجموعة تعليمات SSE3.
core2
وحدة المعالجة المركزية Intel Core 2 مع امتدادات 64 بت و MMX و SSE و SSE2 و SSE3 و SSSE3
دعم مجموعة التعليمات.
نيحالم
وحدة المعالجة المركزية Intel Nehalem مع امتدادات 64 بت ، MMX ، SSE ، SSE2 ، SSE3 ، SSSE3 ، SSE4.1 ،
دعم مجموعة تعليمات SSE4.2 و POPCNT.
ويستمير
وحدة المعالجة المركزية Intel Westmere مع امتدادات 64 بت ، MMX ، SSE ، SSE2 ، SSE3 ، SSSE3 ، SSE4.1 ،
دعم مجموعة تعليمات SSE4.2 و POPCNT و AES و PCLMUL.
ساندي بريدج
وحدة المعالجة المركزية Intel Sandy Bridge مع امتدادات 64 بت ، MMX ، SSE ، SSE2 ، SSE3 ، SSSE3 ،
دعم مجموعة تعليمات SSE4.1 و SSE4.2 و POPCNT و AVX و AES و PCLMUL.
ايفيبريدج
وحدة المعالجة المركزية Intel Ivy Bridge مع امتدادات 64 بت ، MMX ، SSE ، SSE2 ، SSE3 ، SSSE3 ، SSE4.1 ،
مجموعة تعليمات SSE4.2 و POPCNT و AVX و AES و PCLMUL و FSGSBASE و RDRND و F16C
دعم.
هسول
وحدة المعالجة المركزية Intel Haswell مع امتدادات 64 بت ، MOVBE ، MMX ، SSE ، SSE2 ، SSE3 ، SSSE3 ،
SSE4.1، SSE4.2، POPCNT، AVX، AVX2، AES، PCLMUL، FSGSBASE، RDRND، FMA، BMI، BMI2
ومجموعة التعليمات F16C الدعم.
برودويل
وحدة المعالجة المركزية Intel Broadwell مع امتدادات 64 بت ، MOVBE ، MMX ، SSE ، SSE2 ، SSE3 ، SSSE3 ،
SSE4.1، SSE4.2، POPCNT، AVX، AVX2، AES، PCLMUL، FSGSBASE، RDRND، FMA، BMI، BMI2،
دعم مجموعة تعليمات F16C و RDSEED و ADCX و PREFETCHW.
بونيل
وحدة المعالجة المركزية Intel Bonnell مع امتدادات 64 بت و MOVBE و MMX و SSE و SSE2 و SSE3 و SSSE3
دعم مجموعة التعليمات.
سيلفرمونت
وحدة المعالجة المركزية Intel Silvermont مع امتدادات 64 بت ، MOVBE ، MMX ، SSE ، SSE2 ، SSE3 ، SSSE3 ،
دعم مجموعة تعليمات SSE4.1 و SSE4.2 و POPCNT و AES و PCLMUL و RDRND.
كنل وحدة المعالجة المركزية Intel Knight's Landing مع امتدادات 64 بت ، MOVBE ، MMX ، SSE ، SSE2 ، SSE3 ،
SSSE3 ، SSE4.1 ، SSE4.2 ، POPCNT ، AVX ، AVX2 ، AES ، PCLMUL ، FSGSBASE ، RDRND ، FMA ، مؤشر كتلة الجسم ،
BMI2 و F16C و RDSEED و ADCX و PREFETCHW و AVX512F و AVX512PF و AVX512ER و AVX512CD
دعم مجموعة التعليمات.
k6 وحدة المعالجة المركزية AMD K6 مع دعم مجموعة تعليمات MMX.
k6-2
k6-3
إصدارات محسنة من وحدة المعالجة المركزية AMD K6 مع MMX و 3DNow! دعم مجموعة التعليمات.
اثلون
Athlon-tbird
وحدة المعالجة المركزية AMD Athlon مع MMX ، 3dNOW !، ثلاثي الأبعاد محسّن الآن! و SSE تعليمات الجلب المسبق
دعم.
اثلون 4
أثلون إكس بي
اثلون النائب
وحدة معالجة مركزية محسّنة من AMD Athlon مع MMX ، 3DNow !، 3D الآن! وتعليمات SSE كاملة
مجموعة الدعم.
k8
أوبتيرون
اثلون 64
أثلون- fx
المعالجات القائمة على نواة AMD K8 مع دعم مجموعة تعليمات x86-64 ، بما في ذلك
معالجات AMD Opteron و Athlon 64 و Athlon 64 FX. (هذا يحل محل MMX ،
SSE ، SSE2 ، 3DNow !، 3D Now! وملحقات مجموعة التعليمات 64 بت.)
k8-sse3
أوبتيرون sse3
Athlon64-sse3
إصدارات محسنة من نوى AMD K8 مع دعم مجموعة تعليمات SSE3.
amdfam10
برشلونة
تعتمد وحدات المعالجة المركزية على أنوية AMD Family 10h مع دعم مجموعة تعليمات x86-64. (هذه
مجموعات فائقة MMX ، SSE ، SSE2 ، SSE3 ، SSE4A ، 3DNow !، 3DNow !، ABM و 64 بت
ملحقات مجموعة التعليمات.)
بدفير 1
تعتمد وحدات المعالجة المركزية على أنوية AMD Family 15h مع دعم مجموعة تعليمات x86-64. (هذه
مجموعات فائقة FMA4 ، AVX ، XOP ، LWP ، AES ، PCL_MUL ، CX16 ، MMX ، SSE ، SSE2 ، SSE3 ، SSE4A ،
امتدادات مجموعة تعليمات SSSE3 و SSE4.1 و SSE4.2 و ABM و 64 بت.)
بدفير 2
وحدات المعالجة المركزية AMD Family 15h الأساسية مع دعم مجموعة تعليمات x86-64. (هذه
مجموعات فائقة BMI ، TBM ، F16C ، FMA ، FMA4 ، AVX ، XOP ، LWP ، AES ، PCL_MUL ، CX16 ، MMX ، SSE ،
SSE2 و SSE3 و SSE4A و SSSE3 و SSE4.1 و SSE4.2 و ABM ومجموعة تعليمات 64 بت
ملحقات.)
بدفير 3
وحدات المعالجة المركزية AMD Family 15h الأساسية مع دعم مجموعة تعليمات x86-64. (هذه
مجموعات فائقة BMI ، TBM ، F16C ، FMA ، FMA4 ، FSGSBASE ، AVX ، XOP ، LWP ، AES ، PCL_MUL ، CX16 ،
مجموعة تعليمات MMX و SSE و SSE2 و SSE3 و SSE4A و SSSE3 و SSE4.1 و SSE4.2 و ABM و 64 بت
ملحقات.
بدفير 4
وحدات المعالجة المركزية AMD Family 15h الأساسية مع دعم مجموعة تعليمات x86-64. (هذه
مجموعات فائقة BMI ، BMI2 ، TBM ، F16C ، FMA ، FMA4 ، FSGSBASE ، AVX ، AVX2 ، XOP ، LWP ، AES ،
PCL_MUL و CX16 و MOVBE و MMX و SSE و SSE2 و SSE3 و SSE4A و SSSE3 و SSE4.1 و SSE4.2 و ABM و
ملحقات مجموعة التعليمات 64 بت.
بتفير 1
تعتمد وحدات المعالجة المركزية على أنوية AMD Family 14h مع دعم مجموعة تعليمات x86-64. (هذه
مجموعات فائقة MMX و SSE و SSE2 و SSE3 و SSSE3 و SSE4A و CX16 و ABM ومجموعة تعليمات 64 بت
ملحقات.)
بتفير 2
تعتمد وحدات المعالجة المركزية على أنوية AMD Family 16h مع دعم مجموعة تعليمات x86-64. هذه
يشمل MOVBE ، F16C ، BMI ، AVX ، PCL_MUL ، AES ، SSE4.2 ، SSE4.1 ، CX16 ، ABM ، SSE4A ،
امتدادات مجموعة تعليمات SSSE3 و SSE3 و SSE2 و SSE و MMX و 64 بت.
ونشيب c6
يتم التعامل مع وحدة المعالجة المركزية IDT WinChip C6 بنفس طريقة التعامل مع i486 مع مجموعة تعليمات MMX إضافية
دعم.
ونشيب 2
وحدة المعالجة المركزية IDT WinChip 2 ، يتم التعامل معها بنفس طريقة التعامل مع i486 مع MMX و 3D الآن!
دعم مجموعة التعليمات.
c3 وحدة المعالجة المركزية VIA C3 مع MMX و 3DNow! دعم مجموعة التعليمات. (لا توجد جدولة
نفذت لهذه الشريحة.)
c3-2
وحدة المعالجة المركزية VIA C3-2 (Nehemiah / C5XL) مع دعم مجموعة تعليمات MMX و SSE. (لا
تم تنفيذ الجدولة لهذه الشريحة.)
الجيود حجر كريم
معالج AMD Geode المضمن مع MMX و 3DNow! دعم مجموعة التعليمات.
-mtune =نوع وحدة المعالجة المركزية
ضبط ل نوع وحدة المعالجة المركزية كل ما ينطبق على الكود الذي تم إنشاؤه ، باستثناء ABI
ومجموعة التعليمات المتاحة. أثناء اختيار ملف نوع وحدة المعالجة المركزية جداول
الأشياء بشكل مناسب لتلك الشريحة المعينة ، لا يقوم المترجم بإنشاء أي كود
لا يمكن تشغيلها على نوع الجهاز الافتراضي ما لم تستخدم ملف - مسيرة =نوع وحدة المعالجة المركزية الخيار.
على سبيل المثال ، إذا تم تكوين GCC لـ i686-pc-linux-gnu إذن -mtune = بنتيوم 4 يولد
رمز تم ضبطه لـ Pentium 4 ولكنه لا يزال يعمل على أجهزة i686.
اختيارات نوع وحدة المعالجة المركزية هي نفسها ل -مارس. بالإضافة الى، -متوني يدعم 2
اختيارات إضافية لـ نوع وحدة المعالجة المركزية:
عام
أنتج رمزًا محسنًا لمعظم معالجات IA32 / AMD64 / EM64T الأكثر شيوعًا. اذا أنت
تعرف على وحدة المعالجة المركزية التي سيتم تشغيل التعليمات البرمجية الخاصة بك عليها ، ثم يجب عليك استخدام المقابل
-متوني or -مارس الخيار بدلا من -mtune = عام. ولكن ، إذا كنت لا تعرف
بالضبط ما سيحصل عليه مستخدمو وحدة المعالجة المركزية في التطبيق الخاص بك ، ثم يجب عليك استخدام هذا
الخيار.
كما يتم نشر معالجات جديدة في السوق ، سلوك هذا الخيار
سوف يتغير. لذلك ، إذا قمت بالترقية إلى إصدار أحدث من GCC ، إنشاء رمز
التي يتحكم فيها هذا الخيار سوف تتغير لتعكس المعالجات الأكثر استخدامًا
كان شائعًا في وقت إصدار هذا الإصدار من GCC.
لا يوجد -مارش = عام خيار بسبب -مارس يشير إلى مجموعة التعليمات
يمكن للمترجم أن يستخدم ، ولا توجد مجموعة تعليمات عامة تنطبق على الجميع
معالجات. فى المقابل، -متوني يشير إلى المعالج (أو ، في هذه الحالة ،
مجموعة المعالجات) التي تم تحسين الكود لها.
إنتل
أنتج رمزًا محسنًا لأحدث معالجات Intel ، وهي Haswell
و Silvermont لهذا الإصدار من دول مجلس التعاون الخليجي. إذا كنت تعرف وحدة المعالجة المركزية التي تعتمد عليها التعليمات البرمجية الخاصة بك
سيتم تشغيل ، ثم يجب عليك استخدام المقابل -متوني or -مارس الخيار بدلا من
-mtune = إنتل. ولكن ، إذا كنت تريد أن يعمل التطبيق الخاص بك بشكل أفضل على كل من Haswell
و Silvermont ، إذن يجب عليك استخدام هذا الخيار.
كما يتم نشر معالجات إنتل جديدة في السوق ، فإن هذا السلوك
سيتغير الخيار. لذلك ، إذا قمت بالترقية إلى إصدار أحدث من GCC ، رمز
سيتغير الجيل الذي يتحكم فيه هذا الخيار ليعكس أحدث إصدار من Intel
معالجات وقت إصدار هذا الإصدار من GCC.
لا يوجد -مارش = إنتل خيار بسبب -مارس يشير إلى مجموعة التعليمات
يمكن استخدام المترجم ، ولا توجد مجموعة تعليمات عامة تنطبق على الجميع
معالجات. فى المقابل، -متوني يشير إلى المعالج (أو ، في هذه الحالة ،
مجموعة المعالجات) التي تم تحسين الكود لها.
-mcpu =نوع وحدة المعالجة المركزية
مرادف مهمل ل -متوني.
-mfpmath =وحدة
إنشاء حساب الفاصلة العائمة للوحدة المحددة وحدة. اختيارات وحدة هي:
387 استخدم المعالجات القياسية ذات الفاصلة العائمة 387 الموجودة في غالبية الرقائق
ويقلد بطريقة أخرى. الكود المترجم مع هذا الخيار يعمل في كل مكان تقريبًا.
يتم حساب النتائج المؤقتة بدقة 80 بت بدلاً من الدقة
المحدد بالنوع ، مما يؤدي إلى نتائج مختلفة قليلاً مقارنة بمعظم
رقائق أخرى. ارى -متجر طائر للحصول على وصف أكثر تفصيلاً.
هذا هو الخيار الافتراضي لأهداف x86-32.
SSE استخدم تعليمات الفاصلة العائمة العددية الموجودة في مجموعة تعليمات SSE. هذه
يتم دعم مجموعة التعليمات بواسطة Pentium III والرقائق الأحدث ، وفي خط AMD
بواسطة رقائق Athlon-4 و Athlon XP و Athlon MP. الإصدار السابق من SSE
مجموعة التعليمات تدعم فقط الحساب أحادي الدقة ، وبالتالي فإن مضاعفة و
لا يزال يتم إجراء العمليات الحسابية ذات الدقة الممتدة باستخدام 387. إصدار لاحق ، موجود
فقط في رقائق Pentium 4 و AMD x86-64 ، يدعم الحساب مزدوج الدقة أيضًا.
بالنسبة لمترجم x86-32 ، يجب عليك استخدام ملفات - مسيرة =نوع وحدة المعالجة المركزية, مس or - msse2 يتحول إلى
تمكين ملحقات SSE وجعل هذا الخيار فعالاً. للمترجم x86-64 ،
يتم تمكين هذه الملحقات بشكل افتراضي.
يجب أن يكون الرمز الناتج أسرع بشكل كبير في معظم الحالات و
تجنب مشاكل عدم الاستقرار العددي في كود 387 ، ولكن قد يؤدي إلى كسر بعض المشاكل الموجودة
رمز يتوقع أن تكون الفترات الزمنية 80 بت.
هذا هو الخيار الافتراضي لمترجم x86-64.
SS ، 387
sse + 387
على حد سواء
حاول استخدام مجموعتي التعليمات في وقت واحد. هذا يضاعف بشكل فعال
عدد السجلات المتاحة ، وعلى شرائح بوحدات تنفيذ منفصلة لـ 387
و SSE موارد التنفيذ أيضًا. استخدم هذا الخيار بعناية ، لأنه لا يزال
تجريبي ، لأن مخصِّص سجل دول مجلس التعاون الخليجي لا يمثل نموذجاً منفصلاً
الوحدات الوظيفية بشكل جيد ، مما يؤدي إلى أداء غير مستقر.
-الماس =لهجة
تعليمات تجميع الإخراج باستخدام المحدد لهجة. يؤثر أيضًا على أي لهجة
تستخدم ل "asm" الأساسية و "asm" الموسعة. الخيارات المدعومة (بترتيب اللهجة) هي إلى
or إنتل. الافتراضي هو إلى. داروين لا يدعم إنتل.
-مييي- fp
-mno-ieee-fp
التحكم في ما إذا كان المترجم يستخدم مقارنات الفاصلة العائمة IEEE أم لا. هؤلاء
التعامل بشكل صحيح مع الحالة التي تكون فيها نتيجة المقارنة غير مرتبة.
-مسنة- تعويم
توليد الناتج يحتوي على المكالمات مكتبة للالنقطة العائمة.
: تحذير المكتبات المطلوبة ليست جزءًا من دول مجلس التعاون الخليجي. عادة ما تكون مرافق
يتم استخدام مترجم C المعتاد للجهاز ، ولكن لا يمكن القيام بذلك بشكل مباشر
التحويل البرمجي. يجب عليك عمل الترتيبات الخاصة بك لتوفير مكتبة مناسبة
وظائف للترجمة المتقاطعة.
على الأجهزة التي تقوم فيها دالة بإرجاع نتائج الفاصلة العائمة في سجل 80387
مكدس ، قد يتم إصدار بعض أكواد تشغيل الفاصلة العائمة حتى لو -مسنة- تعويم .
-منو- fp- ret-in-387
لا تستخدم سجلات FPU لقيم الإرجاع للوظائف.
اصطلاح الاستدعاء المعتاد له دالات تقوم بإرجاع قيم من النوعين "عائم" و "مزدوج"
في سجل FPU ، حتى لو لم يكن هناك FPU. الفكرة هي أن نظام التشغيل
يجب أن تحاكي FPU.
الخيار -منو- fp- ret-in-387 يؤدي إلى إرجاع هذه القيم في وحدة المعالجة المركزية العادية
يسجل بدلا من ذلك.
-منو-يتوهم-رياضيات -387
هناك 387 برنامج محاكاة لا يدعم تعليمات "sin" و "cos" و "sqrt" الخاصة بـ
387. حدد هذا الخيار لتجنب توليد تلك التعليمات. هذا الخيار هو
افتراضي على OpenBSD و NetBSD. يتم تجاوز هذا الخيار عندما -مارس يدل علي
تحتوي وحدة المعالجة المركزية المستهدفة دائمًا على FPU وبالتالي لا تحتاج التعليمات إلى محاكاة.
لا يتم إنشاء هذه التعليمات ما لم تستخدم أيضًا امتداد
-ممتعة-الرياضيات-التحسينات التبديل.
-مزاوجة مزدوجة
-منو- محاذاة مزدوجة
التحكم في ما إذا كان GCC يعمل على محاذاة المتغيرات "المزدوجة" و "الطويلة المزدوجة" و "الطويلة" على أ
حد من كلمتين أو حد من كلمة واحدة. محاذاة المتغيرات "المزدوجة" في كلمتين
تنتج الحدود رمزًا يعمل بشكل أسرع إلى حد ما على Pentium على حساب المزيد
ذاكرة.
في x86-64 ، -مزاوجة مزدوجة يتم تمكينه افتراضيًا.
: تحذير إذا كنت تستخدم -مزاوجة مزدوجة التبديل ، الهياكل التي تحتوي على الأنواع المذكورة أعلاه
تتماشى بشكل مختلف عن مواصفات الواجهة الثنائية للتطبيق المنشورة
بالنسبة إلى x86-32 وهي غير متوافقة مع الهياكل الموجودة في التعليمات البرمجية التي تم تجميعها بدونها
هذا التبديل.
-م 96 بت- طويل- مزدوج
-م 128 بت- طويل- مزدوج
تتحكم مفاتيح التبديل هذه في حجم النوع "المزدوج الطويل". ثنائي التطبيق x86-32
واجهة تحدد الحجم ليكون 96 بت ، لذلك -م 96 بت- طويل- مزدوج هو الافتراضي في
وضع 32 بت.
تفضل الأبنية الحديثة (Pentium والإصدارات الأحدث) "long double" لتتماشى مع 8
أو حد 16 بايت. في المصفوفات أو الهياكل المطابقة لـ ABI ، هذا ليس كذلك
المستطاع. تحديد ذلك -م 128 بت- طويل- مزدوج محاذاة "مزدوج طويل" إلى 16 بايت
الحد عن طريق حشو "الازدواج الطويل" بصفر 32 بت إضافي.
في مترجم x86-64 ، -م 128 بت- طويل- مزدوج هو الخيار الافتراضي مثل ABI الخاص به
يحدد أن "مزدوج طويل" يتم محاذاته على حد 16 بايت.
لاحظ أن أيا من هذين الخيارين لا يتيح أي دقة إضافية فوق معيار x87
80 بت لـ "مزدوج طويل".
: تحذير إذا تجاوزت القيمة الافتراضية لـ ABI المستهدف ، فسيؤدي ذلك إلى تغيير الحجم
الهياكل والمصفوفات التي تحتوي على متغيرات "مزدوجة طويلة" ، بالإضافة إلى تعديل
دالة تستدعي اصطلاحًا للوظائف التي تأخذ "مضاعفة طويلة". ومن ثم فهم ليسوا كذلك
ثنائي متوافق مع التعليمات البرمجية التي تم تجميعها بدون هذا المفتاح.
-لونغ-ضعف -64
-لونغ-ضعف -80
-لونغ-ضعف -128
تتحكم مفاتيح التبديل هذه في حجم النوع "المزدوج الطويل". حجم 64 بت يجعل ملف
نوع "مزدوج طويل" مكافئ للنوع "مزدوج". هذا هو الإعداد الافتراضي لـ 32 بت
مكتبة بيونيك سي. حجم 128 بت يجعل النوع "المزدوج الطويل" مكافئًا لـ
نوع "__float128". هذا هو الإعداد الافتراضي لمكتبة Bionic C 64 بت.
: تحذير إذا تجاوزت القيمة الافتراضية لـ ABI المستهدف ، فسيؤدي ذلك إلى تغيير الحجم
الهياكل والمصفوفات التي تحتوي على متغيرات "مزدوجة طويلة" ، بالإضافة إلى تعديل
دالة تستدعي اصطلاحًا للوظائف التي تأخذ "مضاعفة طويلة". ومن ثم فهم ليسوا كذلك
ثنائي متوافق مع التعليمات البرمجية التي تم تجميعها بدون هذا المفتاح.
البيانات الخبيثة =نوع
التحكم في كيفية محاذاة دول مجلس التعاون الخليجي المتغيرات. القيم المدعومة لـ نوع . COMPAT زيادة الاستخدامات
تستخدم قيمة المحاذاة المتوافقة 4.8 GCC وما قبلها ، أبي يستخدم قيمة المحاذاة
المحددة من قبل psABI ، و كاتلين يستخدم قيمة محاذاة متزايدة لمطابقة
حجم خط ذاكرة التخزين المؤقت. COMPAT هو الافتراضي.
- عتبة البيانات الكبيرة =عتبة
متى -mcmodel = متوسط محدد ، كائنات البيانات أكبر من عتبة يتم وضعها في
قسم البيانات الكبيرة. يجب أن تكون هذه القيمة هي نفسها عبر جميع الكائنات المرتبطة بها
الثنائي ، والافتراضيات إلى 65535.
-مرتد
استخدم اصطلاحًا مختلفًا لاستدعاء الوظائف ، حيث تكون الدوال التي تتطلب إصلاحًا
عدد من الحجج التي تعود مع "ret الأسطوانات " التعليمات ، والتي تنبثق حججهم
أثناء العودة. هذا يحفظ تعليمة واحدة في المتصل لأنه ليست هناك حاجة لذلك
البوب الحجج هناك.
يمكنك تحديد أنه يتم استدعاء وظيفة فردية باستخدام تسلسل الاستدعاء هذا
سمة الوظيفة "stdcall". يمكنك أيضًا تجاوز ملف -مرتد الخيار باستخدام
سمة الوظيفة "cdecl".
: تحذير اتفاقية الاتصال هذه غير متوافقة مع تلك المستخدمة عادة على يونكس ،
لذلك لا يمكنك استخدامه إذا كنت بحاجة إلى استدعاء المكتبات المترجمة مع مترجم Unix.
أيضًا ، يجب عليك توفير نماذج أولية للوظائف لجميع الوظائف التي تأخذ متغيرًا
عدد الحجج (بما في ذلك "printf") ؛ وإلا يتم إنشاء رمز غير صحيح لـ
يدعو لتلك الوظائف.
بالإضافة إلى ذلك ، ينتج رمز غير صحيح بشكل خطير إذا قمت باستدعاء وظيفة بها عدد كبير جدًا
الحجج. (عادة ، يتم تجاهل الحجج الإضافية بدون ضرر.)
-mregparm =NUM
التحكم في عدد السجلات المستخدمة لتمرير وسيطات عدد صحيح. بشكل افتراضي ، لا
تُستخدم السجلات لتمرير الوسائط ، ويمكن استخدام 3 سجلات على الأكثر. تستطيع
التحكم في هذا السلوك لوظيفة معينة باستخدام سمة الوظيفة
"regparm".
: تحذير إذا كنت تستخدم رمز التبديل هذا ، و NUM غير صفري ، إذًا يجب بناء جميع الوحدات
بنفس القيمة ، بما في ذلك أي مكتبات. وهذا يشمل مكتبات النظام و
وحدات بدء التشغيل.
-مسرقبارم
استخدم اصطلاحات تمرير تسجيل SSE للوسيطات العائمة والمزدوجة وقيم الإرجاع.
يمكنك التحكم في هذا السلوك لوظيفة معينة باستخدام سمة الوظيفة
"sseregparm".
: تحذير إذا كنت تستخدم رمز التبديل هذا ، فيجب عليك إنشاء جميع الوحدات بنفس القيمة ،
بما في ذلك أي مكتبات. يتضمن ذلك مكتبات النظام ووحدات بدء التشغيل.
-mvect8-ret-in-mem
قم بإرجاع ناقلات 8 بايت في الذاكرة بدلاً من تسجيلات MMX. هذا هو الإعداد الافتراضي
Solaris @ tie {} 8 and 9 و VxWorks لمطابقة ABI لمجمعي Sun Studio حتى
الإصدار 12. تتبع إصدارات المترجم اللاحقة (بدءًا من Studio 12 Update @ tie {} 1)
ABI المستخدم بواسطة أهداف x86 الأخرى ، وهو الإعداد الافتراضي في Solaris @ tie {} 10 والإصدارات الأحدث.
فقط استخدم هذا الخيار إذا كنت تريد أن تظل متوافقًا مع الكود الحالي الذي تم إنتاجه بواسطة
تلك الإصدارات السابقة من برنامج التحويل البرمجي أو الإصدارات الأقدم من GCC.
-mpc32
-mpc64
-mpc80
اضبط دقة النقطة العائمة 80387 على 32 أو 64 أو 80 بت. متي -mpc32 محدد،
تم تقريب دلالات نتائج عمليات الفاصلة العائمة إلى 24 بت
(الدقة واحد)؛ -mpc64 تقريب دلالات نتائج الفاصلة العائمة
عمليات تصل إلى 53 بت (دقة مزدوجة) و -mpc80 يدور حول أهمية النتائج
من عمليات الفاصلة العائمة إلى 64 بت (دقة مزدوجة ممتدة) ، وهو ملف
إفتراضي. عند استخدام هذا الخيار ، تكون عمليات الفاصلة العائمة بدقة أعلى هي
غير متاح للمبرمج بدون ضبط كلمة التحكم FPU بشكل صريح.
يمكن ضبط تقريب عمليات الفاصلة العائمة إلى أقل من القيمة الافتراضية البالغة 80 بت
تسريع بعض البرامج بنسبة 2٪ أو أكثر. لاحظ أن بعض المكتبات الرياضية تفترض ذلك
يتم تمكين عمليات الفاصلة العائمة ذات الدقة الممتدة (80 بت) افتراضيًا ؛ الروتين
في مثل هذه المكتبات يمكن أن تعاني من فقدان كبير في الدقة ، عادةً من خلال ما يلي-
يسمى "الإلغاء الكارثي" ، عند استخدام هذا الخيار لضبط الدقة على
أقل من دقة موسعة.
-Mstackrealign
أعد محاذاة المكدس عند الدخول. على x86 ، ملف -Mstackrealign الخيار يولد
مقدمة وخاتمة بديلة تعيد تنظيم كومة وقت التشغيل إذا لزم الأمر. هذه
يدعم خلط الرموز القديمة التي تحافظ على محاذاة مكدس 4 بايت مع الرموز الحديثة التي
الحفاظ على محاذاة مكدس 16 بايت لتوافق SSE. انظر أيضا السمة
"force_align_arg_pointer" ، تنطبق على الوظائف الفردية.
-حدود المكدس المُفضَّلة =NUM
حاول إبقاء حدود المكدس محاذاة مع 2 مرفوعة إلى NUM حدود البايت. لو
- حدود المكدس - غير المفضلة غير محدد ، الافتراضي هو 4 (16 بايت أو 128 بت).
: تحذير عند إنشاء رمز لمعمارية x86-64 بامتدادات SSE
معاق، -حدود المكدس غير المفضلة = 3 يمكن استخدامها للحفاظ على محاذاة حدود المكدس
إلى حد 8 بايت. نظرًا لأن x86-64 ABI يتطلب محاذاة مكدس 16 بايت ، فهذا هو ABI
غير متوافق ويقصد استخدامه في بيئة خاضعة للرقابة حيث تكون مساحة المكدس
قيود مهمة. يؤدي هذا الخيار إلى رمز خاطئ عند تجميع الوظائف باستخدام 16
يتم استدعاء محاذاة مكدس البايت (مثل الوظائف من مكتبة قياسية) بـ
كومة منحرفة. في هذه الحالة ، قد تؤدي تعليمات SSE إلى الوصول غير الصحيح للذاكرة
الفخاخ. بالإضافة إلى ذلك ، يتم التعامل مع الوسائط المتغيرة بشكل غير صحيح لمحاذاة 16 بايت
كائنات (بما في ذلك x87 long double و __int128) ، مما يؤدي إلى نتائج خاطئة. يجب عليك أن
بناء جميع الوحدات مع -حدود المكدس غير المفضلة = 3، بما في ذلك أي مكتبات. هذه
يتضمن مكتبات النظام ووحدات بدء التشغيل.
حدود المكدس الوشيكة =NUM
افترض أن المكدس الوارد محاذي للرقم 2 مرفوعًا إلى NUM حدود البايت. لو
-وشك-كومة-الحدود لم يتم تحديده ، الذي تم تحديده بواسطة
- حدود المكدس - غير المفضلة .
في Pentium و Pentium Pro ، يجب محاذاة القيم "المزدوجة" و "الطويلة المزدوجة" مع ملف
8 بايت حد (انظر -مزاوجة مزدوجة) أو تعاني من أداء وقت تشغيل كبير
ضربات الجزاء. في Pentium III ، قد يكون نوع بيانات امتداد SIMD المتدفق (SSE) "__m128"
لا تعمل بشكل صحيح إذا لم يتم محاذاة 16 بايت.
لضمان المحاذاة الصحيحة لهذه القيم على المكدس ، يجب أن تكون حدود المكدس كما
تتماشى مع تلك التي تتطلبها أي قيمة مخزنة في المكدس. علاوة على ذلك ، كل وظيفة
يجب أن يتم إنشاؤها بحيث تحافظ على محاذاة المكدس. وبالتالي استدعاء وظيفة
تم تجميعها باستخدام حد مكدس مفضل أعلى من دالة تم تجميعها باستخدام قيمة أقل
من المحتمل أن تؤدي حدود المكدس المفضلة إلى عدم محاذاة المكدس. هذا موصى به
المكتبات التي تستخدم عمليات الاسترجاعات تستخدم دائمًا الإعداد الافتراضي.
تستهلك هذه المحاذاة الإضافية مساحة مكدس إضافية ، وتزيد بشكل عام من التعليمات البرمجية
بحجم. التعليمات البرمجية الحساسة لاستخدام مساحة المكدس ، مثل الأنظمة المضمنة و
نواة نظام التشغيل ، قد ترغب في تقليل المحاذاة المفضلة إلى
-حدود المكدس غير المفضلة = 2.
-ممممكس
مس
- msse2
- msse3
-مسة 3
- msse4
- msse4a
- msse4.1
- msse4.2
-مافكس
-Mavx2
-mavx512f
-mavx512pf
-mavx512er
-mavx512cd
-مشا
-مايس
-mpclmul
-mclfushopt
-mfsgsbase
-مرردند
-mf16c
-مفما
-mfma4
-منو- fma4
-mprefetchwt1
-mxop
-mlwp
-m3dnow
-mpopcnt
-مبم
-MBMI
-mbmi2
-mlzcnt
-mfxsr
-mxsave
-mxsaveopt
-مكسسافيك
-mxsaves
-مرتم
-mtbm
-مبكسل
-ممويتكس
تتيح هذه المفاتيح استخدام التعليمات الموجودة في MMX و SSE و SSE2 و SSE3 و SSSE3 و
SSE4.1 ، AVX ، AVX2 ، AVX512F ، AVX512PF ، AVX512ER ، AVX512CD ، SHA ، AES ، PCLMUL ، FSGSBASE ،
RDRND ، F16C ، FMA ، SSE4A ، FMA4 ، XOP ، LWP ، ABM ، BMI ، BMI2 ، FXSR ، XSAVE ، XSAVEOPT ، LZCNT ،
RTM أو MPX أو MWAITX أو 3DNow! مجموعات التعليمات الممتدة. كل له المقابلة -منو-
خيار لتعطيل استخدام هذه التعليمات.
تتوفر هذه الامتدادات أيضًا كوظائف مضمنة: راجع x86 مدمج وظائف,
للحصول على تفاصيل الوظائف التي تم تمكينها وتعطيلها بواسطة هذه المفاتيح.
لإنشاء تعليمات SSE / SSE2 تلقائيًا من رمز النقطة العائمة (على عكس
إلى 387 تعليمات) ، انظر -mfpmath = sse.
يقوم مجلس التعاون الخليجي بإلغاء تعليمات SSEx عندما -مافكس يستخدم. بدلاً من ذلك ، فإنه يولد AVX جديدًا
تعليمات أو معادلة AVX لجميع تعليمات SSEx عند الحاجة.
تتيح هذه الخيارات لـ GCC استخدام هذه التعليمات الموسعة في التعليمات البرمجية التي تم إنشاؤها ، حتى
بدون -mfpmath = sse. يجب ترجمة التطبيقات التي تقوم باكتشاف وحدة المعالجة المركزية في وقت التشغيل
منفصلة لكل معمارية مدعومة ، باستخدام العلامات المناسبة. في
على وجه الخصوص ، يجب تجميع الملف الذي يحتوي على رمز اكتشاف وحدة المعالجة المركزية بدون
هذه الخيارات.
-mdump-ضبط-الميزات
يوجه هذا الخيار GCC إلى تفريغ أسماء ميزات ضبط الأداء x86 و
الإعدادات الافتراضية. يمكن استخدام الأسماء في -mtune- السيطرة =قائمة الميزات.
-mtune- السيطرة =قائمة الميزات
يستخدم هذا الخيار للقيام بالتحكم الدقيق في حبيبات ميزات إنشاء أكواد x86.
قائمة الميزات هي قائمة مفصولة بفواصل من ميزة الأسماء. أنظر أيضا
-mdump-ضبط-الميزات. عند التحديد ، فإن ميزة قيد التشغيل إذا لم يسبقه
مع ^، وإلا ، تم إيقاف تشغيله. -mtune- السيطرة =قائمة الميزات المقصود استخدامها
من قبل مطوري دول مجلس التعاون الخليجي. قد يؤدي استخدامه إلى مسارات رمز لا يغطيها الاختبار ويمكن
يحتمل أن يؤدي إلى أخطاء في وقت التشغيل أو ICE المترجم.
-لا-الافتراضي
يوجه هذا الخيار GCC إلى إيقاف تشغيل جميع الميزات القابلة للضبط. أنظر أيضا
-mtune- السيطرة =قائمة الميزات -mdump-ضبط-الميزات.
-mcld
يوجه هذا الخيار GCC إلى إرسال تعليمات "cld" في مقدمة الوظائف
التي تستخدم تعليمات السلسلة. تعتمد إرشادات السلسلة على علامة تحديد الاتجاه
بين وضع Autoincrement أو autodecrement. بينما يحدد ABI علامة DF إلى
يتم مسحها عند إدخال الوظيفة ، فإن بعض أنظمة التشغيل تنتهك هذه المواصفات بعدم القيام بذلك
مسح علامة DF في مرسلي الاستثناءات الخاصة بهم. يمكن أن يكون معالج الاستثناء
تم استدعاؤه باستخدام مجموعة علم DF ، مما يؤدي إلى وضع اتجاه خاطئ عند السلسلة
يتم استخدام التعليمات. يمكن تمكين هذا الخيار افتراضيًا على أهداف 32 بت x86 بواسطة
تكوين GCC مع - تمكين cld خيار التكوين. جيل "cld"
يمكن قمع التعليمات باستخدام -منو- cld خيار المترجم في هذه الحالة.
-mvzerupper
يوجه هذا الخيار GCC إلى إصدار تعليمات "vzeroupper" قبل نقل
التحكم في التدفق خارج الوظيفة لتقليل عقوبة انتقال AVX إلى SSE أيضًا
كإزالة جوهرية "zeroupper" غير الضرورية.
-مبرفر- avx128
يوجه هذا الخيار GCC إلى استخدام تعليمات AVX 128 بت بدلاً من 256 بت AVX
التعليمات في ناقل تلقائي.
-مك x16
يتيح هذا الخيار لـ GCC إنشاء تعليمات "CMPXCHG16B". يسمح "CMPXCHG16B"
للعمليات الذرية على أنواع بيانات الكلمات الرباعية المزدوجة (أو كلمة oword) ذات 128 بت. هذا هو
مفيد للعدادات عالية الدقة التي يمكن تحديثها بواسطة معالجات متعددة (أو
النوى). تم إنشاء هذه التعليمات كجزء من الوظائف الذرية المدمجة: see
__sync البنايات or __الذري البنايات للتفاصيل.
-مصاحف
يتيح هذا الخيار إنشاء إرشادات "SAHF" برمز 64 بت. إنتل في وقت مبكر
وحدات المعالجة المركزية Pentium 4 مع دعم Intel 64 ، قبل تقديم خطوة Pentium 4 G1
في ديسمبر 2005 ، تفتقر إلى تعليمات "LAHF" و "SAHF" التي تدعمها
AMD64. هذه هي تعليمات التحميل والتخزين ، على التوالي ، لعلامات حالة معينة.
في وضع 64 بت ، يتم استخدام تعليمات "SAHF" لتحسين "fmod" و "drem" و
الوظائف المضمنة "الباقية" ؛ ارى أخرى البنايات للتفاصيل.
-مموفبي
يتيح هذا الخيار استخدام تعليمات "movbe" لتنفيذ "__builtin_bswap32"
و "__builtin_bswap64".
-mrc32
يتيح هذا الخيار الوظائف المضمنة "__builtin_ia32_crc32qi" ،
"__builtin_ia32_crc32hi" و "__builtin_ia32_crc32si" و "__builtin_ia32_crc32di" إلى
إنشاء تعليمات الجهاز "crc32".
- رثاء
يتيح هذا الخيار استخدام تعليمات "RCPSS" و "RSQRTSS" (وتوجيهها
المتغيرات "RCPPS" و "RSQRTPS") مع خطوة نيوتن رافسون الإضافية لزيادة
الدقة بدلاً من "DIVSS" و "SQRTSS" (ومتغيراتها المتجهية) لمفردها
وسيطات الفاصلة العائمة الدقيقة. يتم إنشاء هذه التعليمات فقط عندما
-ممتعة-الرياضيات-التحسينات مع -الرياضيات- فقط
- الرياضيات. لاحظ أنه في حين أن إنتاجية التسلسل أعلى من
من خلال تعليمات غير متبادلة ، يمكن أن تكون دقة التسلسل
انخفض بما يصل إلى 2 ulp (أي أن معكوس 1.0 يساوي 0.99999994).
لاحظ أن GCC يطبق "1.0f / sqrtf (خ) " من حيث "RSQRTSS" (أو "RSQRTPS") بالفعل
مع -فاست-الرياضيات (أو تركيبة الخيار أعلاه) ، ولا تحتاج - رثاء.
لاحظ أيضًا أن دول مجلس التعاون الخليجي تصدر التسلسل أعلاه مع خطوة نيوتن رافسون الإضافية لـ
قسم عائم واحد متجه ومتجه "sqrtf (خ) " بالفعل مع -فاست-الرياضيات
(أو تركيبة الخيار أعلاه) ، ولا تحتاج - رثاء.
-mrecip =اختار
يتحكم هذا الخيار في إرشادات التقدير المتبادل التي يمكن استخدامها. اختار هو
قائمة خيارات مفصولة بفواصل ، والتي قد يسبقها ملف ! لعكس الخيار:
الكل قم بتمكين كل تعليمات التقدير.
الافتراضي
تمكين التعليمات الافتراضية ، أي ما يعادل - رثاء.
لا شيء
تعطيل جميع تعليمات التقدير ، أي ما يعادل -منو- المتلقي.
شعبة تفعيل التقريب للقسمة العددية.
vec-div
تمكين التقريب للقسمة الموجهة.
الجذر التربيعي
قم بتمكين التقريب للجذر التربيعي القياسي.
جمهورية التشيك - sqrt
قم بتمكين تقريب الجذر التربيعي المتجه.
لذلك ، على سبيل المثال ، -mrecip = الكل ،! sqrt تمكن جميع التقريبات المتبادلة ،
باستثناء الجذر التربيعي.
-mveclibabi =نوع
يحدد نوع ABI لاستخدامه في توجيه العناصر المضمنة باستخدام مكتبة خارجية.
القيم المدعومة لـ نوع . com.svml لمكتبة Intel Short vector الرياضيات و أكمل
لمكتبة AMD الرياضيات الأساسية. لاستخدام هذا الخيار ، كلاهما -ftree-vectorize
-ممتعة-الرياضيات-التحسينات يجب تمكينه ، ومتوافق مع SVML أو ACML ABI
يجب تحديد المكتبة في وقت الارتباط.
تصدر GCC حاليًا استدعاءات إلى "vmldExp2" و "vmldLn2" و "vmldLog102" و "vmldLog102" ،
"vmldPow2" ، "vmldTanh2" ، "vmldTan2" ، "vmldAtan2" ، "vmldAtanh2" ، "vmldCbrt2" ،
"vmldSinh2" ، "vmldSin2" ، "vmldAsinh2" ، "vmldAsin2" ، "vmldCosh2" ، "vmldCos2" ،
"vmldAcosh2" ، "vmldAcos2" ، "vmlsExp4" ، "vmlsLn4" ، "vmlsLog104" ، "vmlsLog104" ،
"vmlsPow4" ، "vmlsTanh4" ، "vmlsTan4" ، "vmlsAtan4" ، "vmlsAtanh4" ، "vmlsCbrt4" ،
"vmlsSinh4" ، "vmlsSin4" ، "vmlsAsinh4" ، "vmlsAsin4" ، "vmlsCosh4" ، "vmlsCos4" ،
"vmlsAcosh4" و "vmlsAcos4" لنوع الوظيفة المقابلة عندما -mveclibabi = svml is
مستخدم ، و "__vrd2_sin" ، "__vrd2_cos" ، "__vrd2_exp" ، "__vrd2_log" ، "__vrd2_log2" ،
"__vrd2_log10" ، "__vrs4_sinf" ، "__vrs4_cosf" ، "__vrs4_expf" ، "__vrs4_logf" ،
"__vrs4_log2f" و "__vrs4_log10f" و "__vrs4_powf" لنوع الوظيفة المقابل
متى -mveclibabi = acml .
-مابي =الاسم
توليد التعليمات البرمجية لاتفاقية الاستدعاء المحددة. القيم المسموح بها هي sysv For
ABI المستخدم في GNU / Linux وأنظمة أخرى ، و ms لـ Microsoft ABI. ال
الافتراضي هو استخدام Microsoft ABI عند استهداف Microsoft Windows و SysV ABI
على جميع الأنظمة الأخرى. يمكنك التحكم في هذا السلوك لوظائف محددة باستخدام
سمات الوظيفة "ms_abi" و "sysv_abi".
-mtls- اللهجة =نوع
قم بإنشاء رمز للوصول إلى التخزين المحلي لمؤشر الترابط باستخدام ملف النو ثيتل افريقي or غنو 2 الاتفاقيات. النو ثيتل افريقي
هو التقصير المحافظ ؛ غنو 2 أكثر كفاءة ، ولكنه قد يضيف ترجمة وتشغيل
متطلبات الوقت التي لا يمكن تلبيتها في جميع الأنظمة.
-فرج-أرجس
-منو-دفع-أرجس
استخدم عمليات PUSH لتخزين المعلمات الصادرة. هذه الطريقة أقصر وعادة
بنفس السرعة مثل الطريقة التي تستخدم عمليات SUB / MOV ويتم تمكينها افتراضيًا. في بعض
قد تؤدي حالات تعطيله إلى تحسين الأداء بسبب الجدولة المحسنة والتقليل
التبعيات.
-تراكم-أرغس الصادرة
في حالة التمكين ، يتم حساب الحد الأقصى من المساحة المطلوبة للوسيطات الصادرة بـ
مقدمة الوظيفة. هذا أسرع في معظم وحدات المعالجة المركزية الحديثة بسبب انخفاض
التبعيات والجدولة المحسنة وتقليل استخدام المكدس عند المكدس المفضل
الحد لا يساوي 2. العيب هو زيادة ملحوظة في حجم الكود. هذه
التبديل يعني -منو-دفع-أرجس.
-ميثريدس
دعم التعامل مع استثناء الخيط الآمن على MinGW. البرامج التي تعتمد على خيط آمن
يجب أن تقوم معالجة الاستثناءات بترجمة وربط كافة التعليمات البرمجية بامتداد -ميثريدس اختيار. متي
تجميع -ميثريدس يحدد -D_MT؛ عند الربط ، فإنه يربط في مساعد مؤشر ترابط خاص
مكتبة - مينغوثرد الذي ينظف بيانات معالجة الاستثناء لكل مؤشر ترابط.
-منو-محاذاة-الأوتار
لا تقم بمحاذاة وجهة عمليات السلسلة المضمنة. هذا التبديل يقلل من التعليمات البرمجية
الحجم ويحسن الأداء في حالة محاذاة الوجهة بالفعل ، ولكن دول مجلس التعاون الخليجي
لا يعرف عنها.
-minline-all-stringops
بشكل افتراضي ، يتضمن GCC عمليات سلسلة فقط عندما تكون الوجهة معروفة
محاذاة إلى حد 4 بايت على الأقل. هذا يتيح المزيد من التضمين ويزيد من التعليمات البرمجية
الحجم ، ولكن قد يحسن أداء الكود الذي يعتمد على "memcpy" و "strlen" و
"memset" لفترات قصيرة.
-minline- سترينجوبس-ديناميكي
بالنسبة لعمليات السلسلة ذات الحجم غير المعروف ، استخدم فحوصات وقت التشغيل مع التعليمات البرمجية المضمنة للصغير
كتل ومكتبة دعوة للكتل الكبيرة.
-استراتيجية -mstringop =ALG
تجاوز استدلال القرار الداخلي للخوارزمية المعينة لاستخدامها
تضمين عمليات السلسلة. القيم المسموح بها لـ ALG هي:
rep_byte
rep_4 بايت
rep_8 بايت
قم بالتوسيع باستخدام بادئة i386 "rep" بالحجم المحدد.
byte_loop
حلقة
unrolled_loop
قم بالتوسيع في حلقة مضمنة.
libcall
استخدم دائمًا مكالمة مكتبة.
-mmemcpy- استراتيجية =إستراتيجية
تجاوز القرار الداخلي الاسترشادي لتحديد ما إذا كان "__builtin_memcpy" يجب أن يكون كذلك
مضمنة وما هي الخوارزمية المضمنة لاستخدامها عند الحجم المتوقع لعملية النسخ
معروف. إستراتيجية هي قائمة مفصولة بفواصل من ALG:اقصى حجم:Dest_align ثلاثة توائم. ALG
محدد في -استراتجوب-استراتيجية, اقصى حجم يحدد الحجم الأقصى للبايت الذي بواسطته
خوارزمية مضمنة ALG مسموح. بالنسبة إلى الثلاثي الأخير ، فإن اقصى حجم يجب أن يكون "-1". ال
اقصى حجم يجب تحديد ثلاثة توائم في القائمة بترتيب تصاعدي. ال
الحد الأدنى لحجم البايت لـ ALG هي 0 لأول ثلاثة توائم و "اقصى حجم + 1" ل
النطاق السابق.
-استراتيجية-mmemset =إستراتيجية
الخيار مشابه لـ -mmemcpy- استراتيجية = إلا أنه من أجل السيطرة
توسيع "__builtin_memset".
-موميت-أوراق-إطار-مؤشر
لا تحتفظ بمؤشر الإطار في سجل لوظائف طرفية. هذا يتجنب
تعليمات لحفظ ، وإعداد ، واستعادة مؤشرات الإطار وإنشاء تسجيل إضافي
متوفر في وظائف الأوراق. الخيار -مؤشر-أوراق-إطار-إطار يزيل الإطار
مؤشر لوظائف الأوراق ، مما قد يجعل تصحيح الأخطاء أكثر صعوبة.
-mtls- مباشرة-seg-refs
-رقم- TLS- المباشر- SEG- المراجع
يتحكم في إمكانية الوصول إلى متغيرات TLS باستخدام إزاحات من مقطع TLS
التسجيل (٪ gs لـ 32 بت ،٪ fs لـ 64 بت) ، أو ما إذا كان يجب أن يكون مؤشر قاعدة مؤشر الترابط
مضاف. يعتمد ما إذا كان هذا صحيحًا أم لا على نظام التشغيل ، وما إذا كان
تعيين المقطع لتغطية منطقة TLS بأكملها.
بالنسبة للأنظمة التي تستخدم مكتبة جنو سي ، يكون الإعداد الافتراضي هو التشغيل.
-msse2avx
-منو- sse2avx
حدد أن المجمع يجب أن يقوم بتشفير تعليمات SSE ببادئة VEX. الخيار
-مافكس يتحول هذا بشكل افتراضي.
-بنتري
-منو- السيجارة
إذا كان التنميط نشطًا (-ص) ، ضع استدعاء عداد التنميط قبل المقدمة.
ملاحظة: في معماريات x86 ، لا تكون السمة "ms_hook_prologue" ممكنة في
لحظة -بنتري -ص.
-mrecord-mcount
-رقم-سجل-ماكونت
إذا كان التنميط نشطًا (-ص) ، قم بإنشاء قسم __mcount_loc يحتوي على مؤشرات
لكل مكالمة تحديد سمات. هذا مفيد لتصحيح المكالمات وإخراجها تلقائيًا.
-منوب-ماكونت
-من-نوب- ماكونت
إذا كان التنميط نشطًا (-ص) ، قم بإنشاء استدعاءات لوظائف التنميط مثل nops.
هذا مفيد عندما يجب تصحيحها لاحقًا ديناميكيًا. هذا على الأرجح فقط
مفيد مع -mrecord-mcount.
-مسكيب-راكس-الإعداد
-mno-تخطي-rax-الإعداد
عند إنشاء رمز لمعمارية x86-64 مع تعطيل ملحقات SSE ،
-تخطي-راكس-الإعداد يمكن استخدامه لتخطي إعداد تسجيل RAX في حالة عدم وجود متغير
تم تمرير الحجج في سجلات المتجهات.
: تحذير نظرًا لأن تسجيل RAX يُستخدم لتجنب حفظ سجلات المتجهات دون داعٍ
كومة عند تمرير الحجج المتغيرة ، قد تكون تأثيرات هذا الخيار كاليس
تضييع بعض مساحة المكدس أو تسيء التصرف أو تقفز إلى موقع عشوائي. GCC 4.4 أو أحدث
ليس لديك هذه المشكلات ، بغض النظر عن قيمة تسجيل RAX.
-m8bit- idiv
-mno-8bit- idiv
في بعض المعالجات ، مثل Intel Atom ، يكون تقسيم الأعداد الصحيحة بدون إشارة 8 بت أسرع بكثير من
قسمة عدد صحيح 32 بت / 64 بت. ينشئ هذا الخيار فحص وقت التشغيل. إذا كان كل من
المقسوم والمقسوم عليهما في نطاق من 0 إلى 255 ، وقسمة عدد صحيح غير إشارة 8 بت هي
تستخدم بدلاً من تقسيم عدد صحيح 32 بت / 64 بت.
-mavx256- تحميل الانقسام غير المحاذاة
-mavx256-Split-unal -igned-store
تقسيم تحميل وتخزين AVX 32 بايت بدون محاذاة.
- الكومة - واقي - الحرس =الحرس
قم بإنشاء كود حماية المكدس باستخدام canary at الحرس. المواقع المدعومة هي شامل
للكناري العالمي أو TLS لكل سلسلة كناري في كتلة TLS (الافتراضي). هذه
الخيار له تأثير فقط عندما -حامي-فسك or -حامي-فستيك-الكل محدد.
تشبه -m يتم دعم المفاتيح بالإضافة إلى ما سبق على معالجات x86-64 في 64 بت
البيئات.
م 32
م 64
-mx32
م 16
قم بإنشاء رمز لبيئة 16 بت أو 32 بت أو 64 بت. ال م 32 مجموعات الخيارات "int" ،
"طويل" ، وأنواع المؤشر إلى 32 بت ، ويقوم بإنشاء رمز يتم تشغيله على أي نظام i386.
تشير م 64 يقوم الخيار بتعيين "int" إلى 32 بت و "طويل" وأنواع المؤشر إلى 64 بت ، و
يولد رمزًا لمعمارية x86-64. لداروين فقط م 64 الخيار أيضا
يطفئ -fno- الموافقة المسبقة عن علم -mdynamic-no-pic خيارات.
تشير -mx32 يقوم الخيار بتعيين "int" و "long" وأنواع المؤشر إلى 32 بت ، ويقوم بإنشاء رمز
للهندسة المعمارية x86-64.
تشير م 16 الخيار هو نفسه م 32، فيما عدا ذلك يتم إخراج ".code16gcc"
توجيه التجميع في بداية إخراج التجميع بحيث يمكن تشغيل الثنائي
في وضع 16 بت.
-من-المنطقة الحمراء
لا تستخدم ما يسمى "المنطقة الحمراء" لرمز x86-64. المنطقة الحمراء بتكليف من
إلى x86-64 ABI ؛ إنها مساحة 128 بايت خارج موقع مؤشر المكدس غير ذلك
تم تعديلها بواسطة معالجات الإشارة أو المقاطعة وبالتالي يمكن استخدامها للبيانات المؤقتة
بدون تعديل مؤشر المكدس. العلم -من-المنطقة الحمراء يعطل هذه المنطقة الحمراء.
-mcmodel = صغير
إنشاء رمز لنموذج الكود الصغير: يجب ربط البرنامج ورموزه بـ
أقل من 2 غيغابايت من مساحة العنوان. المؤشرات 64 بت. يمكن أن تكون البرامج
مرتبطة بشكل ثابت أو ديناميكي. هذا هو نموذج الكود الافتراضي.
-mcmodel = نواة
إنشاء رمز لنموذج كود kernel. يتم تشغيل النواة في السالب 2 جيجا بايت من
مساحة العنوان. يجب استخدام هذا النموذج لكود Linux kernel.
-mcmodel = متوسط
إنشاء رمز للنموذج المتوسط: البرنامج مرتبط في أقل من 2 غيغابايت من
مساحة العنوان. كما يتم وضع الرموز الصغيرة هناك. الرموز بأحجام أكبر من
- عتبة البيانات الكبيرة يتم وضعها في بيانات كبيرة أو أقسام BSS ويمكن تحديد موقعها
فوق 2 جيجابايت. يمكن ربط البرامج بشكل ثابت أو ديناميكي.
-mcmodel = كبير
توليد رمز للنموذج الكبير. لا يقدم هذا النموذج أي افتراضات حول العناوين
وأحجام الأقسام.
-وضع العنوان = طويل
إنشاء رمز لوضع العنوان الطويل. هذا مدعوم فقط لـ 64 بت و x32
البيئات. إنه وضع العنوان الافتراضي لبيئات 64 بت.
-الوضع-العنوان = قصير
توليد رمز لوضع العنوان القصير. هذا مدعوم فقط مع 32 بت و x32
البيئات. إنه وضع العنوان الافتراضي لبيئات 32 بت و x32.
x86 ويندوز مزيد من الخيارات
تتوفر هذه الخيارات الإضافية لأهداف Microsoft Windows:
- وحدة التحكم
يحدد هذا الخيار أنه سيتم إنشاء تطبيق وحدة التحكم ، عن طريق إصدار التعليمات
الرابط لتعيين نوع النظام الفرعي لرأس PE المطلوب لتطبيقات وحدة التحكم.
يتوفر هذا الخيار لأهداف Cygwin و MinGW ويتم تمكينه افتراضيًا
تلك الأهداف.
-mdll
هذا الخيار متاح لأهداف Cygwin و MinGW. تحدد أن ملف DLL --- a
مكتبة الارتباط الديناميكي --- يتم إنشاؤها ، مما يتيح اختيار ملفات
وقت بدء التشغيل ونقطة الدخول.
-منوب-متعة- dllimport
هذا الخيار متاح لأهداف Cygwin و MinGW. تحدد أن ملف
يجب تجاهل سمة "dllimport".
- الخيط
هذا الخيار متاح لأهداف MinGW. وهي تحدد أن مؤشر الترابط الخاص بـ MinGW
الدعم لاستخدامه.
-مونيكود
هذا الخيار متاح لأهداف MinGW-w64. يتسبب في المعالج المسبق "UNICODE"
الماكرو المراد تحديده مسبقًا ، ويختار رمز بدء تشغيل وقت التشغيل المتوافق مع Unicode.
موين 32
هذا الخيار متاح لأهداف Cygwin و MinGW. تحدد أن النموذجي
يجب تعيين وحدات الماكرو المحددة مسبقًا لـ Microsoft Windows في المعالج المسبق ، لكنها لا تفعل ذلك
التأثير على اختيار مكتبة وقت التشغيل / كود بدء التشغيل.
-النوافذ
هذا الخيار متاح لأهداف Cygwin و MinGW. تحدد أن واجهة المستخدم الرسومية
يتم إنشاء التطبيق عن طريق إصدار تعليمات للرابط لتعيين رأس PE
نوع النظام الفرعي بشكل مناسب.
-fno- مجموعة- مكدس قابل للتنفيذ
هذا الخيار متاح لأهداف MinGW. تحدد أن العلامة القابلة للتنفيذ لـ
لم يتم تعيين المكدس الذي تستخدمه الوظائف المتداخلة. هذا ضروري لتشغيل الثنائيات
في وضع kernel في Microsoft Windows ، حيث توجد واجهة برمجة تطبيقات User32 ، والتي تُستخدم لتعيين ملفات
الامتيازات القابلة للتنفيذ ، غير متوفرة.
-الكتل-RDATA
هذا الخيار متاح لأهداف MinGW و Cygwin. وهي تحدد أن تم نقل-
يتم وضع البيانات الموجودة في قسم القراءة فقط في قسم البيانات. هذا ضروري لكبار السن
لا تدعم أوقات التشغيل تعديل أقسام .rdata من أجل النقل الزائف.
-mpe-الانحياز-commons
هذا الخيار متاح لأهداف Cygwin و MinGW. إنها تحدد أن غنو
إلى تنسيق ملف PE الذي يسمح بالمحاذاة الصحيحة للمتغيرات الشائعة
يجب استخدامها عند إنشاء رمز. يتم تمكينه افتراضيًا إذا اكتشف GCC أن ملف
المُجمِّع الهدف الذي تم العثور عليه أثناء التكوين يدعم الميزة.
انظر أيضا تحت x86 مزيد من الخيارات للخيارات القياسية.
اكس ستورمي 16 مزيد من الخيارات
تم تحديد هذه الخيارات لـ Xstormy16:
-مسيم
اختر ملفات بدء التشغيل ونص رابط مناسب لجهاز المحاكاة.
إكستينسا مزيد من الخيارات
هذه الخيارات مدعومة لأهداف Xtensa:
-مكونست 16
-منو- const16
تمكين أو تعطيل استخدام إرشادات "CONST16" لتحميل قيم ثابتة. ال
تعليمات "CONST16" ليست حاليًا خيارًا قياسيًا من Tensilica. متي
عند التمكين ، يتم دائمًا استخدام إرشادات "CONST16" بدلاً من "L32R" القياسي
تعليمات. يتم تمكين استخدام "CONST16" افتراضيًا فقط إذا كان "L32R"
التعليمات غير متوفرة.
-مفوس-ماد
-منو-تنصهر-ماد
قم بتمكين أو تعطيل استخدام تعليمات الضرب / الإضافة والمضاعفة / الطرح المدمجة في ملف
خيار النقطة العائمة. هذا ليس له أي تأثير إذا لم يكن خيار النقطة العائمة كذلك
ممكن. يؤدي تعطيل تعليمات الضرب / الإضافة والمضاعفة / الطرح المدمجة إلى فرض
مترجم لاستخدام تعليمات منفصلة لعمليات الضرب والجمع / الطرح.
قد يكون هذا مرغوبًا في بعض الحالات حيث تكون النتائج الصارمة المتوافقة مع IEEE 754
مطلوب: تعليمات الجمع والطرح المندمجة لا تقرب الوسيط
نتيجة ، وبالتالي الحصول على نتائج مع الأكثر من ذلك بت من الدقة من المحدد بواسطة
معيار IEEE. يؤدي تعطيل تعليمات الإضافة / الطرح المدمجة إلى ضمان ذلك أيضًا
إخراج البرنامج غير حساس لقدرة المترجم على الجمع بين الضرب و
إضافة / طرح عمليات.
- متسلسلة - متقلبة
-رقم متسلسل- متقلب
عند تمكين هذا الخيار ، يقوم GCC بإدراج تعليمات "MEMW" قبل الذاكرة "المتغيرة"
مراجع لضمان الاتساق المتسلسل. الافتراضي هو - متسلسلة - متقلبة.
استعمل -رقم متسلسل- متقلب لحذف إرشادات "MEMW".
-قوة-لا-الموافقة المسبقة عن علم
بالنسبة للأهداف ، مثل GNU / Linux ، حيث يجب أن تكون جميع أكواد Xtensa الخاصة بوضع المستخدم في الموضع-
كود مستقل (PIC) ، هذا الخيار يعطل PIC لتجميع كود النواة.
- نص - قسم - حرفية
-mno-نص-قسم-الحرف
تتحكم هذه الخيارات في معالجة المجمعات الحرفية. الافتراضي هو
-mno-نص-قسم-الحرف، والتي تضع القيم الحرفية في قسم منفصل في الإخراج
ملف. هذا يسمح بوضع التجمع الحرفي في ذاكرة RAM / ROM للبيانات ، كما يسمح بذلك
الرابط لدمج التجمعات الحرفية من ملفات كائنات منفصلة لإزالة التكرار
الحرفية وتحسين حجم الكود. مع - نص - قسم - حرفية، والحرفية هي
تتخللها في قسم النص لإبقائها قريبة قدر الإمكان من ملفات
المراجع. قد يكون هذا ضروريًا لملفات التجميع الكبيرة.
-mtarget- محاذاة
-mno- الهدف- محاذاة
عند تمكين هذا الخيار ، يوجه GCC المجمع إلى المحاذاة تلقائيًا
تعليمات لتقليل عقوبات الفرع على حساب بعض كثافة الكود. ال
يحاول المجمّع توسيع تعليمات الكثافة لمحاذاة أهداف الفرع و
التعليمات باتباع تعليمات الاتصال. إذا لم يكن هناك ما يكفي من الخزنة السابقة
تعليمات الكثافة لمحاذاة الهدف ، لا يتم تنفيذ التوسيع. الافتراضي هو
-mtarget- محاذاة. لا تؤثر هذه الخيارات على معالجة المحاذاة التلقائية
تعليمات مثل "LOOP" ، التي يحاذيها المجمّع دائمًا ، إما عن طريق التوسيع
تعليمات الكثافة أو بإدخال تعليمات NOP.
- مكالمات
-منو- مكالمات طويلة
عند تمكين هذا الخيار ، يوجه مجلس التعاون الخليجي المجمع لترجمة المكالمات المباشرة إليه
المكالمات غير المباشرة ما لم تتمكن من تحديد أن الهدف من المكالمة المباشرة في
النطاق المسموح به بواسطة تعليمات الاتصال. تحدث هذه الترجمة عادةً للمكالمات إلى
وظائف في ملفات المصدر الأخرى. على وجه التحديد ، يقوم المجمع بترجمة ملف
تعليمات "CALL" في "L32R" متبوعة بتعليمات "CALLX". الافتراضي هو
-منو- مكالمات طويلة. يجب استخدام هذا الخيار في البرامج حيث يمكن لهدف المكالمة
من المحتمل أن تكون خارج النطاق. يتم تنفيذ هذا الخيار في المجمع ، وليس في
المترجم ، لذلك لا يزال رمز التجميع الذي تم إنشاؤه بواسطة GCC يظهر استدعاء مباشر
التعليمات --- انظر إلى كود الكائن المفكك لمعرفة التعليمات الفعلية.
لاحظ أن المجمع يستخدم استدعاء غير مباشر لكل استدعاء عبر الملفات ، وليس فقط
تلك الموجودة بالفعل خارج النطاق.
zSeries مزيد من الخيارات
تم سرد هذه تحت
مزيد من الخيارات For رمز جيل الاتفاقيات
تتحكم هذه الخيارات المستقلة عن الآلة في اصطلاحات الواجهة المستخدمة في الكود
توليد.
معظمهم لديهم أشكال إيجابية وسلبية ؛ الشكل السلبي لـ -ffoo is
-فنو-فو. في الجدول أدناه ، تم إدراج نموذج واحد فقط --- النموذج الذي ليس ملف
إفتراضي. يمكنك معرفة الشكل الآخر عن طريق الإزالة الجوى أو إضافته.
- التحقق من القيود
بالنسبة للواجهات الأمامية التي تدعمها ، أنشئ رمزًا إضافيًا للتحقق من استخدام المؤشرات
مصفوفات الوصول ضمن النطاق المعلن. هذا مدعوم حاليًا فقط بواسطة
واجهات Java و Fortran الأمامية ، حيث يتم تعيين هذا الخيار افتراضيًا على صواب وخطأ
على التوالي.
-fstack-reuse =إعادة الاستخدام
يتحكم هذا الخيار في إعادة استخدام مساحة المكدس للمتغيرات المحلية / التلقائية المعلنة من قبل المستخدم و
ولدت المترجم المؤقتات. reuse_level يمكن أن يكون الكل, مسمى_فارسالطرق أو لا شيء. الكل
تمكن من إعادة استخدام المكدس لجميع المتغيرات والمؤقتات المحلية ، مسمى_فارس تمكن
إعادة الاستخدام فقط للمتغيرات المحلية التي يحددها المستخدم بأسماء ، و لا شيء تعطيل إعادة استخدام المكدس
تماما. النظام الأساسي الكل. الخيار مطلوب عندما يمتد البرنامج
عمر المتغير المحلي المحدد النطاق أو المترجم الذي تم إنشاؤه مؤقتًا بعد
نقطة النهاية التي تحددها اللغة. عندما ينتهي عمر المتغير ، وإذا كان
حياة متغيرة في الذاكرة ، يتمتع مترجم التحسين بحرية إعادة استخدام مكدس
مساحة مع موقتات أخرى أو متغيرات محلية محددة النطاق والتي لا يوجد نطاق مباشر لها
تتداخل معها. من المحتمل أن يتم قطع الكود القديم الذي يطيل العمر المحلي مع
كومة إعادة الاستخدام الأمثل.
على سبيل المثال،
int * p؛
{
int local1 ؛
p = & local1؛
local1 = 10 ؛
....
}
{
int local2 ؛
local2 = 20 ؛
}
if (* p == 10) // خارج نطاق استخدام local1
{
}
مثال آخر:
هيكل أ
{
أ (int k): i (k)، j (k) {}
أنا
الباحث ي
};
أ * أب ؛
void foo (const A & ar)
{
أب = & ع ؛
}
شريط باطل ()
{
فو (A(10)) ؛ // ينتهي عمر الكائن temp عند عودة foo
{
A a(20)
....
}
أب-> أنا + = 10 ؛ // ap المراجع خارج النطاق المؤقت الذي توجد مساحته
// يُعاد استخدامه مع ملف. ما هي قيمة ap-> i؟
}
يتم تحديد عمر المترجم المؤقت بشكل جيد بواسطة معيار C ++.
عندما تنتهي حياة مؤقتة ، وإذا عاش المؤقت في الذاكرة ، فإن
تحسين المترجم له الحرية في إعادة استخدام مساحة مكدس مع المؤقتات الأخرى أو
المتغيرات المحلية المحددة النطاق التي لا يتداخل نطاقها المباشر معها. لكن بعض
تعتمد التعليمات البرمجية القديمة على سلوك المترجمين الأقدم حيث يتم تجميع المكدس المؤقت
لا يتم إعادة استخدام المساحة ، يمكن أن تؤدي إعادة الاستخدام المكثف للمكدس إلى حدوث أخطاء في وقت التشغيل. هذه
يتم استخدام الخيار للتحكم في تحسين إعادة استخدام المكدس المؤقت.
-ftrapv
يُنشئ هذا الخيار اعتراضات للتجاوز الموقَّع عند الجمع والطرح
عمليات الضرب.
-فرابف
يرشد هذا الخيار المترجم إلى افتراض تجاوز التدفق الحسابي الموقّع لـ
الجمع والطرح والضرب يلتف حول استخدام مكمل ثنائي
التمثيل. تتيح هذه العلامة بعض التحسينات وتعطل البعض الآخر. هذه
يتم تمكين الخيار افتراضيًا لواجهة Java الأمامية ، كما هو مطلوب بواسطة لغة Java
تخصيص.
- الاستثناءات
تفعيل معالجة الاستثناءات. يولد كودًا إضافيًا مطلوبًا لنشر الاستثناءات. ل
بعض الأهداف ، وهذا يعني أن مجلس التعاون الخليجي يولد معلومات فك الإطارات لجميع الوظائف ،
والتي يمكن أن تنتج حجم بيانات كبير الحجم ، على الرغم من أنها لا تؤثر
إعدام. إذا لم تحدد هذا الخيار ، يقوم GCC بتمكينه افتراضيًا للغات
مثل C ++ التي تتطلب عادةً معالجة الاستثناءات وتعطيلها للغات مثل
ج التي لا تتطلب ذلك في العادة. ومع ذلك ، قد تحتاج إلى تمكين هذا الخيار عندما
تجميع كود C الذي يحتاج إلى التعامل بشكل صحيح مع معالجات الاستثناء المكتوبة
في C ++. قد ترغب أيضًا في تعطيل هذا الخيار إذا كنت تقوم بترجمة C ++ الأقدم
البرامج التي لا تستخدم معالجة الاستثناءات.
- عدم الاستثناءات
قم بإنشاء التعليمات البرمجية التي تسمح لإرشادات الملاءمة برمي الاستثناءات. لاحظ أن هذا
يتطلب دعم وقت تشغيل خاص بالنظام الأساسي غير موجود في كل مكان. وعلاوة على ذلك،
يسمح فقط محاصرة تعليمات لرمي الاستثناءات ، مثل مراجع الذاكرة أو
تعليمات الفاصلة العائمة. لا يسمح بإلقاء الاستثناءات من التعسفي
معالجات الإشارات مثل "SIGALRM".
-fdelete-dead-الاستثناءات
ضع في اعتبارك تلك التعليمات التي قد تطرح استثناءات ولكن لا تساهم فيها بأي طريقة أخرى
يمكن تحسين تنفيذ البرنامج بعيدًا. يتم تمكين هذا الخيار افتراضيًا
للواجهة الأمامية لـ Ada ، وفقًا لما تسمح به مواصفات لغة Ada. الاقوي
يتم تمكين التمريرات التي تتسبب في إزالة الاستثناءات الميتة بشكل مستقل في مختلف
مستويات التحسين.
طاولات ممتعة
على غرار - الاستثناءات، إلا أنه يولد فقط أي بيانات ثابتة مطلوبة ، ولكن
لا يؤثر على الكود الذي تم إنشاؤه بأي طريقة أخرى. أنت عادة لا تحتاج إلى
تمكين هذا الخيار ؛ بدلاً من ذلك ، فإن معالج اللغة الذي يحتاج إلى هذه المعالجة يمكّنه
نيابة عنك.
-غير متزامن-الاسترخاء-الجداول
قم بإنشاء جدول استرخاء بتنسيق DWARF 2 ، إذا كان مدعومًا من الجهاز الهدف. الطاولة هي
دقيق عند حدود كل تعليمات ، لذلك يمكن استخدامه لفك المكدس
الأحداث غير المتزامنة (مثل مصحح الأخطاء أو جامع البيانات المهملة).
-fno-gnu- فريد من نوعه
في الأنظمة التي تحتوي على مُجمّع GNU ومكتبة C حديثًا ، يستخدم مترجم C ++ الامتداد
ربط "STB_GNU_UNIQUE" للتأكد من أن تعريفات أعضاء البيانات الثابتة للقالب
والمتغيرات المحلية الثابتة في الوظائف المضمنة فريدة حتى في وجود
"RTLD_LOCAL" ، هذا ضروري لتجنب المشاكل مع مكتبة يستخدمها اثنان مختلفان
المكونات الإضافية "RTLD_LOCAL" بناءً على تعريف في إحداها وبالتالي
الاختلاف مع الآخر حول ربط الرمز. لكن هذا يسبب
"dlclose" ليتم تجاهله من أجل DSOs المتأثرة ؛ إذا كان برنامجك يعتمد على إعادة التهيئة
DSO عبر "dlclose" و "dlopen" ، يمكنك استخدام -fno-gnu- فريد من نوعه.
-fpcc-Struct-return
قم بإرجاع قيم "البنية" و "الاتحاد" "القصيرة" في الذاكرة مثل القيم الأطول بدلاً من قيم in
السجلات. هذه الاتفاقية أقل كفاءة ، لكنها تتمتع بميزة السماح
قابلية التبادل بين الملفات المجمعة في دول مجلس التعاون الخليجي والملفات التي تم تجميعها مع المجمعين الآخرين ،
ولا سيما مترجم C المحمول (PCC).
تعتمد الاتفاقية الدقيقة لإعادة الهياكل في الذاكرة على الهدف
التكوين وحدات الماكرو.
الهياكل والنقابات القصيرة هي تلك التي يتطابق حجمها ومحاذاة بعضها مع بعض
نوع عدد صحيح.
: تحذير رمز المترجمة مع -fpcc-Struct-return التبديل غير متوافق مع النظام الثنائي
مع رمز تم تجميعه باستخدام امتداد -freg- هيكل- العودة تحول. استخدمه ليتوافق مع غير-
الواجهة الثنائية للتطبيق الافتراضي.
-freg- هيكل- العودة
قم بإرجاع قيم "البنية" و "الاتحاد" في السجلات عندما يكون ذلك ممكنًا. هذا أكثر كفاءة
للهياكل الصغيرة من -fpcc-Struct-return.
إذا لم تحدد أيا منهما -fpcc-Struct-return ولا -freg- هيكل- العودة، افتراضيات دول مجلس التعاون الخليجي
أيهما اصطلاح معياري للهدف. إذا لم تكن هناك اتفاقية قياسية ،
افتراضيات GCC إلى -fpcc-Struct-return، باستثناء الأهداف التي يكون مجلس التعاون الخليجي هو الرئيسي فيها
مترجم. في هذه الحالات ، يمكننا اختيار المعيار ، واختيار الأكثر كفاءة
تسجيل عودة البديل.
: تحذير رمز المترجمة مع -freg- هيكل- العودة التبديل غير متوافق مع النظام الثنائي
مع رمز تم تجميعه باستخدام امتداد -fpcc-Struct-return تحول. استخدمه ليتوافق مع غير-
الواجهة الثنائية للتطبيق الافتراضي.
- تعداد قصير
التخصيص إلى نوع "التعداد" فقط عدد البايت الذي يحتاجه للنطاق المعلن
القيم الممكنة. على وجه التحديد ، نوع "التعداد" يكافئ أصغر عدد صحيح
اكتب الذي يحتوي على مساحة كافية.
: تحذير ال - تعداد قصير يؤدي التبديل إلى GCC لإنشاء رمز غير ثنائي
متوافق مع الكود الذي تم إنشاؤه بدون هذا المفتاح. استخدمه ليتوافق مع غير-
الواجهة الثنائية للتطبيق الافتراضي.
-مضاعفة قصيرة
استخدم نفس الحجم لـ "double" مثل "float".
: تحذير ال -مضاعفة قصيرة يؤدي التبديل إلى GCC لإنشاء رمز غير ثنائي
متوافق مع الكود الذي تم إنشاؤه بدون هذا المفتاح. استخدمه ليتوافق مع غير-
الواجهة الثنائية للتطبيق الافتراضي.
-قصير- wchar
تجاوز النوع الأساسي لـ "wchar_t" ليكون "قصيرًا بدون إشارة int" بدلاً من
الافتراضي للهدف. هذا الخيار مفيد لبناء برامج تعمل في ظل
خمر.
: تحذير ال -قصير- wchar يؤدي التبديل إلى GCC لإنشاء رمز غير ثنائي
متوافق مع الكود الذي تم إنشاؤه بدون هذا المفتاح. استخدمه ليتوافق مع غير-
الواجهة الثنائية للتطبيق الافتراضي.
-fno- مشترك
في كود C ، يتحكم في وضع المتغيرات العالمية غير المهيأة. مترجمي يونيكس سي
سمحت تقليديا بتعريفات متعددة لهذه المتغيرات في مختلف
وحدات التجميع عن طريق وضع المتغيرات في كتلة مشتركة. هذا هو السلوك
المحدد من قبل -مألوف، وهو الإعداد الافتراضي لدول مجلس التعاون الخليجي في معظم الأهداف. من ناحية أخرى،
هذا السلوك غير مطلوب من قبل ISO C ، وقد يحمل في بعض الأهداف سرعة أو رمزًا
حجم العقوبة على المراجع المتغيرة. ال -fno- مشترك يحدد الخيار أن ملف
يجب على المترجم وضع المتغيرات العالمية غير المهيأة في قسم البيانات للكائن
بدلاً من إنشائها ككتل مشتركة. هذا له تأثير أنه إذا كان
تم التصريح عن نفس المتغير (بدون "خارجي") في مجموعتين مختلفتين ، تحصل على
متعدد التعريفات خطأ عند ربطها. في هذه الحالة ، يجب أن تجمع مع
-مألوف في حين أن. تجميع مع -fno- مشترك مفيد في الأهداف التي من أجلها
يقدم أداء أفضل ، أو إذا كنت ترغب في التحقق من أن البرنامج سيعمل
الأنظمة الأخرى التي تعالج دائمًا إعلانات المتغيرات غير المهيأة بهذه الطريقة.
-fno-id
تجاهل التوجيه "#ident".
-حجم منع التوجيه
لا تقم بإخراج توجيه المجمّع ".size" ، أو أي شيء آخر قد يسبب مشكلة
إذا تم تقسيم الوظيفة في المنتصف ، وتم وضع النصفين في مواقع بعيدة
بصرف النظر عن الذاكرة. يستخدم هذا الخيار عند الترجمة crtstuff.c؛ لا تحتاج
لاستخدامه في أي شيء آخر.
-فطر- asm
ضع معلومات تعليق إضافية في كود التجميع الذي تم إنشاؤه لجعله أكثر
مقروء. هذا الخيار بشكل عام فقط للاستخدام لأولئك الذين يحتاجون بالفعل إلى قراءة
إنشاء كود التجميع (ربما أثناء تصحيح أخطاء المترجم نفسه).
-fno-مطول-asm، الافتراضي ، يؤدي إلى حذف المعلومات الإضافية وهو
مفيد عند مقارنة ملفي المجمع.
- مفاتيح دول مجلس التعاون الخليجي
يتسبب رمز التبديل هذا في استخدام سطر الأوامر لاستدعاء المترجم ليتم التسجيل فيه
ملف الكائن الذي يتم إنشاؤه. يتم تنفيذ هذا التبديل فقط على البعض
الأهداف والتنسيق الدقيق للتسجيل هو تنسيق الملف الثنائي والهدف
تابع ، ولكنه يأخذ شكل قسم يحتوي على نص ASCII. هذه
التبديل مرتبط بـ -فطر- asm التبديل ، ولكن هذا التبديل فقط السجلات
المعلومات في ملف إخراج المجمع كتعليقات ، لذلك لا تصل إلى الكائن أبدًا
ملف. أنظر أيضا -جريكورد- مفاتيح دول مجلس التعاون الخليجي للحصول على طريقة أخرى لتخزين خيارات المترجم في ملفات
ملف الكائن.
-fpic
قم بإنشاء رمز مستقل عن الموضع (PIC) مناسب للاستخدام في مكتبة مشتركة ، إذا
مدعوم للجهاز الهدف. يصل هذا الرمز إلى جميع العناوين الثابتة من خلال a
جدول الإزاحة العالمية (GOT). يحل المُحمل الديناميكي إدخالات GOT عندما يكون ملف
يبدأ البرنامج (المحمل الديناميكي ليس جزءًا من دول مجلس التعاون الخليجي ؛ إنه جزء من التشغيل
النظام). إذا تجاوز حجم GOT للملف التنفيذي المرتبط الحد الأقصى الخاص بالجهاز
بحجم ، تحصل على رسالة خطأ من الرابط تشير إلى ذلك -fpic لا يعمل؛ في
في هذه الحالة ، قم بإعادة التحويل البرمجي باستخدام -fPIC في حين أن. (هذه الحدود القصوى هي 8 كيلو بايت على SPARC و 32 كيلو بايت
على m68k و RS / 6000. x86 ليس له مثل هذا الحد.)
تتطلب التعليمات البرمجية المستقلة عن الموضع دعمًا خاصًا ، وبالتالي فهي تعمل فقط على
آلات معينة. بالنسبة إلى الطراز x86 ، تدعم دول مجلس التعاون الخليجي الموافقة المسبقة عن علم للنظام الخامس ولكن ليس للشمس
386 ط. الرمز الذي تم إنشاؤه لـ IBM RS / 6000 يكون دائمًا مستقلاً عن الموضع.
عند تعيين هذه العلامة ، يتم تعريف وحدات الماكرو "__pic__" و "__PIC__" على 1.
-fPIC
إذا كان مدعومًا للجهاز المستهدف ، فقم بإصدار رمز مستقل عن الموضع ، مناسب لـ
الارتباط الديناميكي وتجنب أي قيود على حجم جدول الإزاحة العالمية. هذه
الخيار يحدث فرقًا في m68k و PowerPC و SPARC.
تتطلب التعليمات البرمجية المستقلة عن الموضع دعمًا خاصًا ، وبالتالي فهي تعمل فقط على
آلات معينة.
عند تعيين هذه العلامة ، يتم تعريف وحدات الماكرو "__pic__" و "__PIC__" على 2.
-fpie
-fPIE
هذه الخيارات تشبه -fpic -fPIC، ولكن تم إنشاء رمز مستقل للموضع
يمكن ربطها فقط في الملفات التنفيذية. عادة ما يتم استخدام هذه الخيارات عندما -فطيرة الخليج
يستخدم الخيار أثناء الربط.
-fpie -fPIE كلاهما يعرّف وحدات الماكرو "__pie__" و "__PIE__". تحتوي وحدات الماكرو على الامتداد
القيمة 1 ل -fpie و شنومك ل -fPIE.
-fno- القفز-الجداول
لا تستخدم جداول الانتقال لتعليمات التبديل حتى عندما تكون أكثر كفاءة
من إستراتيجيات إنشاء الكود الأخرى. هذا الخيار مفيد بالاشتراك مع
-fpic or -fPIC لبناء كود يشكل جزءًا من رابط ديناميكي ولا يمكنه ذلك
الإشارة إلى عنوان جدول الانتقال. في بعض الأهداف ، لا تتطلب جداول القفز أ
حصلت وهذا الخيار ليست هناك حاجة.
-مثبت-ريج
تعامل مع السجل المسمى ريج كسجل ثابت ؛ يجب ألا يشير الرمز الذي تم إنشاؤه إلى
(باستثناء ربما كمؤشر مكدس أو مؤشر إطار أو في بعض الأدوار الثابتة الأخرى).
ريج يجب أن يكون اسم السجل. أسماء التسجيل المقبولة خاصة بالجهاز
ويتم تعريفها في الماكرو "REGISTER_NAMES" في ملف الماكرو لوصف الجهاز.
لا تحتوي هذه العلامة على شكل سلبي ، لأنها تحدد اختيارًا ثلاثي الاتجاهات.
-fcall- المستخدمة-ريج
تعامل مع السجل المسمى ريج كسجل قابل للتخصيص تضربه الوظيفة
المكالمات. قد يتم تخصيصها للمؤقتات أو المتغيرات التي لا تعيش عبر أ
مكالمة. لا تقوم الوظائف المترجمة بهذه الطريقة بحفظ السجل واستعادته ريج.
من الخطأ استخدام هذه العلامة مع مؤشر الإطار أو مؤشر المكدس. استخدام هذا
علامة للسجلات الأخرى التي لها أدوار شاملة ثابتة في تنفيذ الجهاز
نتائج كارثية.
لا تحتوي هذه العلامة على شكل سلبي ، لأنها تحدد اختيارًا ثلاثي الاتجاهات.
-حفظ المكالمة-ريج
تعامل مع السجل المسمى ريج كسجل قابل للتخصيص يتم حفظه بواسطة الوظائف. من الممكن ان تكون
المخصصة حتى للمؤقتات أو المتغيرات التي تعيش عبر مكالمة. المهام
جمعت بهذه الطريقة حفظ واستعادة السجل ريج إذا استخدموه.
من الخطأ استخدام هذه العلامة مع مؤشر الإطار أو مؤشر المكدس. استخدام هذا
علامة للسجلات الأخرى التي لها أدوار شاملة ثابتة في تنفيذ الجهاز
نتائج كارثية.
نوع مختلف من الكوارث ينتج عن استخدام هذا العلم لسجل فيه
قد يتم إرجاع قيم الدالة.
لا تحتوي هذه العلامة على شكل سلبي ، لأنها تحدد اختيارًا ثلاثي الاتجاهات.
-fpack- هيكل [=n]
بدون تحديد قيمة ، قم بتجميع جميع أعضاء الهيكل معًا بدون ثقوب. عندما
تم تحديد القيمة (والتي يجب أن تكون قوة صغيرة من اثنين) ، أعضاء بنية الحزمة
وفقًا لهذه القيمة ، يمثل الحد الأقصى للمحاذاة (أي الكائنات ذات
متطلبات المحاذاة الافتراضية الأكبر من هذا من المحتمل أن تكون غير محاذاة عند
موقع التركيب التالي.
: تحذير ال -fpack- هيكل يؤدي التبديل إلى GCC لإنشاء رمز غير ثنائي
متوافق مع الكود الذي تم إنشاؤه بدون هذا المفتاح. بالإضافة إلى ذلك ، فإنه يصنع الكود
دون المستوى الأمثل. استخدمه للتوافق مع واجهة تطبيق ثنائية غير افتراضية.
- وظائف الصك
توليد نداءات أجهزة للدخول والخروج إلى الوظائف. فقط بعد الوظيفة
الدخول وقبل خروج الوظيفة مباشرة ، يتم استدعاء وظائف التنميط التالية بـ
عنوان الوظيفة الحالية وموقع الاتصال الخاص بها. (في بعض الأنظمة الأساسية ،
"__builtin_return_address" لا يعمل خارج الوظيفة الحالية ، لذلك موقع الاستدعاء
قد لا تكون المعلومات متاحة لوظائف التنميط خلاف ذلك.)
باطل __cyg_profile_func_enter (باطل * this_fn ،
باطل * call_site) ؛
باطل __cyg_profile_func_exit (باطل * this_fn ،
باطل * call_site) ؛
الوسيطة الأولى هي عنوان بداية الوظيفة الحالية ، والتي قد تكون
بحثت بالضبط في جدول الرموز.
يتم إجراء هذه الأجهزة أيضًا للوظائف الموسعة المضمنة في وظائف أخرى.
تشير استدعاءات التنميط إلى المكان الذي يتم فيه إدخال الدالة المضمنة و
خرج. هذا يعني أن الإصدارات القابلة للتوجيه من هذه الوظائف يجب أن تكون متاحة. لو
يتم توسيع جميع استخدامات الوظيفة بشكل مضمّن ، وهذا قد يعني توسيعًا إضافيًا
من حجم الكود. إذا كنت تستخدم "خارجي مضمن" في كود C الخاص بك ، فسيكون إصدار قابل للعنونة من
يجب توفير هذه الوظائف. (هذا هو الحال عادة على أي حال ، ولكن إذا حصلت على
محظوظًا والمحسن دائمًا يوسع الوظائف المضمنة ، ربما تكون قد حصلت عليها
بعيدًا دون تقديم نسخ ثابتة.)
يمكن إعطاء وظيفة السمة "no_instrument_function" ، وفي هذه الحالة هذا
لم يتم عمل الأجهزة. يمكن استخدام هذا ، على سبيل المثال ، للتنميط
الوظائف المذكورة أعلاه وإجراءات المقاطعة ذات الأولوية العالية وأي وظائف منها
لا يمكن استدعاء وظائف التنميط بأمان (ربما معالجات الإشارة ، إذا كان
تولد إجراءات التنميط الإخراج أو تخصيص الذاكرة).
- وظائف الصك - استبعاد - قائمة الملفات =ملف,ملف، ...
عيّن قائمة الوظائف المستبعدة من الأجهزة (انظر الوصف
of - وظائف الصك). إذا كان الملف الذي يحتوي على تعريف دالة يطابق
مع واحد من ملف، إذًا لا يتم استخدام هذه الوظيفة. تنتهي المباراة يوم
سلاسل فرعية: إذا كان ملف المعلمة هي سلسلة فرعية من اسم الملف ، وتعتبر
يكون متطابقا.
فمثلا:
-finstrument-function-extra-file-list = / bits / stl ، include / sys
يستثني أي دالة مضمنة محددة في الملفات التي تحتوي أسماء المسار الخاصة بها / بت / stl or
تشمل / sys.
إذا كنت تريد ، لسبب ما ، تضمين حرف , في واحدة من SYM، اكتب ,. على سبيل المثال،
-صكوك-وظائف-استبعاد-قائمة الملفات = '، tmp' (لاحظ الاقتباس الفردي المحيط
الخيار).
-الصك-الدوال-استبعاد-وظيفة-قائمة =SYM,SYM، ...
هذا هو مماثل ل - وظائف الصك - استبعاد - قائمة الملفات، ولكن هذا الخيار يعيّن ملف
قائمة أسماء الوظائف التي سيتم استبعادها من الأجهزة. اسم الوظيفة ليكون
المطابقة هو اسمها المرئي للمستخدم ، مثل "متجه بلاه (ناقل كونست &)"، ليس
الاسم الداخلي المشوه (على سبيل المثال ، "_Z4blahRSt6vectorIiSaIiEE"). تنتهي المباراة يوم
سلاسل فرعية: إذا كان SYM المعلمة هي سلسلة فرعية لاسم الوظيفة ، يتم اعتبارها
لتكون مباراة. بالنسبة للمعرفات الموسعة C99 و C ++ ، يجب إعطاء اسم الوظيفة
في UTF-8 ، بدون استخدام أسماء أحرف عالمية.
-fstack- الاختيار
قم بإنشاء رمز للتحقق من أنك لا تتجاوز حدود المكدس. أنت
يجب أن تحدد هذه العلامة إذا كنت تعمل في بيئة بها سلاسل رسائل متعددة ،
ولكنك نادرًا ما تحتاج إلى تحديده في بيئة ذات ترابط واحد منذ المكدس
يتم اكتشاف التدفق الزائد تلقائيًا في جميع الأنظمة تقريبًا إذا كان هناك مكدس واحد فقط.
لاحظ أن رمز التبديل هذا لا يؤدي في الواقع إلى إجراء الفحص ؛ التشغيل
يجب أن يقوم النظام أو وقت تشغيل اللغة بذلك. يؤدي التبديل إلى إنشاء رمز لـ
تأكد من أنهم يرون المكدس يتم تمديده.
يمكنك أيضًا تحديد معلمة سلسلة: لا يعني عدم التحقق ، عام يعني
فرض استخدام أسلوب الفحص القديم ، محدد يعني استخدام أفضل طريقة فحص و
يعادل العاري -fstack- الاختيار.
فحص النمط القديم هو آلية عامة لا تتطلب دعم هدف محدد في
المترجم ولكنه يأتي مع العيوب التالية:
1. إستراتيجية التخصيص المعدلة للكائنات الكبيرة: يتم تخصيصها دائمًا
ديناميكيًا إذا تجاوز حجمها حدًا ثابتًا.
2. حد ثابت لحجم الإطار الثابت للوظائف: عندما يعلوه أ
وظيفة معينة ، فإن فحص المكدس غير موثوق به ويصدر تحذير من
مترجم.
3. عدم الكفاءة: بسبب استراتيجية التخصيص المعدلة والعامة
التنفيذ ، يتم إعاقة أداء الكود.
لاحظ أن فحص المكدس ذي النمط القديم هو أيضًا طريقة احتياطية لـ محدد إذا لا
تمت إضافة الدعم الهدف في المترجم.
-fstack-Limit- التسجيل =ريج
-fstack-Limit- رمز =SYM
-fno- كومة الحد
قم بإنشاء رمز للتأكد من أن المكدس لا يتجاوز قيمة معينة أيضًا
قيمة السجل أو عنوان الرمز. إذا كانت هناك حاجة إلى مكدس أكبر ، أ
يتم رفع الإشارة في وقت التشغيل. بالنسبة لمعظم الأهداف ، يتم رفع الإشارة قبل المكدس
يتجاوز الحد ، لذلك من الممكن التقاط الإشارة دون أخذ خاص
الاحتياطات.
على سبيل المثال ، إذا بدأ المكدس بالعنوان المطلق 0x80000000 وتنمو للأسفل ،
يمكنك استخدام الأعلام -fstack-Limit-code = __ stack_limit
-Wl، - defsym، __ stack_limit = 0x7ffe0000 لفرض حد مكدس يبلغ 128 كيلوبايت. لاحظ أن
قد يعمل هذا فقط مع رابط جنو.
-fsplit- المكدس
قم بإنشاء رمز لتقسيم المكدس تلقائيًا قبل أن يفيض. النتيجة
يحتوي البرنامج على مكدس غير مجاور لا يمكن تجاوزه إلا إذا كان البرنامج غير قادر على ذلك
تخصيص المزيد من الذاكرة. هذا هو الأكثر فائدة عند تشغيل البرامج الخيوط ، كما هو
لم يعد ضروريًا لحساب حجم مكدس جيد لاستخدامه لكل مؤشر ترابط. هذا هو
مطبق حاليًا فقط لأهداف x86 التي تعمل بنظام GNU / Linux.
عندما يتم تجميع التعليمات البرمجية باستخدام -fsplit- المكدس رمز المكالمات المترجمة بدون -fsplit- المكدس، هناك
قد لا تتوفر مساحة مكدس كبيرة لتشغيل الكود الأخير. إذا كان تجميع كل شيء
رمز ، بما في ذلك رمز المكتبة ، مع -fsplit- المكدس ليس خيارًا ، ثم يمكن للرابط
إصلاح هذه المكالمات بحيث يتم تجميع الشفرة بدون -fsplit- المكدس دائما كبيرة
كومة. تم تنفيذ الدعم لهذا في رابط الذهب في إصدار ثنائيات جنو
2.21 وما بعده.
- تسطير - عابرة
هذا الخيار ونظيره ، -الرئيسية- الشرطة السفلية، قم بتغيير طريقة C بالقوة
يتم تمثيل الرموز في ملف الكائن. أحد الاستخدامات هو المساعدة في الارتباط بالإرث
كود التجميع.
: تحذير ال - تسطير - عابرة يؤدي التبديل إلى GCC لإنشاء رمز ليس كذلك
ثنائي متوافق مع التعليمات البرمجية التي تم إنشاؤها بدون هذا المفتاح. استخدمه ليتوافق مع أ
واجهة التطبيق الثنائية غير الافتراضية. ليست كل الأهداف تقدم الدعم الكامل
لهذا التبديل.
-ftls- نموذج =نموذج
قم بتغيير نموذج التخزين المحلي الخيط المراد استخدامه. ال نموذج يجب أن تكون الحجة واحدة من
ديناميكية عالمية, ديناميكية محلية, الأولي exec or تنفيذي محلي. لاحظ أن الاختيار هو
يخضع للتحسين: قد يستخدم المترجم نموذجًا أكثر كفاءة للرموز غير
مرئي خارج وحدة الترجمة ، أو إذا -fpic لم يتم تقديمه في سطر الأوامر.
الافتراضي بدون -fpic is الأولي exec؛ مع -fpic الافتراضي هو ديناميكية عالمية.
- الرؤية =[الافتراضي|داخلي|مخفي|محمي]
اضبط رؤية رمز صورة ELF الافتراضية على الخيار المحدد --- جميع الرموز
تم تمييزه بهذا ما لم يتم تجاوزه داخل الكود. يمكن استخدام هذه الميزة جدا
تحسين الربط وأوقات تحميل مكتبات الكائنات المشتركة بشكل كبير ، وإنتاج المزيد
كود محسّن ، يوفر تصديرًا شبه مثالي لواجهة برمجة التطبيقات ويمنع تضارب الرموز. إنها
بقوة يوصى باستخدام هذا في أي كائنات مشتركة تقوم بتوزيعها.
على الرغم من التسمية ، الافتراضي تعني دائمًا عامة ؛ على سبيل المثال ، متاح للربط
ضد من خارج الكائن المشترك. محمي داخلي عديمة الفائدة في
الاستخدام في العالم الحقيقي ، لذا فإن الخيار الوحيد الشائع الاستخدام هو مخفي. الافتراضي إذا
- الرؤية غير محدد هو الافتراضي، على سبيل المثال ، اجعل كل رمز عامًا.
شرح جيد للمزايا المقدمة من خلال التأكد من أن رموز ELF صحيحة
يتم إعطاء الرؤية من خلال "كيفية كتابة المكتبات المشتركة" بواسطة Ulrich Drepper (والذي يمكن أن يكون
وجدت فيhttp://www.akkadia.org/drepper/>) --- ومع ذلك تم تقديم حل متفوق
من الممكن من خلال هذا الخيار وضع علامة على الأشياء المخفية عندما يكون الإعداد الافتراضي عامًا
الافتراضي المخفي وتمييز الأشياء بشكل عام. هذا هو المعيار مع ملفات DLL على Windows و
مع -رؤية = مخفي و "__السمة__ ((الرؤية (" الافتراضي ")))" بدلاً من
"__declspec (dllexport)" تحصل على دلالات متطابقة تقريبًا ببنية متطابقة.
هذه نعمة عظيمة لأولئك الذين يعملون في مشاريع عبر الأنظمة الأساسية.
لأولئك الذين يضيفون دعم الرؤية إلى الكود الحالي ، قد تجد "#pragma GCC
رؤية "الاستخدام. يعمل هذا من خلال إرفاق الإعلانات التي ترغب في تعيينها
visibility لـ (على سبيل المثال) "#pragma GCC visibility push (hidden)" و "#pragma
ظهور دول مجلس التعاون الخليجي ". ضع في اعتبارك أنه يجب عرض رؤية الرمز as جزء of
ال API الواجهة عقد وبالتالي يجب أن تحدد جميع التعليمات البرمجية الجديدة دائمًا مدى الرؤية
ليس هذا هو الافتراضي. على سبيل المثال ، يجب أن تكون الإعلانات للاستخدام داخل DSO المحلي فقط
دائما يتم تمييزها صراحة على أنها مخفية لتجنب المراوغة من PLT
النفقات العامة --- جعل هذا واضحًا بشكل كبير يساعد أيضًا في سهولة القراءة والتوثيق الذاتي
من الكود. لاحظ أنه نظرًا لمتطلبات مواصفات ISO C ++ ، فإن "عامل التشغيل جديد" و
يجب أن يكون "حذف عامل التشغيل" دائمًا من الرؤية الافتراضية.
اعلم أن الرؤوس من خارج مشروعك ، لا سيما رؤوس النظام و
رؤوس من أي مكتبة أخرى تستخدمها ، قد لا تتوقع أن يتم تجميعها باستخدام
الرؤية بخلاف الافتراضي. قد تحتاج إلى قول "#pragma GCC
دفع الرؤية (افتراضي) "قبل تضمين أي من هذه الرؤوس.
لا تتأثر الإعلانات "الخارجية" بـ - الرؤية، لذلك يمكن أن يكون هناك الكثير من التعليمات البرمجية
معاد تجميعها -رؤية = مخفي بدون تعديلات. ومع ذلك ، هذا يعني ذلك
تستخدم دعوات وظائف "خارجية" بدون رؤية واضحة PLT ، لذا فهي أكثر من ذلك
فعالة لاستخدام "__attribute ((visibility))" و / أو "#pragma GCC visibility" لإخبار
المترجم الذي يجب أن تعامل الإعلانات "الخارجية" على أنها مخفية.
نلاحظ أن - الرؤية لا تؤثر على كيانات الارتباط الغامضة C ++. هذا يعني أن ، ل
على سبيل المثال ، يجب وضع علامة صريحة على فئة الاستثناء التي يتم طرحها بين DSOs
مع الرؤية الافتراضية بحيث يكون type_info يتم توحيد العقد بين DSOs.
نظرة عامة على هذه التقنيات وفوائدها وكيفية استخدامها في
<http://gcc.gnu.org/wiki/Visibility>.
- bitfields شديدة التقلب
يجب استخدام هذا الخيار في حالة الوصول إلى حقول بت متغيرة (أو بنية أخرى
الحقول ، على الرغم من أن المترجم يكرم هذه الأنواع على أي حال) يجب أن يستخدم واحدًا
الوصول إلى عرض نوع الحقل ، محاذيًا لمحاذاة طبيعية إن أمكن.
على سبيل المثال ، قد تتطلب الأهداف ذات السجلات الطرفية المعينة للذاكرة كل هذا
يصل عرضها إلى 16 بتًا ؛ باستخدام هذه العلامة ، يمكنك التصريح عن جميع حقول البت الطرفية
كـ "قصير بدون توقيع" (بافتراض أن البيع هو 16 بت على هذه الأهداف) لإجبار مجلس التعاون الخليجي على الاستخدام
وصول 16 بت بدلاً من وصول 32 بت أكثر كفاءة.
إذا تم تعطيل هذا الخيار ، يستخدم المترجم التعليمات الأكثر فعالية. في ال
المثال السابق ، قد يكون هذا تعليمة تحميل 32 بت ، على الرغم من وصول ذلك
البايت التي لا تحتوي على أي جزء من حقل البت أو السجلات المعينة للذاكرة
لا علاقة لها بالشخص الذي يتم تحديثه.
في بعض الحالات ، مثل عند تطبيق السمة "المحشوة" على حقل بنية ، يتم ذلك
قد لا يكون من الممكن الوصول إلى الحقل بقراءة أو كتابة واحدة صحيحة
محاذاة للجهاز الهدف. في هذه الحالة ، يعود مجلس التعاون الخليجي إلى توليد المضاعفات
الوصول بدلاً من التعليمات البرمجية التي ستؤدي إلى حدوث خطأ أو اقتطاع النتيجة في وقت التشغيل.
ملاحظة: بسبب قيود نموذج الذاكرة C / C ++ 11 ، لا يُسمح بوصول الكتابة
للمس غير أعضاء مجال بت. لذلك يوصى بتعريف كافة وحدات بت
نوع الحقل كأعضاء حقل بت.
يتم تحديد القيمة الافتراضية لهذا الخيار بواسطة الواجهة الثنائية للتطبيق لـ
المعالج الهدف.
-fsync-libcalls
يتحكم هذا الخيار في ما إذا كان أي مثيل خارج الخط لعائلة "__sync" أم لا
يمكن استخدام وظائف لتنفيذ مجموعة وظائف C ++ 11 "__atomic".
يتم تمكين القيمة الافتراضية لهذا الخيار ، وبالتالي الشكل الوحيد المفيد للخيار
is -لا-مزامنة- libcalls. يستخدم هذا الخيار في تنفيذ libatomic
مكتبة وقت التشغيل.
البيئة
يصف هذا القسم العديد من متغيرات البيئة التي تؤثر على كيفية عمل GCC. بعض
منهم يعملون عن طريق تحديد الدلائل أو البادئات لاستخدامها عند البحث عن أنواع مختلفة
من الملفات. يستخدم البعض لتحديد جوانب أخرى من بيئة التجميع.
لاحظ أنه يمكنك أيضًا تحديد أماكن للبحث باستخدام خيارات مثل -B, -I -L.
هذه لها الأسبقية على الأماكن المحددة باستخدام متغيرات البيئة ، والتي بدورها
لها الأسبقية على تلك المحددة من قبل تكوين مجلس التعاون الخليجي.
لانج
LC_CTYPE
رسائل LC
LC_ALL
تتحكم متغيرات البيئة هذه في الطريقة التي يستخدم بها مجلس التعاون الخليجي معلومات التوطين
مما يسمح لدول مجلس التعاون الخليجي بالعمل مع الاتفاقيات الوطنية المختلفة. دول مجلس التعاون الخليجي يتفقد المكان
الفئات LC_CTYPE رسائل LC إذا تم تكوينه للقيام بذلك. هذه اللغة
يمكن تعيين الفئات على أي قيمة يدعمها التثبيت الخاص بك. القيمة النموذجية هي
en_GB.UTF-8 للغة الإنجليزية في المملكة المتحدة بترميز UTF-8.
تشير LC_CTYPE متغير البيئة يحدد تصنيف الأحرف. يستخدمه دول مجلس التعاون الخليجي ل
تحديد حدود الحرف في سلسلة ؛ هذا مطلوب لبعض multibyte
الترميزات التي تحتوي على أحرف اقتباس وهروب يتم تفسيرها على أنها أ
نهاية السلسلة أو الهروب.
تشير رسائل LC يحدد متغير البيئة اللغة المراد استخدامها في التشخيص
الرسائل.
إذا كان LC_ALL تم تعيين متغير البيئة ، فهو يتجاوز قيمة LC_CTYPE
رسائل LC؛ غير ذلك، LC_CTYPE رسائل LC الافتراضي إلى قيمة لانج
متغيرات البيئة. إذا لم يتم تعيين أي من هذه المتغيرات ، فسيتم تعيين إعدادات GCC الافتراضية على التقليدية
ج ـ السلوك الإنجليزي.
تمبير
If تمبير تم تعيينه ، فهو يحدد الدليل الذي سيتم استخدامه للملفات المؤقتة. يستخدم دول مجلس التعاون الخليجي
الملفات المؤقتة للاحتفاظ بإخراج مرحلة واحدة من التجميع والتي سيتم استخدامها كملف
الإدخال إلى المرحلة التالية: على سبيل المثال ، إخراج المعالج ، وهو ملف
الإدخال إلى المترجم المناسب.
مجلس التعاون الخليجي_COMPARE_DEBUG
الضبط مجلس التعاون الخليجي_COMPARE_DEBUG يكافئ التمرير تقريبًا -fcompare-debug إلى
سائق المترجم. راجع توثيق هذا الخيار لمزيد من التفاصيل.
مجلس التعاون الخليجي_EXEC_PREFIX
If مجلس التعاون الخليجي_EXEC_PREFIX تم تعيينه ، فإنه يحدد بادئة لاستخدامها في أسماء
البرامج الفرعية المنفذة من قبل المترجم. لا يتم إضافة شرطة مائلة عند دمج هذه البادئة
باسم برنامج فرعي ، ولكن يمكنك تحديد بادئة تنتهي بشرطة مائلة إذا
كنت ترغب في ذلك.
If مجلس التعاون الخليجي_EXEC_PREFIX لم يتم تعيينه ، يحاول مجلس التعاون الخليجي معرفة بادئة مناسبة لاستخدامها
بناءً على اسم المسار الذي يتم استدعاؤه معه.
إذا لم يتمكن GCC من العثور على البرنامج الفرعي باستخدام البادئة المحددة ، فإنه يحاول البحث في
الأماكن المعتادة للبرنامج الفرعي.
القيمة الافتراضية لـ مجلس التعاون الخليجي_EXEC_PREFIX is البادئة / lib / gcc / أين بادئة هي البادئة ل
المترجم المثبت. في كثير من الحالات بادئة هي قيمة "البادئة" عند تشغيل ملف
تكوين النصي.
البادئات الأخرى المحددة بـ -B لها الأسبقية على هذه البادئة.
تستخدم هذه البادئة أيضًا للبحث عن ملفات مثل crt0.o التي تستخدم للربط.
بالإضافة إلى ذلك ، يتم استخدام البادئة بطريقة غير معتادة في العثور على الدلائل المراد البحث عنها
لملفات الرأس. لكل من الدلائل القياسية التي يبدأ اسمها عادة
مع / usr / local / lib / gcc (بتعبير أدق ، مع قيمة مجلس التعاون الخليجي_INCLUDE_DIR) ، يحاول دول مجلس التعاون الخليجي
استبدال تلك البداية بالبادئة المحددة لإنتاج دليل بديل
اسم. وهكذا ، مع -بفو /، عمليات البحث في دول مجلس التعاون الخليجي فو / بار قبل أن يبحث في المعيار
دليل / usr / local / lib / bar. إذا كان الدليل القياسي يبدأ بملف
بادئة ثم قيمة بادئة لقد بدل بواسطة مجلس التعاون الخليجي_EXEC_PREFIX عند البحث عن العنوان
الملفات.
كومبيلر_باث
قيمة كومبيلر_باث هي قائمة أدلة مفصولة بنقطتين ، تشبه إلى حد كبير PATH.
يحاول GCC الأدلة المحددة على هذا النحو عند البحث عن البرامج الفرعية ، إذا لم يتمكن من ذلك
ابحث عن البرامج الفرعية باستخدام مجلس التعاون الخليجي_EXEC_PREFIX.
LIBRARY_PATH
قيمة LIBRARY_PATH هي قائمة أدلة مفصولة بنقطتين ، تشبه إلى حد كبير PATH.
عند تكوينه كمترجم أصلي ، يحاول GCC الأدلة المحددة هكذا عندما
البحث عن ملفات رابط خاصة ، إذا تعذر العثور عليها باستخدام مجلس التعاون الخليجي_EXEC_PREFIX.
يستخدم الارتباط باستخدام GCC أيضًا هذه الأدلة عند البحث عن مكتبات عادية
ل -l الخيار (لكن الدلائل المحددة بامتداد -L تعال أولا).
لانج
يستخدم هذا المتغير لتمرير معلومات اللغة إلى المترجم. طريقة واحدة فيها
يتم استخدام هذه المعلومات لتحديد مجموعة الأحرف التي سيتم استخدامها عند الحرف
يتم تحليل القيم الحرفية والسلسلة والتعليقات في C و C ++. عندما يكون المترجم
تم تكوينه للسماح بأحرف متعددة البايت ، والقيم التالية لـ لانج .
معروف:
C-JIS
التعرف على أحرف JIS.
C-SJIS
التعرف على أحرف SJIS.
C-EUCJP
التعرف على أحرف EUCJP.
If لانج لم يتم تعريفه ، أو إذا كان له قيمة أخرى ، فسيستخدم المترجم "mblen"
و "mbtowc" كما هو محدد بواسطة الإعدادات المحلية الافتراضية للتعرف على multibyte وترجمتها
حرفا.
تؤثر بعض متغيرات البيئة الإضافية على سلوك المعالج.
CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH
قيمة كل متغير هي قائمة من الدلائل مفصولة بحرف خاص ، إلى حد كبير
مثل PATH، حيث يتم البحث عن ملفات الرأس. الشخصية الخاصة ،
يعتمد "PATH_SEPARATOR" على الهدف ويتم تحديده في وقت إنشاء دول مجلس التعاون الخليجي. لمايكروسوفت
تعتبر الأهداف المستندة إلى Windows فاصلة منقوطة ، وبالنسبة لجميع الأهداف الأخرى تقريبًا ، فهي عبارة عن ملف
القولون.
CPATH يحدد قائمة الدلائل التي سيتم البحث عنها كما لو تم تحديدها مع -I، لكن
بعد أي مسارات معطاة -I خيارات في سطر الأوامر. هذا متغير البيئة
يتم استخدامه بغض النظر عن اللغة التي يتم معالجتها مسبقًا.
تنطبق متغيرات البيئة المتبقية فقط عند المعالجة المسبقة للمتغيرات الخاصة
اللغة المشار إليها. يحدد كل قائمة من الدلائل التي سيتم البحث عنها كما لو
المحدد بـ -نظام، ولكن بعد أي مسارات معطاة -نظام خيارات على
سطر الأوامر.
في كل هذه المتغيرات ، يوجه العنصر الفارغ المترجم للبحث عن تياره الحالي
عمل اخراجي. يمكن أن تظهر العناصر الفارغة في بداية المسار أو نهايته. ل
على سبيل المثال ، إذا كانت قيمة CPATH هو ": / special / include" ، له نفس تأثير
من أنا. -أنا / خاص / تشمل.
DEPENDENCIES_OUTPUT
إذا تم تعيين هذا المتغير ، فإن قيمته تحدد كيفية إخراج التبعيات لـ Make Based
على ملفات الرأس غير الخاصة بالنظام التي تتم معالجتها بواسطة المترجم. ملفات رأس النظام هي
تجاهله في إخراج التبعية.
قيمة DEPENDENCIES_OUTPUT يمكن أن يكون مجرد اسم ملف ، وفي هذه الحالة يكون إنشاء القواعد
مكتوبة على هذا الملف ، تخمين اسم الهدف من اسم الملف المصدر. أو ال
يمكن أن يكون الشكل ملف الهدف، وفي هذه الحالة تتم كتابة القواعد في ملف ملف
استخدام الهدف كاسم الهدف.
بمعنى آخر ، متغير البيئة هذا يعادل دمج الخيارات -MM
-مف، مع خيار -MT التبديل أيضا.
SUNPRO_DEPENDENCIES
هذا المتغير هو نفسه DEPENDENCIES_OUTPUT (انظر أعلاه) ، باستثناء ذلك النظام
لا يتم تجاهل ملفات الرأس ، لذلك يعني ذلك ضمناً -M بدلا من -MM. ومع ذلك، فإن
تم حذف الاعتماد على ملف الإدخال الرئيسي.
استخدم g ++ عبر الإنترنت باستخدام خدمات onworks.net