عربيالفرنسيةالإسبانية

Ad


OnWorks فافيكون

g ++ - 4.7 - عبر الإنترنت في السحابة

قم بتشغيل g ++ - 4.7 في مزود استضافة OnWorks المجاني عبر Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

هذا هو الأمر g ++ - 4.7 الذي يمكن تشغيله في مزود الاستضافة المجانية 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 سيكون -فنو-فو. يوثق هذا الدليل واحدًا فقط من
هذين الشكلين ، أيهما ليس هو الافتراضي.

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 -تقليدي -التقليدية- 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 - عمق القالب =n
-fno-Threadafe-statics -الفتيل- cxa-atexit - ضعيف -نوستدينك ++ -fno- الافتراضي- مضمنة
-رؤية-مضمنة-مخفية -الرؤية- ms- التوافق -وابي -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 فصول- freeplace-objc -fzero-link
-جن- decls - تعيين - اعتراض -لا بروتوكول -محدد -Wstrict-selector-match
-Wundeclared- محدد

اللغة مستقل مزيد من الخيارات
-طول الرسالة =n -تشخيص-موقع-عرض =[مرة|كل سطر]
-fno-التشخيص-تظهر-الخيار

تحذير مزيد من الخيارات
-فس الجملة فقط -fmax-errors =n -متحذلق - أخطاء متداخلة -w اكسترا الجدار شاحن
-العنوان -إجمالي-العائد - حدود المحارب -لا-سمات
إعادة تعريف -Wno- المدمج- الماكرو -Wc ++ - متوافق -Wc ++ 11-متوافق -محاذاة البث -Wcast-Qual
-وشار- المشتركين -Wclobbed - تعليق -Wconversion -التغطية-عدم تطابق -Wno- CPP
-Wno- مهملة - إقرارات - مهملة -Wdisabled- التحسين -لا-div-by-صفر
- ترقية مزدوجة -جسم فارغ -وينوم-قارن -لا-نهاية-تسميات -خطأ -خطأ = *
- أخطاء فادحة -تعويم-يساوي -Wformat - التنسيق = 2 -لا-شكل-يحتوي-نول
-لا تنسيق- إضافي- أرجس - صيغة غير حرفية -Wformat- الأمن -Wformat-y2k
-Wframe أكبر من =ليون -لا خالية- nonheap- كائن -القفز-يخطئ-الحرف الأول
- التصفيات المؤهلة - ضبابي - إعلان ضعيف عن الوظيفة -Wimplicit- كثافة العمليات
-نفس الذات -وينلاين - ربما - غير مهيأ -Wno-int-to-pointer-cast
-Wno- غير صالح- offsetof -Winvalid-pch - أكبر من =ليون - تحسينات حلقة غير آمنة
-Wlogical- المرجع -طويلة الأمد -ماين - ربما - غير مهيأ -فاقد-الأقواس
-ضياع-الحقل-التهيئة السمة-تنسيق-مفقود -مفقود-يشمل-dirs
-wno-mudflap -ونو- multichar -غير مجهولة -لا تجاوز -الطول-الاوتار -معبأة
-Wpacked-bitfield- متوافق - مبطن أقواس -Wpanticantic-ms-format
-Wno- المتحذلق- ms- شكل -Wpointer- أريث -لا مؤشر إلى int-cast - زائدة - decls
- نوع الإرجاع نقطة العواقب -ظلال -Wsign- قارن -Wsign- التحويل
- حامي Wstack -Wstack- استخدام =ليون -Wstrict- التعرج -Wstrict-aliasing = n
-Wstrict- تجاوز -Wstrict- تجاوز =n -Wsuggest-سمة =[نقي|CONST|لا رجوع]
-سويتش - مفتاح التبديل الافتراضي -سويتش-تعداد -Wsync- ناند -Wsystem- رؤوس -وترامبولين
-كتابات حدود نوع - وندف غير مهيأ -براغمات غير معروفة -لا-براغماس
- الثوابت غير الثابتة -مذهل وظيفة غير مألوفة -تسمية غير مألوفة
-غير المستخدمة-المحلية-typedefs -غير مألوف- المعلمة -لا-نتائج-غير مستخدمة -قيمة غير مألوفة
- متغير غير مألوف -غير مستغلة-لكن-ضبط-المعلمة - غير مألوف - ولكن - مجموعة - متغير
-Wvariadic- وحدات الماكرو -Wvector-عملية-الأداء -فلا -تقلب- تسجيل- فار
-الكتابة-السلاسل -Wzero-as-null-pointer-ثابت

C و الهدف- C فقط تحذير مزيد من الخيارات
-باد-وظيفة-يلقي - الإقرارات الناقصة -Wmissing- نوع المعلمة
-النماذج الأولية المفقودة -الخارج الغربية - إعلان على الطراز القديم - تعريف الطراز القديم
-نماذج Wstrict -تقليدي - تحويل تقليدي
- إعلان بعد بيان -Wpointer- تسجيل

التصحيح مزيد من الخيارات
-dحروف -مكبات آلة التفريغ - تفريغ -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- شجرة- vcg -fdump-الاسم المستعار للشجرة
-fdump-الشجرة الفصل -fdump- شجرة- ssa[-n] -fdump-tree-pre[-n] -fdump- شجرة- ccp[-n]
-fdump-شجرة-dce[-n] - تفريغ - شجرة - مثقوبة[-الخام] -fdump-شجرة-mudflap[-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- شجرة- vrp[-n] -ftree-vectorizer- مطول =n -fdump-tree-storeccp[-n]
-fdump-final-insns =ملف -fcompare-debug[=الأراضي الفلسطينية المحتلة] -fcompare-debug- Second
-تقزم-قزم 2-دوبس - إزالة أنواع التصحيح غير المستخدمة
-تصحيح-غير مستخدمة-رموز تصحيح -نسبه-فئة-التصحيح-دائما -يمكن-نوع-pass
-يمكن-نوع-pass =قائمة النطاق - قسم أنواع الشوائب تقرير fmem -fpre-IPA-MEM-تقرير
-fpost-ipa-mem-report -fprofile- أقواس -بذور عشوائية =سلسلة -fsched- مطول =n
-الجدولة- مطوّل -الجدولة- التفريغ- CFG -الجدولة- الانابيب- مطوّل -fstack-الاستخدام
-تغطية -ftest -تقرير الوقت -fvar- تتبع -fvar- تتبع- التخصيصات
-fvar- تتبع- تعيينات- تبديل -g -gمستوى -gtoggle -كوف -قزم-الإصدار -ggdb
-جريكورد- مفاتيح دول مجلس التعاون الخليجي -Gno- سجل- مفاتيح دول مجلس التعاون الخليجي -جستابس -غستابس + -القزم الصارم
- صارم - قزم -gvms -gxcoff -gxcoff + سلاسل -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)
- افترض -fdse -مضمنة -فيبا-سرا - تحسينات غير مكلفة
-فتات-ليتو الأشياء -فاست-الرياضيات - غير محدد - الرياضيات فقط -متجر طائر
- الدقة الزائدة =نمط - تكاثر -فب-عقد =نمط - أقسام الوظائف
-fgcse -fgcse- بعد إعادة التحميل -fgcse- لاس -fgcse-lm -fgraphite- الهوية -fgcse- sm
-fif- التحويل -fif- التحويل 2 - مضمنة غير مباشرة وظائف الخطوط الدقيقة
- وظائف الخط - تسمى مرة واحدة -finline-Limit =n وظائف صغيرة الحجم -فيبا- CP
-فيبا- cp- استنساخ -فيبا-ماتريكس-ريورج -فيبا- pta -فيبا الشخصي -فيبا-نقي-كونست
-فيبا المرجع خوارزمية فيرا =خوارزمية منطقة فيرا =منطقة - ضغط حلقة فيرا
-fno- آيرا- حصة- حفظ- فتحات فتحات انسكاب الفتحات -فيرا- مطوّل =n -خمسة
وظائف مضمنة الصيانة -حفظ-ثابت-ثابته - كتلة طيارة -فلوب-تتسطح
- التبادل الطائر -قريب-شريط-الألغام -قلب-موازاة الكل -فلتو
- مستوى الضغط - التقسيم - فلو =ALG -التقرير - جميع الثوابت
الثوابت -fmodulo- جدولة -fmodulo-Sched-allow-regmoves -ثوابت حلقة -fmove
com.fmudflap -fmudflapir -fmudflapth -fno- فرع- عد- ريج -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- القيم
الرياضيات المتبادلة -حر -الحفظ -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- insns
-fschedule-insns2 -fsection- المراسي - جدولة انتقائية - جدولة انتقائية 2
-الجدولة- الأنابيب -الجدولة- الأنابيب- الخارجية- الحلقات -لف شرينك
-إشارة- nans - ثابت واحد - الدقة -fsplit-ivs-in-unroller
- أنواع الانقسام العريض -حامي-فسك -حامي-فستيك-الكل -تعرج صارم
- تجاوز الحد -الخيط القفزات -ftracer -ftree-بت-ccp -ftree- بنيت- نداء- DCE
-فتري- ccp -فتري- الفصل -ftree-coalesce-inline-vars -ftree-coalesce-vars -ftree- نسخة- الدعامة
-ftree- نسخة -فتري- dce -فتري-المسيطر-الخيارات -فتري- dse -ftree- forwprop
-ftree- فري -ftree- حلقة- إذا- تحويل -ftree- حلقة- إذا- تحويل- مخازن -ftree- حلقة- الدردشة
-فتري-بيبروب -توزيع-حلقة-شجرة -توزيع-حلقة-توزيع-أنماط
-فتري-حلقة- ايفكنون -فتري-حلقة-خطية -ftree- حلقة- الأمثل - الشجرة - موازاة الحلقات =n
-ftree- قبل -ftree- جزئية- قبل -فتري- pta -ftree-ressoc -فتري-بالوعة -فتري-سرا
-تبديل الشجرة التحويل -ftree- ذيل- دمج -فتري-تير -ftree- vect- حلقة الإصدار
-ftree-vectorize -ftree-vrp -الوحدة في وقت واحد -funroll- جميع الحلقات حلقات -funroll
-تحسينات غير آمنة- حلقة -ممتعة-الرياضيات-التحسينات حلقات-funswitch
متغير التوسع في unroller -تأثير- نموذج التكلفة -fvpt -ويب -كل-البرنامج -fwpa
- الصمامات- ld =وصلات -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 خيار

المجمع خيار
-وا ،خيار -مجمع اكس خيار

الروابط مزيد من الخيارات
اسم ملف الكائن -lمكتبة -نوستارتفيليس -Nodefaultlibs -نوستدليب -فطيرة -ديناميكي -s
-ثابتة -static-libgcc -static-libstdc ++ -مشاركة -libgcc المشتركة -رمزي -T سيناريو
-Wl ،خيار -إكسلينكر خيار -u رمز

دليل مزيد من الخيارات
-Bبادئة -Iدير -بلوجيندير =دير -انا اقتبسدير -Lدير -النوع =ملف -أنا- - sysroot =دير

تشمل تابع مزيد من الخيارات
آرتش64 مزيد من الخيارات -mbig-endian -ملل-endian عام-regs-only -mcmodel = صغير
-mcmodel = صغير -mcmodel = كبير -mstrict- محاذاة -موميت-أوراق-إطار-مؤشر
-رقم-حذف-أوراق-إطار-مؤشر -mtls- لهجة = تنازلي -mtls- اللهجة = التقليدية - مسيرة =الاسم
-mcpu =الاسم -mtune =الاسم

ادابتيفا عيد الغطاس مزيد من الخيارات -نصف- ريج- ملف -مبرفر-قصير-insn-regs - تكلفة الامتياز =NUM
-Mcmove -منوبس =NUM -msoft- cmpsf -msplit- لوهي -موقع- المؤتمر الوطني العراقي -تعديل-الشباك
-mstack-offset =NUM -طائرة-أقرب - مكالمات طويلة - مكالمات قصيرة - صغير 16 -mfp- الوضع =طريقة
-مفيكت- مزدوج ماكس- vect- محاذاة =NUM -mplit-vecmove-early -m1reg-ريج

ARM مزيد من الخيارات - خرائط - الإطار -منو- apcs- الإطار -مابي =الاسم -mapcs- مكدس الاختيار
-mno-apcs- كومة الاختيار - خرائط - تعويم -منو- apcs- تعويم - خرائط - إعادة الدخول
-منو- apcs-reentrant -مسيد-برولوج -منو-جدولة-برولوج -ملل-endian -mbig-endian
-كلمات-ليتل-إندان -mfloat-abi =الاسم -mfpe -نسق mfp16 =الاسم - الإبهام - البيني
-mno-الإبهام البيني -mcpu =الاسم - مسيرة =الاسم -mfpu =الاسم -حجم الهيكل =n
مابورت أون نورترن - مكالمات طويلة - مكالمات طويلة -مفردة الموافقة المسبقة عن علم- قاعدة
-رقم-واحد-قاعدة الموافقة المسبقة عن علم تسجيل -mpic =ريج -منوب-متعة- dllimport -مراخ-إصلاح-إدخالات غير صالحة
-منو-سيروس-فيكس-إينس إنز -موقع-وظيفة-اسم الإبهام -الذرة -mtpcs- الإطار
-mtpcs- ورقة الإطار -mcaller-التشغيل الفائق - العمل البيني الفائق -mtp =الاسم
-mtls- اللهجة =لهجة - نقل الكلمات -مفيكس-القشرة- m3-ldrd -موافق-الوصول
النيون مقابل 64 بت

AVR مزيد من الخيارات -mmcu =MCU -تراكم-أرجس - تكلفة الامتياز =كلف - مقدمات المكالمات النعناع 8
-منو المقاطعات -استراحة - مكالمات قصيرة -مستريك- X كومة صغيرة

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- ريجس -مسنة- تعويم -ملفا- as -مغاس -مييي
-مي-مع-غير دقيق -mieee- المطابقة -mfp-trap-mode =طريقة -وضع التقريب mfp =طريقة
الدقة - mtrap =طريقة - بناء الثوابت -mcpu =نوع وحدة المعالجة المركزية -mtune =نوع وحدة المعالجة المركزية -mbwx -ماكس
-إصلاح -mcix - طفو - vax -طوف- ieee -صريحة-ريوكس بيانات صغيرة - بيانات كبيرة
نص صغير -تكبير النص -الذاكرة-الكمون =الوقت

ديسمبر ألفا / VMS مزيد من الخيارات رموز العودة mvms -mdebug-main =بادئة -مملوك 64

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 مزيد من الخيارات -استراحة -م.ه -الآنسة مين النعناع 32 -ملاجن -300

HPPA مزيد من الخيارات - مسيرة =نوع العمارة -مفتاح كبير -تعطيل- fpregs
-تعطيل-الفهرسة - مكالمات سريعة - غير مباشرة -مغاس -مجنو- لد -mhp-ld
- المدى الثابت =نطاق التسجيل - القفز في التأخير -mlinker-opt - مكالمات طويلة
-متجر تحميل طويل -منو-كبير-التبديل -رقم-تعطيل- fpregs -رقم تعطيل الفهرسة
- مكالمات - سريعة - غير مباشرة -منو-غاز -لا القفز في تأخير -متجر تحميل طويل
وقت التشغيل -من-لينة-تعويم -منو-الفضاء-ريجس -مسنة- تعويم -مبا-ريسك-1-0
-مبا-ريسك-1-1 -مبا-ريسك-2-0 وقت التشغيل -جدولة =نوع وحدة المعالجة المركزية -mspace- ريجس
-مسيو -موسيو -مونكس =يونكس- الأمراض المنقولة جنسيا -نوليبد -ثابتة -الخيوط

i386 و x86-64 مزيد من الخيارات -mtune =نوع وحدة المعالجة المركزية - مسيرة =نوع وحدة المعالجة المركزية -mfpmath =وحدة -الماس =لهجة
-منو-يتوهم-رياضيات -387 -منو- fp- ret-in-387 -مسنة- تعويم -mno- على نطاق واسع- ضرب -مرتد
-مزاوجة مزدوجة -حدود المكدس المُفضَّلة =NUM حدود المكدس الوشيكة =NUM -mcld
-مك x16 -مصاحف -مموفبي -mrc32 - رثاء -mrecip =اختار -mvzerupper -مبرفر- avx128 -ممممكس
مس - msse2 - msse3 -مسة 3 - msse4.1 - msse4.2 - msse4 -مافكس -Mavx2 -مايس -mpclmul
-mfsgsbase -مرردند -mf16c -مفما - msse4a -m3dnow -mpopcnt -مبم -MBMI -mtbm -mfma4
-mxop -mlzcnt -mbmi2 -mlwp -ميثريدس -منو-محاذاة-الأوتار -minline-all-stringops
-minline- سترينجوبس-ديناميكي -استراتيجية -mstringop =ALG -فرج-أرجس
-تراكم-أرغس الصادرة -م 128 بت- طويل- مزدوج -م 96 بت- طويل- مزدوج -mregparm =NUM
-مسرقبارم -mveclibabi =نوع -mvect8-ret-in-mem -mpc32 -mpc64 -mpc80 -Mstackrealign
-موميت-أوراق-إطار-مؤشر -من-المنطقة الحمراء -رقم- TLS- المباشر- SEG- المراجع -mcmodel =نموذج رمز
-مابي =الاسم -وضع العنوان =طريقة م 32 م 64 -mx32 - عتبة البيانات الكبيرة =NUM -msse2avx
-بنتري -m8bit- idiv -mavx256- تحميل الانقسام غير المحاذاة -mavx256-Split-unal -igned-store

i386 و x86-64 Windows مزيد من الخيارات - وحدة التحكم -مسيجوين -منو-سيغوين -mdll
-منوب-متعة- dllimport - الخيط -مونيكود موين 32 -النوافذ -fno- مجموعة- مكدس قابل للتنفيذ

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 =ماكس إنس

IA-64 / VMS مزيد من الخيارات رموز العودة mvms -mdebug-main =بادئة -مملوك 64

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- تعويم الجذر التربيعي
-mxl- وضع-نموذج التطبيق

MIPS مزيد من الخيارات -ال -EB - مسيرة =قوس -mtune =قوس -الرسمات 1 -الرسمات 2 -الرسمات 3 -الرسمات 4
-الرسمات 32 -mips32r2 -الرسمات 64 -mips64r2 -الرسمات 16 -منو- mips16 -مفليب- mips16
-مينترلينك- mips16 -mno- الربط- mips16 -مابي =أبي -مبيكلز -منو- abicalls
-مشاركة -منو- مشترك -مبلت -منو- PLT -mxgot -منو- xgot -mgp32 -mgp64 -mfp32
-mfp64 -مشدد-تعويم -مسنة- تعويم - تعويم واحد - تعويم مزدوج -mdsp -منو- dsp
-mdspr2 -منو- dspr2 -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 - الإصلاح- 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 -استراحة -مليو -مستلب

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

RS / 6000 و باور مزيد من الخيارات -mcpu =نوع وحدة المعالجة المركزية -mtune =نوع وحدة المعالجة المركزية -mcmodel =نموذج رمز - القوة
-منو-السلطة -قوة 2 -منو-السلطة 2 -مباويرب -محطة -منو-بوويرب -مالتيفيك
-منو-التيفيك -مباويربك- 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- غير مباشر -من-حفظ-توك-غير مباشر

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- تتبع -مفوس-ماد -منو-تنصهر-ماد -حجم الإطارات - ديناميكي حذر
-حجم الكومة -مكدس-حارس

العلامة مزيد من الخيارات -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 =عدد -مبت- ثابت -تراكم-أرغس الصادرة
-الرموز غير الصالحة -msoft- الذرية - تكلفة الامتياز =NUM -mcbranchdi -مكمبكدي -مفوس-ماد
- ترجمة - سموف

سولاريس 2 مزيد من الخيارات -طبخ-النص -منو- نجس- النص - الصفحات -الخطأ

SPARC مزيد من الخيارات -mcpu =نوع وحدة المعالجة المركزية -mtune =نوع وحدة المعالجة المركزية -mcmodel =نموذج رمز نموذج الذاكرة =ذاكرة-
نموذج م 32 م 64 -map-regs -mno-app-regs -أسرع الهياكل - أسرع - الهياكل
-مسطحة -منو- شقة -مفبو -منو- fpu -مشدد-تعويم -مسنة- تعويم -محدد-رباعي-تعويم
-يمنة-رباعية-تعويم - التحيز المكدس -لا-كومة-التحيز -متلائم-الزوجي
زوجي غير محاذي -mv8plus -منو- v8plus -مفيس -منو-فيس -mvis2 -منو- vis2
-mvis3 -منو- vis3 -مفماف -منو فماف -mpopc -منو-بوبك - إصلاح- at697f

SPU مزيد من الخيارات -موارن-ريلوك -الخطأ-نقل -المأمون- dma -Munsafe- دما - تلميحات فرع
-msmall-ميم -كبير-ميم -مستدمين - المدى الثابت =نطاق التسجيل -ميا 32 -ميا 64
- العنوان - تحويل الفضاء -رقم-عنوان-فضاء-تحويل -حجم المخبأ =حجم ذاكرة التخزين المؤقت
-التيارات-التحديثات تحديثات -mno- الذرية

System V مزيد من الخيارات -QY -Qn -YP ،مسارات نعم ،دير

بلاط Gx مزيد من الخيارات -mcpu =وحدة المعالجة المركزية م 32 م 64

تيليبرو مزيد من الخيارات -mcpu =وحدة المعالجة المركزية م 32

V850 مزيد من الخيارات - مكالمات طويلة - مكالمات طويلة -ميب -منو- الجيش الشعبي وظيفة -mprolog
- وظيفة برولوج -مساحة -متدى =n -مسدا =n -مزدا =n -map-regs -mno-app-regs
-تعطيل- callt -رقم- تعطيل- callt -mv850e2v3 -mv850e2 -mv850e1 -mv850es -mv850e
-mv850 -مفتاح كبير

VAX مزيد من الخيارات -مغ -مجنو -مونيكس

VxWorks مزيد من الخيارات -Mrtp -غير ثابت - ثابت -ديناميكية -Xbind-كسول -Xbind- الآن

x86-64 مزيد من الخيارات راجع خيارات i386 و x86-64.

اكس ستورمي 16 مزيد من الخيارات -مسيم

إكستينسا مزيد من الخيارات -مكونست 16 -منو- const16 -مفوس-ماد -منو-تنصهر-ماد -قوة-لا-الموافقة المسبقة عن علم
- متسلسلة - متقلبة -رقم متسلسل- متقلب - نص - قسم - حرفية
-mno-نص-قسم-الحرف -mtarget- محاذاة -mno- الهدف- محاذاة - مكالمات
-منو- مكالمات طويلة

zSeries مزيد من الخيارات راجع خيارات S / 390 و zSeries.

رمز جيل مزيد من الخيارات
-حفظ المكالمة-ريج -fcall- المستخدمة-ريج -مثبت-ريج - الاستثناءات - عدم الاستثناءات
طاولات ممتعة -غير متزامن-الاسترخاء-الجداول -حجم منع التوجيه
- وظائف الصك -الصك-الدوال-استبعاد-وظيفة-قائمة =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- نموذج =نموذج -ftrapv
-فرابف - التحقق من القيود - الرؤية - bitfields شديدة التقلب

مزيد من الخيارات السيطرة ال نوع 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
سوف يكون جدب --args cc1 .

-فلوجين =الاسم.وبالتالي
قم بتحميل كود البرنامج المساعد في الملف الاسم. لذلك ، من المفترض أنه كائن مشترك ليتم dlopen'd به
المترجم. يتم استخدام الاسم الأساسي لملف الكائن المشترك لتحديد المكون الإضافي
لأغراض تحليل الحجة (انظر -fplugin- أرج-الاسم-مفتاح=قيمنا أدناه). كل
يجب أن يحدد المكون الإضافي وظائف رد الاتصال المحددة في Plugins API.

-fplugin- أرج-الاسم-مفتاح=قيمنا
تحديد حجة تسمى مفتاح بقيمة قيمنا للمكوِّن الإضافي المسمى الاسم.

-fdump-ada-spec[-معتدل البنيه]
بالنسبة لمصدر C و C ++ وتضمين الملفات ، قم بإنشاء مواصفات 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, .h و .i الملفات كملفات مصدر C ++ بدلاً من ملفات مصدر C إلا إذا -x is
مستخدم ، ويحدد تلقائيًا الارتباط بمكتبة C ++. هذا البرنامج هو أيضا
مفيد عند التحويل البرمجي المسبق لملف رأس 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 ينطفئ معينة
ميزات GCC التي لا تتوافق مع ISO C90 ، مثل "asm" و "typeof"
الكلمات الرئيسية ، ولكن ليس امتدادات GNU الأخرى التي ليس لها معنى في ISO C90 ، مثل
حذف الحد الأوسط من التعبير "؟:". من ناحية أخرى ، بتحديد GNU
لهجة المعيار ، يتم تمكين جميع الميزات التي يدعمها المترجم ، حتى عندما تكون هذه
تغير الميزات معنى المعيار الأساسي وبعض البرامج المتوافقة بشكل صارم
قد يتم رفضه. المعيار المعين يستخدم من قبل -متحذلق لتحديد أي
الميزات هي امتدادات جنو بالنظر إلى هذا الإصدار من المعيار. على سبيل المثال -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. لاحظ أن هذا المعيار لم يتم دعمه بالكامل بعد ؛ ارى
<http://gcc.gnu.org/gcc-4.7/c99status.html> لمزيد من المعلومات. الأسماء c9x
و iso9899: 199x مهملة.

c11
c1x
iso9899: 2011
ISO C11 ، مراجعة 2011 لمعيار ISO C. الدعم غير مكتمل و
تجريبي. الاسم c1x مهمل.

غنو 90
غنو 89
لهجة GNU الخاصة بـ ISO C90 (بما في ذلك بعض ميزات C99). هذا هو الإعداد الافتراضي لـ C
رمز.

غنو 99
gnu9x
لهجة جنو ISO C99. عندما يتم تنفيذ ISO C99 بالكامل في دول مجلس التعاون الخليجي ، فإن هذا سوف يحدث
تصبح الافتراضي. الاسم gnu9x مهمل.

غنو 11
gnu1x
لهجة جنو ISO C11. الدعم غير مكتمل وتجريبي. الاسم gnu1x
مهمل.

سي ++ 98
معيار ISO C ++ لعام 1998 بالإضافة إلى التعديلات. مثل -انسى لرمز C ++.

gnu ++ 98
لهجة جنو -std = c ++ 98. هذا هو الإعداد الافتراضي لرمز C ++.

سي ++ 11
معيار ISO C ++ لعام 2011 بالإضافة إلى التعديلات. دعم C ++ 11 لا يزال
التجريبية ، وقد تتغير بطرق غير متوافقة في الإصدارات المستقبلية.

gnu ++ 11
لهجة جنو -std = c ++ 11. لا يزال دعم C ++ 11 تجريبيًا ، وقد يتغير
بطرق غير متوافقة في الإصدارات المستقبلية.

-fgnu89- مضمنة
الخيار -fgnu89- مضمنة يطلب من مجلس التعاون الخليجي استخدام دلالات غنو التقليدية لكلمة "مضمنة"
يعمل عندما يكون في وضع C99.
يتم قبول هذا الخيار وتجاهله بواسطة إصدارات مجلس التعاون الخليجي 4.1.3 حتى ولكن لا يتم تضمينها
4.3 في إصدارات GCC 4.3 والإصدارات الأحدث ، يغير سلوك GCC في وضع C99. استخدام
هذا الخيار يكافئ تقريبًا إضافة سمة وظيفة "gnu_inline" للجميع
وظائف مضمنة.

الخيار -fno- gnu89- مضمنة يخبر مجلس التعاون الخليجي صراحةً باستخدام دلالات C99 لـ
"مضمنة" عندما تكون في وضع C99 أو gnu99 (أي أنها تحدد السلوك الافتراضي). هذه
تم دعم الخيار لأول مرة في GCC 4.3. هذا الخيار غير مدعوم في -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))

استضافت
تأكد من أن التجميع يتم في بيئة مستضافة. هذا يعني -بولينتين.
البيئة المستضافة هي البيئة التي تتوفر فيها المكتبة القياسية بأكملها ، وفي
التي "main" لها نوع إرجاع "int". الأمثلة هي كل شيء تقريبًا باستثناء ملف
نواة. هذا يعادل - قائمة بذاتها.

-تقرير
تأكد من أن التجميع يتم في بيئة قائمة بذاتها. هذا يعني
-fno- بنيت. البيئة القائمة بذاتها هي البيئة التي لا يجوز للمكتبة القياسية فيها
موجودة ، وقد لا يكون بدء تشغيل البرنامج بالضرورة في "main". المثال الأكثر وضوحا
هو نواة نظام التشغيل. هذا يعادل -fno- استضافت.

-fopenmp
تفعيل معالجة توجيهات OpenMP "#pragma omp" في C / C ++ و "! $ omp" في Fortran.
متى -fopenmp إذا تم تحديده ، يقوم المترجم بإنشاء رمز موازي وفقًا لـ
واجهة برنامج تطبيق OpenMP v3.0http://www.openmp.org/>. هذا الخيار
يدل -الخطأ، وبالتالي فهو مدعوم فقط على الأهداف التي تحظى بدعم
-الخطأ.

-فنو- ​​tm
عندما يكون الخيار -فنو- ​​tm سيُنشئ المترجم تعليمات برمجية لنظام التشغيل Linux
متغير من مستند مواصفات ABI لذاكرة المعاملات الحالية من Intel (مراجعة
1.1 ، 6 مايو 2009). هذه ميزة تجريبية قد تتغير واجهتها في
الإصدارات المستقبلية من دول مجلس التعاون الخليجي ، مع تغير المواصفات الرسمية. يرجى ملاحظة أن لا
يتم دعم جميع البنيات لهذه الميزة.

لمزيد من المعلومات حول دعم دول مجلس التعاون الخليجي لذاكرة المعاملات ،

لاحظ أن ميزة ذاكرة المعاملات غير مدعومة مع استثناءات عدم الاتصال
(- عدم الاستثناءات).

-fms- ملحقات
اقبل بعض التركيبات غير القياسية المستخدمة في ملفات رأس Microsoft.

في كود C ++ ، يسمح هذا لأسماء الأعضاء في الهياكل بأن تكون مشابهة للأنواع السابقة
إعلانات.

typedef int UOW ؛
بناء ABC {
UOW UOW
};

يتم قبول بعض حالات الحقول غير المسماة في الهياكل والنقابات فقط مع هذا
الخيار.

-fplan9- ملحقات
اقبل بعض التركيبات غير القياسية المستخدمة في كود الخطة 9.

وهذا يتيح -fms- ملحقات، يسمح بتمرير المؤشرات إلى الهياكل مع مجهول
الحقول للوظائف التي تتوقع مؤشرات لعناصر من نوع الحقل ، و
تصاريح تشير إلى الحقول المجهولة المعلنة باستخدام محرف. هذا فقط
مدعوم لـ C وليس C ++.

-الخط
دعم الرسوم البيانية ISO C. ال -انسى الخيار (و -الأمراض المنقولة جنسيا خيارات صارمة ISO C
المطابقة) يعني -الخط.

-لا- متكامل- CPP
يقوم بعملية تجميع في مرحلتين: المعالجة المسبقة والتجميع. هذا الخيار يسمح
قدم المستخدم "cc1" أو "cc1plus" أو "cc1obj" عبر -B اختيار. قدم المستخدم
يمكن بعد ذلك أن تضيف خطوة التجميع خطوة معالجة مسبقة إضافية بعد وضعها الطبيعي
المعالجة المسبقة ولكن قبل التجميع. الافتراضي هو استخدام cpp
(داخلي CPP)

ستتغير دلالات هذا الخيار إذا تم دمج "cc1" و "cc1plus" و "cc1obj".

-تقليدي
-التقليدية- 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. الإصدار 2 هو إصدار C ++ ABI الأول
ظهر في الإصدار G ++ 3.4. الإصدار 1 هو إصدار C ++ ABI الذي ظهر لأول مرة في
G ++ 3.2. سيكون الإصدار 0 دائمًا هو الإصدار الأكثر توافقًا مع C ++
مواصفات ABI. لذلك ، سيتغير ABI الذي تم الحصول عليه باستخدام الإصدار 0 ليصبح ABI
تم إصلاح الخلل.

الافتراضي هو الإصدار 2.

الإصدار 3 يصحح خطأ في تغيير عنوان ثابت كوسيطة قالب.

الإصدار 4 ، الذي ظهر لأول مرة في G ++ 4.5 ، يطبق تشويشًا قياسيًا للمتجه
أنواع.

الإصدار 5 ، الذي ظهر لأول مرة في G ++ 4.6 ، يصحح تشويه السمة
const / متقلبة في أنواع مؤشرات الوظائف ، ونوع الانحراف العادي ، واستخدام a
وظيفة المعلمة في إعلان معلمة أخرى.

الإصدار 6 ، الذي ظهر لأول مرة في G ++ 4.7 ، يصحح سلوك الترويج لـ C ++ 11
تعدادات النطاق وتعديل حزم وسائط النموذج ، const / static_cast ، بادئة ++
و - ، ودالة نطاق الفئة المستخدمة كوسيطة قالب.

انظر أيضا -وابي.

-fno- التحكم في الوصول
قم بإيقاف تشغيل جميع عمليات فحص الوصول. يعد هذا المفتاح مفيدًا بشكل أساسي للعمل على حل الأخطاء في ملفات
رمز التحكم في الوصول.

-fcheck- جديد
تحقق من أن المؤشر الذي تم إرجاعه بواسطة "عامل التشغيل الجديد" ليس فارغًا قبل محاولة ذلك
تعديل التخزين المخصص. عادة ما يكون هذا الفحص غير ضروري لأن لغة C ++
المعيار يحدد أن "عامل التشغيل الجديد" سيعيد 0 فقط إذا تم التصريح عنه يرمي(),
في هذه الحالة سيتحقق المترجم دائمًا من القيمة المعادة حتى بدون ذلك
اختيار. في جميع الحالات الأخرى ، عندما يكون لـ "عامل التشغيل جديد" استثناء غير فارغ
المواصفات ، تتم الإشارة إلى استنفاد الذاكرة عن طريق إلقاء "الأمراض المنقولة جنسياً :: bad_alloc". أنظر أيضا
جديد (لا رمي).

-الحفاظ-الفضاء
ضع المتغيرات العالمية غير المهيأة أو التي تمت تهيئتها في وقت التشغيل في المقطع المشترك ، مثل
C يفعل. هذا يوفر مساحة في الملف القابل للتنفيذ على حساب عدم تشخيص التكرارات
تعريفات. إذا جمعت مع هذا العلم وتعطل برنامجك في ظروف غامضة
بعد اكتمال "main ()" ، قد يكون لديك كائن يتم تدميره مرتين
لأنه تم دمج تعريفين.

لم يعد هذا الخيار مفيدًا لمعظم الأهداف ، حيث تمت إضافة هذا الدعم الآن
وضع المتغيرات في BSS دون جعلها مشتركة.

-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 ++ المشروح ، وإصدارات G ++ من قبل
4.1 يعمل دائمًا بهذه الطريقة. ومع ذلك ، في ISO C ++ وظيفة صديق ليست كذلك
لا يمكن العثور على المعلنة في نطاق التضمين إلا باستخدام بحث تابع للوسيطة.
يؤدي هذا الخيار إلى حقن الأصدقاء كما كانوا في الإصدارات السابقة.

هذا الخيار مخصص للتوافق ، ويمكن إزالته في إصدار مستقبلي من G ++.

-fno- elide- صانعي
يسمح معيار C ++ للتنفيذ بحذف إنشاء مؤقت فقط
تستخدم لتهيئة كائن آخر من نفس النوع. تحديد هذا الخيار تعطيل
هذا التحسين ، ويجبر G ++ على استدعاء مُنشئ النسخ في جميع الحالات.

-fno- فرض- إيه- المواصفات
لا تقم بإنشاء تعليمات برمجية للتحقق من عدم وجود انتهاك لمواصفات الاستثناءات في وقت التشغيل.
ينتهك هذا الخيار معيار C ++ ، ولكنه قد يكون مفيدًا لتقليل حجم الكود بتنسيق
يبني الإنتاج ، مثل التعريف NDEBUG. هذا لا يعطي المستخدم إذن كود
لطرح استثناءات مخالفة لمواصفات الاستثناء ؛ سوف المترجم
لا يزال التحسين بناءً على المواصفات ، لذا فإن طرح استثناء غير متوقع سيؤدي إلى
يؤدي إلى سلوك غير محدد.

-تقديم النطاق
-fno- للنطاق
If -تقديم النطاق يتم تحديد نطاق المتغيرات المعلنة في أ لبيان الحرف الأول
يقتصر على For الحلقة نفسها ، كما هو محدد بواسطة معيار C ++. لو
-fno- للنطاق يتم تحديد نطاق المتغيرات المعلنة في أ لبيان الحرف الأول
يمتد إلى نهاية النطاق المرفق ، كما كان الحال في الإصدارات القديمة من G ++ و
تطبيقات أخرى (تقليدية) لـ C ++.

الافتراضي إذا لم يتم إعطاء أي من العلمين لمتابعة المعيار ، ولكن للسماح وإعطاء
تحذير من التعليمات البرمجية ذات النمط القديم التي قد تكون غير صالحة أو مختلفة
السلوك.

كلمات مفتاحية -fno-gnu
لا تتعرف على "typeof" ككلمة رئيسية ، بحيث يمكن لهذا الرمز استخدام هذه الكلمة كملف
المعرف. يمكنك استخدام الكلمة الأساسية "__typeof__" بدلاً من ذلك. -انسى يدل
كلمات مفتاحية -fno-gnu.

- قوالب - ضمنية
لا ترسل أبدًا تعليمات برمجية للقوالب غير المضمنة التي يتم إنشاء مثيل لها ضمنيًا (على سبيل المثال بواسطة
استعمال)؛ ينبعث رمز فقط من أجل إنشاء مثيل صريح.

-fno- ضمني-المضمنة-القوالب
لا ترسل تعليمات برمجية للتشكيلات الضمنية للقوالب المضمنة أيضًا. الافتراضي
هو التعامل مع الأسطر بشكل مختلف بحيث يتم التجميع مع وبدون التحسين
بحاجة إلى نفس مجموعة عمليات إنشاء مثيل صريحة.

-fno- تنفيذ- المضمنة
لتوفير مساحة ، لا ترسل نسخًا خارج الخط للوظائف المضمنة التي يتحكم فيها
# براغما التنفيذ. سيؤدي ذلك إلى حدوث أخطاء في الرابط إذا لم تكن هذه الوظائف كذلك
مضمنة في كل مكان يتم استدعاؤها.

-fms- ملحقات
قم بتعطيل التحذيرات المتحذلق بشأن التركيبات المستخدمة في 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). إذا لم تفعل
استخدم تلك الأجزاء من اللغة ، يمكنك توفير بعض المساحة باستخدام هذه العلامة. ملحوظة
تستخدم معالجة الاستثناء هذه المعلومات نفسها ، ولكنها ستنشئها حسب الحاجة.
dynamic_cast لا يزال من الممكن استخدام عامل التشغيل للقوالب التي لا تتطلب وقت التشغيل
اكتب المعلومات ، أي يلقي إلى "باطل *" أو إلى فئات أساسية لا لبس فيها.

-fstats
انبعث إحصاءات حول معالجة الواجهة الأمامية في نهاية التجميع. هذه
المعلومات مفيدة بشكل عام فقط لفريق تطوير G ++.

- التعدادات الصارمة
السماح للمترجم بالتحسين باستخدام افتراض أن قيمة من النوع المعدود
يمكن أن تكون واحدة فقط من قيم التعداد (كما هو محدد في معيار C ++ ؛
بشكل أساسي ، قيمة يمكن تمثيلها بالحد الأدنى من وحدات البت المطلوبة
تمثل جميع العدادين). قد لا يكون هذا الافتراض صحيحًا إذا كان البرنامج يستخدم
cast لتحويل قيمة عدد صحيح عشوائي إلى النوع الذي تم تعداده.

- عمق القالب =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 لتعريف الأنواع التي تحمل الاسم نفسه بشكل مختلف.

- ضعيف
لا تستخدم دعم الرمز الضعيف ، حتى لو تم توفيره بواسطة الرابط. بشكل افتراضي ، G ++
سيستخدم رموزًا ضعيفة إذا كانت متوفرة. هذا الخيار موجود فقط للاختبار و
لا ينبغي استخدامها من قبل المستخدمين النهائيين ؛ سينتج عنه رمز رديء وليس له أي فوائد.
يمكن إزالة هذا الخيار في إصدار مستقبلي من G ++.

-نوستدينك ++
لا تبحث عن ملفات الرأس في الدلائل القياسية الخاصة بـ C ++ ، ولكن قم بذلك
لا يزال البحث في الدلائل القياسية الأخرى. (يُستخدم هذا الخيار عند إنشاء ملف
مكتبة C ++.)

بالإضافة إلى ذلك ، فإن خيارات إنشاء التحسين والتحذير والتشفير هذه لها معاني فقط
لبرامج C ++:

-fno- الافتراضي- مضمنة
لا تفترض مضمنة للوظائف المحددة داخل نطاق فئة.
لاحظ أن هذه الوظائف سيكون لها ارتباط مثل الوظائف المضمنة ؛ هم فقط لن يفعلوا
أن تكون مضمنة بشكل افتراضي.

-وابي (C و Objective-C و C ++ و Objective-C ++ فقط)
تحذير عندما يُنشئ G ++ رمزًا ربما لا يتوافق مع البائع المحايد
C ++ ABI. على الرغم من الجهود المبذولة للتحذير من جميع هذه الحالات ، إلا أن هناك
ربما بعض الحالات التي لم يتم التحذير منها ، على الرغم من أن G ++ يتم إنشاؤها
رمز غير متوافق. قد تكون هناك أيضًا حالات يتم فيها إصدار تحذيرات على الرغم من أن ملف
سيكون الرمز الذي تم إنشاؤه متوافقًا.

يجب عليك إعادة كتابة التعليمات البرمجية الخاصة بك لتجنب هذه التحذيرات إذا كنت قلقًا بشأن
حقيقة أن الكود الذي تم إنشاؤه بواسطة G ++ قد لا يكون متوافقًا مع الكود الذي تم إنشاؤه بواسطة
المترجمون الآخرون.

حالات عدم التوافق المعروفة في -fabi- النسخة = 2 (الافتراضي) تشمل:

قالب مع معلمة قالب غير نوع من نوع المرجع مشوه
بشكل غير صحيح:

خارجي int N ؛
نموذج هيكل S {} ؛
باطل ) {2}

تم إصلاح هذا في -fabi- النسخة = 3.

· أنواع ناقلات SIMD المعلنة باستخدام "__attribute ((vector_size))" مشوهة في
طريقة غير قياسية لا تسمح بالحمل الزائد على الوظائف التي تأخذ المتجهات
بأحجام مختلفة.

تم تغيير التشويه في -fabi- النسخة = 4.

حالات عدم التوافق المعروفة في -fabi- النسخة = 1 تتضمن:

معالجة غير صحيحة لحشو الذيل لحقول البت. قد يحاول G ++ حزم البيانات
في نفس البايت كفئة أساسية. على سبيل المثال:

الهيكل أ {الفراغ الظاهري f () ؛ كثافة العمليات f1: 1 ؛ } ؛
Struct B: public A {int f2: 1؛ } ؛

في هذه الحالة ، ستضع G ++ "B :: f2" في نفس البايت مثل "A :: f1" ؛ المترجمون الآخرون
سوف لن. يمكنك تجنب هذه المشكلة عن طريق ترك مساحة فارغة على الحرف "A" حتى يتناسب مع حجمه
هو مضاعف حجم البايت على منصتك ؛ سيؤدي ذلك إلى ظهور G ++ وغيرها
المجمعين لتخطيط "ب" بشكل مماثل.

· معالجة غير صحيحة لحشو الذيل للقواعد الافتراضية. لا يستخدم G ++ الذيل
الحشو عند وضع القواعد الافتراضية. على سبيل المثال:

الهيكل أ {الفراغ الظاهري f () ؛ شار c1 ؛ } ؛
هيكل B {B () ، شار c2 } ؛
هيكل C: عام أ ، ظاهري عام ب {} ؛

في هذه الحالة ، لن تضع G ++ "B" في حشوة الذيل لـ "A" ؛ آخر
سوف المترجمين. يمكنك تجنب هذه المشكلة عن طريق ترك مساحة فارغة بحرف "A" بحيث يكون ملف
الحجم مضاعف لمحاذاة (تجاهل الفئات الأساسية الافتراضية) ؛ ذلك سوف
تسبب G ++ والمجمعين الآخرين في تخطيط "C" بشكل مماثل.

معالجة غير صحيحة لحقول البت ذات العروض المعلنة أكبر من عرضها
الأنواع الأساسية ، عندما تظهر حقول البت في اتحاد. على سبيل المثال:

الاتحاد U {int i: 4096؛ } ؛

بافتراض أن "int" لا تحتوي على 4096 بت ، فإن G ++ ستجعل الاتحاد صغيرًا جدًا
بعدد البتات في "كثافة العمليات".

يمكن وضع فئات فارغة في تعويضات غير صحيحة. على سبيل المثال:

هيكل أ {}؛

هيكل ب {
أ أ ؛
الفراغ الظاهري f () ؛
};

هيكل C: عام ب ، عام أ {} ؛

سيضع G ++ الفئة الأساسية "A" لـ "C" في إزاحة غير صفرية ؛ يجب وضعها
عند تعويض الصفر. يعتقد G ++ خطأً أن عضو البيانات "A" في "B" هو
بالفعل عند تعويض الصفر.

أسماء وظائف النموذج التي تتضمن أنواعها "اسم النوع" أو قالب القالب
يمكن تشويه المعلمات بشكل غير صحيح.

نموذج
باطل f (اسم النوع Q :: X) {}

نموذج فئة Q>
باطل f (اسم النوع Q :: X) {}

قد يتم تشويه إنشاءات هذه القوالب بشكل غير صحيح.

كما يحذر من التغييرات ذات الصلة بـ psABI. تتضمن تغييرات psABI المعروفة في هذه المرحلة ما يلي:

بالنسبة لـ SYSV / x86-64 ، عند تمرير الاتحاد مع مزدوج طويل ، يتم تغييره لتمريره
الذاكرة كما هو محدد في psABI. على سبيل المثال:

الاتحاد يو {
طويل مزدوج لد ؛
أنا
};

سيتم دائمًا تمرير "union U" في الذاكرة.

-الطبيب- dtor- الخصوصية (C ++ و Objective-C ++ فقط)
تحذير عندما يبدو الفصل غير قابل للاستخدام لأن جميع المنشئين أو المدمرين في ذلك
فئة خاصة ، وليس لديها أصدقاء ولا وظائف عامة ثابتة للأعضاء.

-Wdelete-غير الظاهري-dtor (C ++ و Objective-C ++ فقط)
تحذير عندما حذف تُستخدم لتدمير مثيل فئة تحتوي على وظائف افتراضية
و مدمر غير افتراضي. من غير الآمن حذف مثيل لفئة مشتقة
من خلال مؤشر إلى فئة أساسية إذا كانت الفئة الأساسية لا تحتوي على فئة افتراضية
المدمر. تم تمكين هذا التحذير من قبل الجدار شاحن.

-مقلق (C ++ و Objective-C ++ فقط)
تحذير عند حدوث تحويل تضييق محظور بواسطة C ++ 11 داخل { }، على سبيل المثال

int i = {2.2} ؛ // خطأ: التضييق من ضعف إلى كثافة العمليات

يتم تضمين هذا العلم في الجدار شاحن و -Wc ++ 11-متوافق.

مع -std = c ++ 11 ، -لا تضيق يمنع التشخيص المطلوب وفقًا للمعيار.
لاحظ أن هذا لا يؤثر على معنى الكود المشكل جيدًا ؛ تضييق التحويلات
لا تزال تعتبر سيئة التشكيل في سياق SFINAE.

-لا استثناء (C ++ و Objective-C ++ فقط)
تحذير عندما يتم تقييم تعبير noexcept إلى false بسبب استدعاء دالة
الذي لا يحتوي على مواصفات استثناء غير رمي (على سبيل المثال يرمي() or لا عدا)
ولكن من المعروف من قبل المترجم أنه لا يطرح استثناءً أبدًا.

-غير-افتراضية- dtor (C ++ و Objective-C ++ فقط)
تحذير عندما يكون للفصل وظائف افتراضية ويمكن الوصول إليه غير مدمر غير افتراضي ، بتنسيق
في هذه الحالة سيكون من الممكن ولكن من غير الآمن حذف مثيل لفئة مشتقة
من خلال مؤشر إلى الفئة الأساسية. يتم تمكين هذا التحذير أيضًا إذا -Weffc ++ is
محدد.

-تسجيل (C ++ و Objective-C ++ فقط)
تحذير عندما لا يتطابق ترتيب المُهيئين للعضو الوارد في الكود مع الترتيب
التي يجب أن يتم إعدامهم فيها. على سبيل المثال:

هيكل أ {
أنا
الباحث ي
أ (): ي (0) ، أنا (1) {}
};

سيقوم المترجم بإعادة ترتيب مُهيئ الأعضاء لـ i و j لتتناسب مع
أمر إعلان للأعضاء ، مع إصدار تحذير بهذا المعنى. هذا التحذير
مكن من قبل الجدار شاحن.

ما يلي -W ... الخيارات لا تتأثر الجدار شاحن.

-Weffc ++ (C ++ و Objective-C ++ فقط)
تحذير من انتهاكات إرشادات الأسلوب التالية من Scott Meyers ' الطُرق الفعّالة
C ++ ، الثاني طبعة كتاب:

· البند 11: تحديد مُنشئ نسخة ومشغل مهمة للفئات ذات
الذاكرة المخصصة ديناميكيًا.

البند 12: تفضيل التهيئة للتعيين في المُنشئين.

البند 14: جعل المدمرات افتراضية في الفئات الأساسية.

· العنصر 15: لديك "عامل التشغيل =" إرجاع إشارة إلى * هذا.

البند 23: لا تحاول إرجاع مرجع عندما يجب عليك إرجاع كائن.

حذر أيضًا من انتهاكات إرشادات الأسلوب التالية من Scott Meyers ' المزيد
الطُرق الفعّالة C + + كتاب:

البند 6: يميّز بين أشكال الزيادة والنقصان البادئة واللاحقة
العاملين.

البند 7: لا تفرط في التحميل على "&&" ، "||" ، أو "،".

عند تحديد هذا الخيار ، يجب أن تدرك أن رؤوس المكتبة القياسية لا تخضع للجميع
من هذه المبادئ التوجيهية ؛ استعمال البقرى -v لتصفية تلك التحذيرات.

-قضاء-باطل-الحارس (C ++ و Objective-C ++ فقط)
تحذير أيضًا من استخدام "NULL" غير مسبوق كحارس. عند التجميع فقط مع
GCC هذا هو حارس صالح ، حيث يتم تعريف "NULL" إلى "__null". على الرغم من أنها لاغية
ثابت المؤشر ليس مؤشر فارغ ، فمن المضمون أن يكون بنفس حجم a
المؤشر. لكن هذا الاستخدام غير قابل للنقل عبر المجمعين المختلفين.

-Wno- غير- قالب- صديق (C ++ و Objective-C ++ فقط)
قم بتعطيل التحذيرات عندما يتم التصريح عن وظائف صديق غير مقولبة داخل قالب.
منذ ظهور دعم مواصفات القالب الصريح في G ++ ، إذا كان اسم ملف
الصديق هو معرف غير مؤهل (على سبيل المثال ، صديق فو (دولي)) ، مواصفات لغة C ++
يطلب من الصديق أن يعلن أو يحدد وظيفة عادية غير نموذجية. (الجزء
14.5.3). قبل تطبيق G ++ لمواصفات صريحة ، يمكن أن تكون المعرفات غير المؤهلة
تُفسر على أنها تخصص معين لوظيفة مقولبة. لأن هذا
لم يعد السلوك غير المطابق هو السلوك الافتراضي لـ G ++ ،
-غير-قالب-صديق يسمح للمترجم بالتحقق من الكود الموجود بحثًا عن مشكلة محتملة
البقع وهو قيد التشغيل بشكل افتراضي. يمكن إيقاف سلوك المترجم الجديد هذا باستخدام
-Wno- غير- قالب- صديق، والذي يحافظ على كود المترجم المطابق لكنه يعطل
تحذير مفيد.

- أسلوب القفر (C ++ و Objective-C ++ فقط)
تحذير إذا تم استخدام النمط القديم (النمط C) المصبوب إلى نوع غير باطل في برنامج C ++.
يلقي الطراز الجديد (dynamic_cast, البث الثابت, reinterpret_castو const_cast) هي
أقل عرضة للتأثيرات غير المقصودة وأسهل بكثير في البحث عنها.

-Woverloaded- الظاهري (C ++ و Objective-C ++ فقط)
تحذير عندما يخفي إعلان دالة وظائف افتراضية من فئة أساسية. ل
على سبيل المثال ، في:

هيكل أ {
الفراغ الظاهري f () ؛
};

هيكل ب: عام أ {
باطل f (int) ؛
};

نسخة الفئة "أ" من "f" مخفية في "ب" ، والرمز مثل:

ب * ب ؛
ب-> و () ؛

سوف تفشل في ترجمة.

-Wno-pmf- التحويلات (C ++ و Objective-C ++ فقط)
قم بتعطيل التشخيص لتحويل مؤشر منضم إلى دالة عضو إلى عادي
المؤشر.

-Wsign- الترويجي (C ++ و Objective-C ++ فقط)
تحذير عندما يختار دقة التحميل الزائد ترقية من نوع غير موقعة أو معدود إلى
نوع موقّع ، فوق تحويل إلى نوع غير موقع من نفس الحجم. سابق
ستحاول إصدارات G ++ الحفاظ على اللامبالاة ، لكن المعايير القياسية تتطلب امتداد
السلوك الحالي.

هيكل أ {
عامل int () ؛
A & عامل = (int) ؛
};

رئيسي ()
{
أ أ ، ب ؛
أ = ب ؛
}

في هذا المثال ، ستقوم G ++ بتوليف ملف افتراضي A& عامل = (مقدار ثابت أ&)؛، بينما cfront
سيستخدم المعرفة من قبل المستخدم عامل =.

مزيد من الخيارات السيطرة الهدف-C و الهدف- C ++ اللهجات
(ملاحظة: لا يصف هذا الدليل لغتي Objective-C و Objective-C ++
أنفسهم.

يصف هذا القسم خيارات سطر الأوامر ذات المعنى فقط لـ Objective-C
و Objective-C ++ ، ولكن يمكنك أيضًا استخدام معظم لغة GNU المستقلة
خيارات المترجم. على سبيل المثال ، يمكنك تجميع ملف "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
تنبعث تعليمات علامة خاصة ld1 لا لربط ثابت في الكائن الناتج
ملف والسماح دولد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 (" ... ")" بغض النظر عن خيارات سطر الأوامر.

-جن- 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 الذي يصف أكبر بنية تم تمريرها بالقيمة ، إن وجدت.

مزيد من الخيارات إلى مراقبة تشخيصي الرسائل التنسيق
تقليديا ، تم تنسيق رسائل التشخيص بغض النظر عن جهاز الإخراج
الجانب (على سبيل المثال عرضه ، ...). يمكن استخدام الخيارات الموضحة أدناه للتحكم في
خوارزمية تنسيق الرسائل التشخيصية ، على سبيل المثال عدد الأحرف في كل سطر ، وكم مرة
يجب الإبلاغ عن معلومات موقع المصدر. في الوقت الحالي ، يمكن فقط للواجهة الأمامية C ++
احترم هذه الخيارات. ومع ذلك فمن المتوقع ، في المستقبل القريب ، أن تكون الجبهة المتبقية
النهايات ستكون قادرة على هضمها بشكل صحيح.

-طول الرسالة =n
حاول تنسيق رسائل الخطأ بحيث تناسب سطور حوالي n الشخصيات. ال
الافتراضي هو 72 حرفًا لـ ز ++ و 0 لبقية الواجهات الأمامية التي يدعمها
مجلس التعاون الخليجي. لو n تساوي صفرًا ، فلن يتم التفاف الخط ؛ ستظهر كل رسالة خطأ
على سطر واحد.

-fdiagnostics-show-location = مرة واحدة
ذات مغزى فقط في وضع التفاف الخط. يوجه مراسل رسائل التشخيص إلى
تنبعث منها مرة معلومات موقع المصدر ؛ أي في حال كانت الرسالة طويلة جدًا بحيث لا تتناسب مع ذلك
على سطر مادي واحد ويجب تغليفه ، فلن يتم إرسال موقع المصدر
(كبادئة) مرارًا وتكرارًا في سطور المتابعة اللاحقة. هذا ال
السلوك الافتراضي.

-fdiagnostics-show-location = كل سطر
ذات مغزى فقط في وضع التفاف الخط. يوجه مراسل رسائل التشخيص إلى
تصدر معلومات موقع المصدر نفسها (كبادئة) للأسطر المادية الناتجة
من عملية فصل رسالة طويلة جدًا بحيث لا يمكن وضعها في سطر واحد.

-fno-التشخيص-تظهر-الخيار
بشكل افتراضي ، يتضمن كل تشخيص يصدر نصًا يشير إلى خيار سطر الأوامر
يتحكم بشكل مباشر في التشخيص (إذا كان هذا الخيار معروفًا للتشخيص
الات). تحديد -fno-التشخيص-تظهر-الخيار العلم يقمع ذلك
السلوك.

مزيد من الخيارات إلى أطلب 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 و
يتم دعم ميزات C ++ أيضًا. مع هذا الخيار ، يتم رفضهم.

-متحذلق لا يتسبب في رسائل تحذير لاستخدام الكلمات الرئيسية البديلة التي
تبدأ الأسماء وتنتهي بـ __. التحذيرات المتحذلق معطلة أيضا في التعبير
الذي يلي "__التمديد__". ومع ذلك ، يجب أن تستخدم ملفات رأس النظام فقط هذه
طرق الهروب؛ يجب على برامج التطبيق تجنبها.

يحاول بعض المستخدمين استخدام -متحذلق للتحقق من البرامج الخاصة بمطابقة ISO C الصارمة. أنهم
سرعان ما اكتشف أنه لا يفعل ما يريدونه تمامًا: فقد اكتشف بعض الممارسات غير التابعة لـ ISO ،
ولكن ليس كل شيء - فقط تلك التي تستخدم ISO C يتطلب للتشخيص ، والبعض الآخر ل
التشخيصات التي تمت إضافتها.

قد تكون ميزة الإبلاغ عن أي فشل في التوافق مع ISO C مفيدة في بعض الحالات ،
ولكنه سيتطلب عملاً إضافيًا كبيرًا وسيكون مختلفًا تمامًا عن
-متحذلق. ليس لدينا خطط لدعم مثل هذه الميزة في المستقبل القريب.

حيث المعيار المحدد ب -الأمراض المنقولة جنسيا يمثل لهجة جنو الموسعة للغة C ، مثل
غنو 90 or غنو 99، هناك مقابل قاعدة معيار، إصدار ISO C الذي
لهجة جنو الموسعة قائمة. تحذيرات من -متحذلق يتم إعطاؤهم مكان وجودهم
مطلوب من قبل المعيار الأساسي. (ليس من المنطقي إعطاء مثل هذه التحذيرات
فقط للخصائص التي ليست في لهجة جنو سي المحددة ، بما أن جنو بحكم التعريف
تشمل لهجات C جميع الميزات التي يدعمها المترجم مع الخيار المحدد ، و
لن يكون هناك ما يحذر منه.)

- أخطاء متداخلة
اعجاب -متحذلق، فيما عدا أن الأخطاء تنتج بدلاً من التحذيرات.

الجدار شاحن
يتيح ذلك كافة التحذيرات حول الإنشاءات التي يعتبرها بعض المستخدمين
مشكوك فيه ، ويسهل تجنبه (أو تعديله لمنع التحذير) ، حتى في
بالتزامن مع وحدات الماكرو. يتيح هذا أيضًا بعض التحذيرات الخاصة باللغة الموضحة
in C + + لهجة مزيد من الخيارات و الهدف-C و الهدف- C ++ لهجة مزيد من الخيارات.

الجدار شاحن يقوم بتشغيل أعلام التحذير التالية:

-العنوان - حدود المحارب (فقط مع -O2) -Wc ++ 11-متوافق -وشار- المشتركين
-وينوم-قارن (في C / Objc ؛ يتم تشغيل هذا افتراضيًا في C ++) -Wimplicit- كثافة العمليات (ج و
الهدف- C فقط) - إعلان ضعيف عن الوظيفة (C و Objective-C فقط) - تعليق
-Wformat -ماين (فقط لـ C / ObjC وما لم يكن -تقرير) - ربما - غير مهيأ
-فاقد-الأقواس -غير مجهولة أقواس -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
تحقق من المكالمات إلى "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).

منذ -Wformat يتحقق أيضًا من وسائط التنسيق الفارغة للعديد من الوظائف ، -Wformat
يعني أيضا -غير مجهولة.

-Wformat تم تضمينه في الجدار شاحن. لمزيد من التحكم في بعض جوانب فحص التنسيق ،
الخيارات -Wformat-y2k, -لا تنسيق- إضافي- أرجس, -لا تنسيق-صفر-الطول,
- صيغة غير حرفية, -Wformat- الأمنو - التنسيق = 2 متوفرة ، لكنها ليست كذلك
المدرجة في الجدار شاحن.

ملاحظة: في Ubuntu 8.10 والإصدارات الأحدث ، يتم تمكين هذا الخيار افتراضيًا لـ C و C ++ و
ObjC، ObjC ++. للتعطيل ، استخدم - التنسيق = 0.

-Wformat-y2k
If -Wformat ، حذر أيضًا من تنسيقات "strftime" التي قد تنتج فقط ملف
عام من رقمين.

-لا-شكل-يحتوي-نول
If -Wformat محددًا ، لا تحذر من سلاسل التنسيق التي تحتوي على وحدات بايت NUL.

-لا تنسيق- إضافي- أرجس
If -Wformat محددًا ، فلا تحذر من الحجج الزائدة إلى "printf" أو "scanf"
وظيفة التنسيق. يحدد المعيار C أنه يتم تجاهل مثل هذه الحجج.

حيث تكمن الوسائط غير المستخدمة بين الوسائط المستخدمة المحددة بـ $
مواصفات رقم المعامل ، وعادة ما يتم إعطاء التحذيرات ، منذ
التنفيذ لا يمكنه معرفة نوع تمريره إلى "va_arg" لتخطي غير المستخدم
الحجج. ومع ذلك ، في حالة تنسيقات "scanf" ، سيؤدي هذا الخيار إلى إلغاء تنسيق
تحذير إذا كانت الوسيطات غير المستخدمة كلها مؤشرات ، منذ مواصفات يونكس الفردية
يقول أن مثل هذه الحجج غير المستخدمة مسموح بها.

-لا تنسيق-صفر-الطول
If -Wformat محددًا ، لا تحذر من التنسيقات ذات الطول الصفري. المعيار C.
يحدد أن التنسيقات ذات الطول الصفري مسموح بها.

- صيغة غير حرفية
If -Wformat محددًا ، يحذر أيضًا إذا كانت سلسلة التنسيق ليست سلسلة حرفية و
لذلك لا يمكن التحقق منها ، ما لم تتخذ دالة التنسيق وسيطات التنسيق الخاصة بها كملف
"va_list".

-Wformat- الأمن
If -Wformat ، حذر أيضًا من استخدامات وظائف التنسيق التي تمثل
مشاكل أمنية محتملة. في الوقت الحالي ، يحذر هذا من المكالمات إلى "printf" و
وظائف "scanf" حيث لا تكون سلسلة التنسيق سلسلة حرفية وليس هناك
وسيطات التنسيق ، مثل "printf (foo) ؛". قد يكون هذا ثغرة أمنية إذا كان التنسيق
جاءت السلسلة من إدخال غير موثوق به وتحتوي على %n. (هذه حاليًا مجموعة فرعية لما
- صيغة غير حرفية يحذر ، ولكن في المستقبل قد تضاف تحذيرات
-Wformat- الأمن التي لم يتم تضمينها في - صيغة غير حرفية.)

ملاحظة: في Ubuntu 8.10 والإصدارات الأحدث ، يتم تمكين هذا الخيار افتراضيًا لـ C و C ++ و
ObjC، ObjC ++. للتعطيل ، استخدم -لا تنسيق- الأمن، أو قم بتعطيل كافة تحذيرات التنسيق
مع - التنسيق = 0. لجعل تحذيرات أمان التنسيق فادحة ، حدد
-الخطأ = تنسيق-الأمن.

- التنسيق = 2
تفعيل -Wformat عمليات التحقق من تنسيق زائد غير مدرجة في -Wformat. يعادل حاليا
-Wformat - صيغة غير حرفية -Wformat- الأمن -Wformat-y2k.

-غير مجهولة
تحذير من تمرير مؤشر فارغ للوسيطات التي تم وضع علامة عليها على أنها تتطلب قيمة غير فارغة
بواسطة سمة دالة "nonnull".

-غير مجهولة تم تضمينه في الجدار شاحن و -Wformat. يمكن تعطيله باستخدام -لا-نونول
الخيار.

-نفس الذات (C و C ++ و Objective-C و Objective-C ++ فقط)
تحذير بشأن المتغيرات غير المهيأة التي تمت تهيئتها مع نفسها. لاحظ هذا
يمكن استخدام الخيار فقط مع غير مهيأ الخيار.

على سبيل المثال ، سيحذر GCC من عدم تهيئة حرف "i" في المقتطف التالي فقط
متى -نفس الذات تم تحديده:

int و ()
{
int أنا = أنا ؛
العودة أنا ؛
}

-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 ج
يحظر أنواع الإرجاع "الباطلة" المؤهلة في تعريفات الوظائف ، لذلك مثل هذه الأنواع من الإرجاع
تلقي تحذيرًا دائمًا حتى بدون هذا الخيار.

يتم تمكين هذا التحذير أيضًا بواسطة اكسترا.

-ماين
تحذير إذا كان نوع رئيسي مريب. رئيسي يجب أن تكون دالة مع خارجي
linkage ، وإرجاع int ، وأخذ أي من الحجج الصفرية ، أو اثنتين أو ثلاث حجج من
الأنواع المناسبة. يتم تمكين هذا التحذير افتراضيًا في C ++ ويتم تمكينه بواسطة أي منهما
الجدار شاحن or -متحذلق.

-فاقد-الأقواس
تحذير إذا لم يتم وضع مُهيئ التجميع أو الاتحاد بشكل كامل بين قوسين. في التالي
على سبيل المثال ، المُهيئ لـ a لم يتم وضعه بين قوسين بالكامل ، ولكن هذا لـ b بالكامل
بين قوسين.

int a [2] [2] = {0، 1، 2، 3} ؛
int b [2] [2] = {{0، 1}، {2، 3}} ؛

تم تمكين هذا التحذير بواسطة الجدار شاحن.

-مفقود-يشمل-dirs (C و C ++ و Objective-C و Objective-C ++ فقط)
تحذير إذا كان دليل التضمين الذي يوفره المستخدم غير موجود.

أقواس
تحذير إذا تم حذف الأقواس في سياقات معينة ، مثل عندما يكون هناك امتداد
التخصيص في سياق حيث من المتوقع وجود قيمة حقيقة ، أو عندما تكون العوامل متداخلة
التي غالبًا ما يتم الخلط بين الناس حول أسبقيتها.

حذر أيضًا إذا كانت المقارنة مثل س <= ص <= ع يبدو؛ هذا يعادل (س <= ص ? 1 : 0)
<= z، وهو تفسير مختلف عن تفسير التدوين الرياضي العادي.

حذر أيضًا من الإنشاءات حيث قد يكون هناك التباس في عبارة "if"
فرع "آخر" ينتمي. فيما يلي مثال على مثل هذه الحالة:

{
اذا كان)
إذا (ب)
فو () ؛
آخر
شريط ()؛
}

في C / C ++ ، ينتمي كل فرع "آخر" إلى عبارة "if" الأعمق الممكنة ، والتي
في هذا المثال هو "إذا (ب)". غالبًا ما لا يكون هذا ما توقعه المبرمج ، مثل
يتضح في المثال أعلاه من خلال المسافة البادئة التي اختارها المبرمج. عندما يكون هناك
من احتمالية حدوث هذا الارتباك ، سيصدر GCC تحذيرًا عندما تكون هذه العلامة
محدد. لإزالة التحذير ، أضف أقواس معقوفة صريحة حول "إذا"
بيان لذلك لا توجد طريقة يمكن أن تنتمي "آخر" إلى الضميمة "إذا". ال
سيبدو الرمز الناتج كما يلي:

{
اذا كان)
{
إذا (ب)
فو () ؛
آخر
شريط ()؛
}
}

حذر أيضًا من الاستخدامات الخطيرة لـ؟: مع المعامل الأوسط المحذوف وامتداد 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 ++.

- نوع الإرجاع
تحذير عندما يتم تعريف دالة بنوع إرجاع يكون افتراضيًا على "int". أيضا
تحذير حول أي عبارة "إرجاع" بدون قيمة إرجاع في دالة من نوع إرجاعها
ليس "باطلاً" (السقوط من نهاية الوظيفة يعتبر الجسم عائداً
بدون قيمة) ، وحول تعليمة "إرجاع" مع تعبير في دالة
الذي يكون نوع الإرجاع "باطل".

بالنسبة لـ C ++ ، فإن الوظيفة التي لا تحتوي على نوع إرجاع تنتج دائمًا رسالة تشخيص ، حتى
متى - نوع العودة محدد. الاستثناءات الوحيدة رئيسي والوظائف
المحددة في رؤوس النظام.

تم تمكين هذا التحذير بواسطة الجدار شاحن.

-سويتش
تحذير عندما تحتوي عبارة "switch" على فهرس من النوع الذي تم تعداده ويفتقر إلى "case"
لواحد أو أكثر من الرموز المسماة لهذا التعداد. (وجود علامة "افتراضي"
تمنع التسمية هذا التحذير.) تسميات "الحالة" خارج نطاق التعداد أيضًا
إثارة تحذيرات عند استخدام هذا الخيار (حتى إذا كان هناك تسمية "افتراضية"). هذه
تم تمكين التحذير بواسطة الجدار شاحن.

- مفتاح التبديل الافتراضي
تحذير عندما لا تحتوي عبارة "switch" على حالة "افتراضية".

-سويتش-تعداد
تحذير عندما تحتوي عبارة "switch" على فهرس من النوع الذي تم تعداده ويفتقر إلى "case"
لواحد أو أكثر من الرموز المسماة لهذا التعداد. تسميات "الحالة" خارج
نطاق التعداد يثير أيضًا تحذيرات عند استخدام هذا الخيار. والفرق الوحيد
ما بين -سويتش وهذا الخيار هو أن هذا الخيار يعطي تحذيرًا بشأن حذف
رمز التعداد حتى إذا كان هناك تسمية "افتراضية".

-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 [(باطل) 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 = n، مع ن = 3.

المستوى 1: الأكثر عدوانية ، والأسرع ، والأقل دقة. ربما تكون مفيدة عندما تكون المستويات الأعلى
لا تحذر ولكن -fstrict-aliasing لا يزال يكسر الكود ، لأنه يحتوي على عدد قليل جدًا من الأخطاء
السلبيات. ومع ذلك ، فإنه يحتوي على العديد من الإيجابيات الخاطئة. يحذر من جميع تحويلات المؤشر
بين الأنواع غير المتوافقة التي قد تكون غير متوافقة ، حتى لو لم يتم الغاء الإشارة إليها. يمتد في المقدمة
النهاية فقط.

المستوى 2: عدواني ، سريع ، غير دقيق للغاية. قد لا يزال لديه العديد من الإيجابيات الخاطئة (لا
ما يصل إلى المستوى 1 مع ذلك) ، وعدد قليل من السلبيات الخاطئة (ولكن ربما أكثر من المستوى 1).
على عكس المستوى 1 ، فإنه يحذر فقط عند أخذ العنوان. يحذر من الأنواع غير المكتملة.
يعمل في الواجهة الأمامية فقط.

المستوى 3 (افتراضي لـ -Wstrict- التعرج): يجب أن يحتوي على عدد قليل جدًا من الإيجابيات الخاطئة وقليلًا
السلبيات الكاذبة. أبطأ قليلاً من المستويات 1 أو 2 عند تمكين التحسين.
يعتني بنمط التورية المشترك + الإسناد في الواجهة الأمامية:
"* (int *) & some_float". إذا تم تمكين التحسين ، فإنه يعمل أيضًا في النهاية الخلفية ، حيث
يتعامل مع حالات بيان متعددة باستخدام نقاط إلى المعلومات الحساسة للتدفق.
يحذر فقط عند إلغاء الإشارة إلى المؤشر المحول. لا تحذر من عدم اكتمال
أنواع.

-Wstrict- تجاوز
-Wstrict- تجاوز =n
يكون هذا الخيار نشطًا فقط عندما - تجاوز الحد نشط. يحذر من القضايا
حيث يقوم المترجم بالتحسين على أساس الافتراض بأن التدفق الموقعة لا يفعل ذلك
تحدث. لاحظ أنه لا يحذر من جميع الحالات التي قد يتجاوز فيها الرمز: إنه
يحذر فقط من الحالات التي يقوم فيها المترجم بتنفيذ بعض التحسين. وهكذا هذا
تحذير يعتمد على مستوى التحسين.

يعد التحسين الذي يفترض عدم حدوث تجاوز الموقع آمنًا تمامًا إذا
قيم المتغيرات المعنية هي أن الفائض لا يحدث أبدًا ، في الواقع ،
تحدث. لذلك يمكن أن يعطي هذا التحذير بسهولة إيجابية خاطئة: تحذير حول الكود
هذه ليست مشكلة في الواقع. للمساعدة في التركيز على القضايا الهامة ، عدة تحذيرات
يتم تحديد المستويات. لم يتم إصدار تحذيرات لاستخدام تجاوز موقعة غير محدد
عند تقدير عدد التكرارات التي ستتطلبها الحلقة ، ولا سيما متى
تحديد ما إذا كان سيتم تنفيذ حلقة على الإطلاق.

- تجاوز الحد = 1
حذر من الحالات المشكوك فيها والتي يسهل تجنبها. على سبيل المثال: "x +
1> x "؛ مع - تجاوز الحد، سيقوم المترجم بتبسيط هذا إلى 1. هذا المستوى
of -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 = نورتورن
تحذير بشأن الوظائف التي قد تكون مرشحة للسمات "نقية" أو "ثابتة" أو
"لا رجوع". المترجم يحذر فقط من الوظائف المرئية في التجميعات الأخرى
وحدات أو (في حالة "خالص" و "ثابت") إذا كان لا يمكن إثبات أن الوظيفة
يعود بشكل طبيعي. ترجع الدالة بشكل طبيعي إذا لم تحتوي على عدد لانهائي
حلقة ولا تعود بشكل غير طبيعي عن طريق الرمي أو استدعاء "abort ()" أو الاصطياد. هذه
يتطلب التحليل الخيار -فيبا-نقي-كونست، والذي يتم تمكينه افتراضيًا في -O و
أعلى. تعمل مستويات التحسين الأعلى على تحسين دقة التحليل.

- حدود المحارب
يكون هذا الخيار نشطًا فقط عندما -ftree-vrp نشط (افتراضي لـ -O2 و ما فوق). هو - هي
يحذر من رموز المصفوفات التي تكون دائمًا خارج الحدود. هذا التحذير
مكن من قبل الجدار شاحن.

-لا-div-by-صفر
لا تحذر من قسمة الأعداد الصحيحة في وقت الترجمة على صفر. قسمة الفاصلة العائمة على
لا يتم التحذير بشأن الصفر ، حيث يمكن أن يكون طريقة مشروعة للحصول على ما لا نهاية و
نانس.

-Wsystem- رؤوس
طباعة رسائل تحذير للإنشاءات الموجودة في ملفات رأس النظام. تحذيرات من
عادةً ما يتم منع رؤوس النظام ، على افتراض أنها لا تفعل ذلك عادةً
يشير إلى مشاكل حقيقية وسيؤدي فقط إلى زيادة صعوبة قراءة إخراج المترجم. استخدام
يطلب خيار سطر الأوامر هذا من GCC إرسال تحذيرات من رؤوس النظام كما لو كانت
حدثت في رمز المستخدم. ومع ذلك ، لاحظ أن استخدام الجدار شاحن بالتزامن مع هذا الخيار
سوف ليس تحذير من البرامج العملية غير المعروفة في رؤوس النظام --- لذلك ، -براغمات غير معروفة
يجب أيضًا استخدامها.

-وترامبولين
تحذير بشأن الترامبولين الذي تم إنشاؤه للمؤشرات للوظائف المتداخلة.

الترامبولين عبارة عن قطعة صغيرة من البيانات أو التعليمات البرمجية التي يتم إنشاؤها أثناء التشغيل
الوقت على المكدس عندما يتم أخذ عنوان وظيفة متداخلة ، و
تُستخدم لاستدعاء الوظيفة المتداخلة بشكل غير مباشر. بالنسبة لبعض الأهداف ، فإنه
يتكون من بيانات فقط وبالتالي لا يتطلب معالجة خاصة. لكن،
بالنسبة لمعظم الأهداف ، يتكون من رمز وبالتالي يتطلب المكدس
لتكون قابلة للتنفيذ حتى يعمل البرنامج بشكل صحيح.

-تعويم-يساوي
تحذير إذا تم استخدام قيم الفاصلة العائمة في مقارنات المساواة.

الفكرة من وراء ذلك هي أنه في بعض الأحيان يكون مناسبًا (للمبرمج)
اعتبر قيم الفاصلة العائمة تقريبية لأرقام حقيقية دقيقة بشكل لا نهائي.
إذا كنت تفعل هذا ، فأنت بحاجة إلى الحساب (عن طريق تحليل الكود ، أو في بعض
بطريقة أخرى) الحد الأقصى أو الحد الأقصى المحتمل للخطأ الذي يقدمه الحساب ، و
السماح بذلك عند إجراء المقارنات (وعند إنتاج المخرجات ، ولكن هذا هو
مشكلة مختلفة). على وجه الخصوص ، بدلاً من اختبار المساواة ، عليك التحقق
لمعرفة ما إذا كانت القيمتان لهما نطاقات متداخلة ؛ ويتم ذلك باستخدام
العوامل العلائقية ، لذلك من المحتمل أن تكون مقارنات المساواة خاطئة.

-تقليدي (C و Objective-C فقط)
تحذير من بعض التركيبات التي تتصرف بشكل مختلف في المعيار التقليدي و ISO C. أيضًا
تحذير بشأن تركيبات ISO C التي ليس لها مكافئ C تقليدي و / أو إشكالية
بنيات يجب تجنبها.

· البارامترات الكلية التي تظهر ضمن السلسلة الحرفية في الجسم الكلي. في
يحدث الاستبدال الكلي التقليدي للغة C ضمن القيم الحرفية للسلسلة ، ولكنه لا يحدث
في ISO C.

· في لغة C التقليدية ، لم تكن بعض توجيهات المعالج المسبق موجودة. تقليدي
ستعتبر المعالجات المسبقة أن السطر هو توجيه فقط إذا كان # ظهر في
العمود 1 على الخط. وبالتالي -تقليدي يحذر من التوجيهات التي
تتفهم لغة C التقليدية ولكنها ستتجاهلها لأن ملف # لا يظهر كـ
الحرف الأول على الخط. كما يقترح عليك إخفاء توجيهات مثل # براغما
لا تفهمه لغة C التقليدية عن طريق وضع مسافة بادئة لها. بعض التقليدية
لن تعترف تطبيقات #elif، لذلك يقترح تجنبه تمامًا.

· وظيفة شبيهة بالدالة التي تظهر بدون حجج.

· عامل التشغيل أحادي زائد.

· ال U عدد صحيح ثابت لاحقة ، أو F or L اللواحق الثابتة للفاصلة العائمة.
(يدعم C التقليدي تنسيق L لاحقة على ثوابت عدد صحيح.) لاحظ ، هذه
تظهر اللواحق في وحدات الماكرو المحددة في رؤوس النظام لمعظم الأنظمة الحديثة ،
على سبيل المثال ال _دقيقة/_الأعلى وحدات الماكرو في " ". قد يؤدي استخدام وحدات الماكرو هذه في رمز المستخدم
عادة ما تؤدي إلى تحذيرات كاذبة ، ولكن المعالج المسبق في دول مجلس التعاون الخليجي قد فعل ذلك
السياق الكافي لتجنب التحذير في هذه الحالات.

· تم الإعلان عن وظيفة خارجية في كتلة واحدة ثم استخدامها بعد نهاية
منع.

· عبارة "التبديل" لها معامل من النوع "طويل".

· إعلان وظيفة غير "ثابت" يتبع واحدًا "ثابتًا". هذا البناء ليس كذلك
مقبولة من قبل بعض مترجمي لغة سي التقليديين.

· نوع 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 ولم يكن مدعومًا من قبل إصدارات GCC قبل GCC 3.0.

- وندف
تحذير إذا تم تقييم معرف غير معرف في ملف #إذا التوجيه.

-لا-نهاية-تسميات
لا تحذر كلما #else أو #endif تليها نص.

-ظلال
تحذير عندما يلقي متغير محلي أو إعلان بالظلال على متغير آخر ،
المعلمة أو النوع أو عضو الفصل (في C ++) ، أو كلما كانت الوظيفة المضمنة
مظلل. لاحظ أنه في لغة C ++ ، لن يقوم المحول البرمجي بتحذير إذا ظل متغير محلي ملف
Struct / class / enum ، لكنها ستحذر إذا ظللت محرفًا صريحًا.

- أكبر من =ليون
تحذير كلما كان جسم أكبر من ليون يتم تعريف بايت.

-Wframe أكبر من =ليون
تحذير إذا كان حجم إطار الوظيفة أكبر من ليون بايت. تم الحساب
لتحديد حجم إطار المكدس تقريبي وليس متحفظًا. الفعلية
قد تكون المتطلبات أكبر إلى حد ما من ليون حتى لو لم تحصل على تحذير. في
بالإضافة إلى ذلك ، أي مساحة مخصصة عبر "تخصيص" أو مصفوفات متغيرة الطول أو ذات صلة
لا يتم تضمين التركيبات من قبل المترجم عند تحديد ما إذا كان سيصدر أم لا
تحذير.

-لا خالية- nonheap- كائن
لا تحذر عند محاولة تحرير كائن لم يتم تخصيصه في الكومة.

-Wstack- استخدام =ليون
تحذير إذا كان استخدام المكدس لوظيفة ما قد يكون أكبر من ليون بايت. الحساب
تم القيام به لتحديد استخدام المكدس بشكل متحفظ. أي مساحة مخصصة عبر "تخصيص" ،
يتم تضمين المصفوفات متغيرة الطول ، أو التركيبات ذات الصلة من قبل المترجم عندما
تحديد إصدار تحذير أم لا.

الرسالة تتماشى مع إخراج -fstack-الاستخدام.

· إذا كان استخدام المكدس ثابتًا تمامًا ولكنه يتجاوز المقدار المحدد ، فسيكون:

تحذير: استخدام المكدس 1120 بايت

· إذا كان استخدام المكدس ديناميكيًا (جزئيًا) ولكنه محدود ، فإنه:

تحذير: قد يكون استخدام المكدس 1648 بايت

· إذا كان استخدام المكدس ديناميكيًا (جزئيًا) وغير مقيد ، فإنه:

تحذير: قد يكون استخدام المكدس غير مقيد

- تحسينات حلقة غير آمنة
تحذير إذا كانت الحلقة لا يمكن تحسينها لأن المترجم لم يستطع تحمل أي شيء
حدود مؤشرات الحلقة. مع -تحسينات غير آمنة- حلقة تحذير إذا كان المترجم
جعل مثل هذه الافتراضات.

-Wno- المتحذلق- ms- شكل (أهداف MinGW فقط)
لإيقاف التحذيرات حول محددات عرض تنسيق "printf" / "scanf" غير ISO "I32" ،
يتم استخدام "I64" و "I" على أهداف Windows اعتمادًا على وقت تشغيل MS ، عند استخدامك
الخيارات -Wformat و -متحذلق بدون ملحقات جنو.

-Wpointer- أريث
تحذير بشأن أي شيء يعتمد على "حجم" نوع الوظيفة أو "الفراغ". جنو سي
يخصص لهذه الأنواع حجمًا 1 ، للملاءمة في العمليات الحسابية مع "باطل *"
المؤشرات والمؤشرات إلى الوظائف. في C ++ ، حذر أيضًا عند إجراء عملية حسابية
يتضمن "NULL". يتم تمكين هذا التحذير أيضًا بواسطة -متحذلق.

حدود نوع
تحذير إذا كانت المقارنة صحيحة دائمًا أو خاطئة دائمًا بسبب النطاق المحدود لـ
نوع البيانات ، لكن لا تحذر من التعبيرات الثابتة. على سبيل المثال ، تحذير إذا كان غير موقع
متغير مقابل صفر مع < or >=. يتم تمكين هذا التحذير أيضًا بواسطة
اكسترا.

-باد-وظيفة-يلقي (C و Objective-C فقط)
تحذير عندما يتم توجيه استدعاء دالة إلى نوع غير مطابق. على سبيل المثال ، حذر إذا
يتم تحويل "int malloc ()" إلى "أي شيء *".

-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. هذا التحذير
يشغل -مقلق ويتم تمكينه بواسطة الجدار شاحن.

-Wcast-Qual
تحذير كلما تم إلقاء المؤشر لإزالة مؤهل النوع من النوع الهدف.
على سبيل المثال ، حذر من إرسال "const char *" إلى "char *" عادي.

تحذير أيضًا عند عمل فريق عمل يقدم مؤهلًا للنوع بطريقة غير آمنة. ل
على سبيل المثال ، تحويل "char **" إلى "const char **" غير آمن ، كما في هذا المثال:

/ * p هي قيمة char **. * /
const char ** q = (const char **) p ؛
/ * لا بأس من تعيين سلسلة للقراءة فقط إلى حرف ثابت. * /
* q = "سلسلة" ؛
/ * يشير المؤشر الآن char ** إلى ذاكرة القراءة فقط. * /
** ع = 'ب' ؛

-محاذاة البث
تحذير عند إلقاء مؤشر بحيث تكون المحاذاة المطلوبة للهدف
زيادة. على سبيل المثال ، تحذير إذا تم إرسال "char *" إلى "int *" على الأجهزة حيث
يمكن الوصول إلى الأعداد الصحيحة فقط في حدود ثنائية أو أربعة بايت.

-الكتابة-السلاسل
عند ترجمة C ، أعطِ ثوابت السلسلة من النوع "const char [الطول]" بحيث يتم النسخ
سيتلقى عنوان واحد في مؤشر "char *" غير "const" تحذيرًا. هؤلاء
ستساعدك التحذيرات في العثور على رمز وقت التجميع الذي يمكنه محاولة الكتابة في سلسلة
ثابت ، ولكن فقط إذا كنت حريصًا جدًا على استخدام "const" في التصريحات
والنماذج. خلاف ذلك ، سيكون مجرد مصدر إزعاج. هذا هو السبب في أننا لم نصنع
الجدار شاحن اطلب هذه التحذيرات.

عند تجميع C ++ ، حذر من التحويل المهمل من سلسلة حرفية إلى "char
* ". يتم تمكين هذا التحذير افتراضيًا لبرامج C ++.

-Wclobbed
تحذير من المتغيرات التي قد تتغير بواسطة لونججم or فورك. هذا التحذير هو أيضا
مكن من قبل اكسترا.

-Wconversion
تحذير من التحويلات الضمنية التي قد تغير القيمة. وهذا يشمل التحويلات
بين حقيقي وعدد صحيح ، مثل "abs (x)" عندما تكون "x" هي "double" ؛ بين التحويلات
موقعة وغير موقعة ، مثل "واجهة مستخدم غير موقعة = -1" ؛ والتحويلات إلى أنواع أصغر ، مثل
"sqrtf (M_PI)". لا تحذر من القوالب الصريحة مثل "abs ((int) x)" و "ui =
(بدون علامة) -1 "، أو إذا لم تتغير القيمة بالتحويل كما في" abs (2.0) ".
يمكن تعطيل التحذيرات المتعلقة بالتحويلات بين الأعداد الصحيحة الموقعة وغير الموقعة بواسطة
استخدام -Wno- تسجيل- التحويل.

بالنسبة لـ C ++ ، حذر أيضًا من الخلط بين دقة التحميل الزائد للتحويلات التي يحددها المستخدم ؛ و
التحويلات التي لن تستخدم أبدًا عامل تحويل نوع: تحويلات إلى "باطل" ، و
نفس النوع أو فئة أساسية أو إشارة إليها. تحذيرات حول التحويلات بين
يتم تعطيل الأعداد الصحيحة الموقعة وغير الموقعة افتراضيًا في C ++ ما لم يكن -Wsign- التحويل
تم تمكينه بشكل صريح.

-Wno- تحويل- خالية (C ++ و Objective-C ++ فقط)
لا تحذر من التحويلات بين أنواع "NULL" وغير المؤشر. -Wconversion- لاغية is
ممكّن افتراضيًا.

-Wzero-as-null-pointer-ثابت (C ++ و Objective-C ++ فقط)
تحذير عند استخدام "0" حرفيًا باعتباره ثابت مؤشر فارغ. يمكن أن يكون هذا مفيدًا لـ
تسهيل التحويل إلى "nullptr" في C ++ 11.

-جسم فارغ
تحذير إذا حدث جسم فارغ في ملف if, آخر or do في حين بيان. هذا التحذير
تم تمكينه أيضًا بواسطة اكسترا.

-وينوم-قارن
تحذير من المقارنة بين قيم الأنواع المعدودة المختلفة. في تعداد C ++
يتم أيضًا تشخيص حالات عدم التطابق في التعبيرات الشرطية ويتم تمكين التحذير بواسطة
إفتراضي. في C ، يتم تمكين هذا التحذير بواسطة الجدار شاحن.

-القفز-يخطئ-الحرف الأول (C ، Objective-C فقط)
تحذير إذا قفزت عبارة "goto" أو عبارة "switch" إلى الأمام عبر
تهيئة متغير ، أو يقفز للخلف إلى التسمية بعد أن يكون المتغير
مهيأ. هذا يحذر فقط من المتغيرات التي تمت تهيئتها عندما تكون كذلك
أعلن. هذا التحذير مدعوم فقط لـ C و Objective-C ؛ في C ++ هذا النوع من
فرع هو خطأ في أي حال.

-القفز-يخطئ-الحرف الأول تم تضمينه في -Wc ++ - متوافق. يمكن تعطيله باستخدام
-لا-قفزة-يخطئ-الحرف الأول الخيار.

-Wsign- قارن
تحذير عندما تؤدي المقارنة بين القيم الموقعة وغير الموقعة إلى ظهور خطأ
ينتج عندما يتم تحويل القيمة الموقعة إلى قيمة غير موقعة. هذا التحذير ممكّن أيضًا
by اكسترا؛ للحصول على التحذيرات الأخرى من اكسترا بدون هذا التحذير ، استخدم اكسترا
-لا تسجيل- مقارنة.

-Wsign- التحويل
تحذير من التحويلات الضمنية التي قد تغير علامة قيمة عدد صحيح ، مثل
تخصيص تعبير عدد صحيح بعلامة لمتغير عدد صحيح بدون إشارة. صريح
يلقي الصمت التحذير. في C ، يتم تمكين هذا الخيار أيضًا من خلال -Wconversion.

-العنوان
تحذير من الاستخدامات المشبوهة لعناوين الذاكرة. وتشمل هذه استخدام عنوان
تعمل في تعبير شرطي ، مثل "void func (void) ؛ if (func)" ، و
مقارنات بعنوان الذاكرة لسلسلة حرفية ، مثل "if (x ==" abc ")".
تشير هذه الاستخدامات عادةً إلى خطأ مبرمج: عنوان الوظيفة دائمًا
بتقييم صحيح ، لذا فإن استخدامها في الشرط عادة ما يشير إلى أن المبرمج
نسيت الأقواس في استدعاء الوظيفة ؛ والمقارنات مع القيم الحرفية
تؤدي إلى سلوك غير محدد وليست محمولة في لغة C ، لذا فهي تشير عادةً
أن المبرمج كان ينوي استخدام "strcmp". تم تمكين هذا التحذير من قبل الجدار شاحن.

-Wlogical- المرجع
تحذير من الاستخدامات المشبوهة للعوامل المنطقية في التعبيرات. وهذا يشمل استخدام ملفات
عوامل التشغيل المنطقية في السياقات التي من المحتمل أن يتوقع فيها وجود عامل قليل الحكمة.

-إجمالي-العائد
تحذير إذا تم تحديد أو استدعاء أي وظائف تعيد الهياكل أو النقابات. (في
اللغات التي يمكنك من خلالها إرجاع مصفوفة ، يؤدي هذا أيضًا إلى تحذير.)

-لا-سمات
لا تحذر إذا تم استخدام "__ سمة__" غير متوقعة ، مثل السمات غير المعروفة ،
سمات الوظيفة المطبقة على المتغيرات ، إلخ. هذا لن يوقف الأخطاء لـ
استخدام غير صحيح للسمات المدعومة.

إعادة تعريف -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 ++ ، لم يتم إصدار أي تحذيرات بشأن
قوالب الوظائف ، أو للوظائف المضمنة ، أو للوظائف في مساحات الأسماء المجهولة.

-ضياع-الحقل-التهيئة
تحذير إذا كانت هناك بعض الحقول المفقودة في مُهيئ البنية. على سبيل المثال ، ما يلي
قد يتسبب الرمز في مثل هذا التحذير ، لأن "xh" تعني ضمنيًا صفرًا:

هيكل s {int f ، g ، h ؛ } ؛
هيكل sx = {3، 4} ؛

هذا الخيار لا يحذر من التهيئة المعينة ، لذلك التعديل التالي
لن يطلق تحذيرًا:

هيكل s {int f ، g ، h ؛ } ؛
هيكل sx = {.f = 3، .g = 4} ؛

تم تضمين هذا التحذير في اكسترا. للحصول على الآخرين اكسترا تحذيرات بدون هذا ،
تستخدم اكسترا -لا-مفقودة-الحقل-التهيئة.

السمة-تنسيق-مفقود
تحذير حول مؤشرات الوظائف التي قد تكون مرشحة لسمات "التنسيق". ملحوظة
هؤلاء ليسوا سوى المرشحين المحتملين ، وليسوا المرشحين المطلقين. دول مجلس التعاون الخليجي سوف تخمن هذه الوظيفة
المؤشرات ذات سمات "التنسيق" المستخدمة في التعيين والتهيئة ،
يجب أن تحتوي عبارات تمرير أو إرجاع المعلمة على سمة "تنسيق" مقابلة
في النوع الناتج. أي الجانب الأيسر من التخصيص أو التهيئة ،
نوع متغير المعلمة ، أو نوع إرجاع الدالة المحتوية
على التوالي يجب أيضًا أن يحتوي على سمة "format" لتجنب التحذير.

مجلس التعاون الخليجي سوف يحذر أيضًا من تعريفات الوظائف التي قد تكون مرشحة لـ "التنسيق"
صفات. مرة أخرى ، هؤلاء هم المرشحون المحتملون فقط. سيخمن مجلس التعاون الخليجي أن "التنسيق"
قد تكون السمات مناسبة لأي وظيفة تستدعي وظيفة مثل "vprintf"
أو "vscanf" ، ولكن قد لا يكون هذا هو الحال دائمًا ، وبعض الوظائف الخاصة به
قد لا يتم الكشف عن سمات "التنسيق" المناسبة.

-ونو- multichar
لا تحذر إذا كان ثابت متعدد الأحرف ('FOOF') يستخدم. عادة ما يشيرون إلى أ
خطأ مطبعي في كود المستخدم ، لأن لديهم قيم محددة من قبل التنفيذ ، ويجب ألا تكون كذلك
المستخدمة في التعليمات البرمجية المحمولة.

غير طبيعي =
في ISO C و ISO C ++ ، يختلف معرفان إذا كانا متتابعين مختلفين من
الشخصيات. ومع ذلك ، في بعض الأحيان عندما تكون الأحرف خارج مجموعة أحرف ASCII الأساسية
تستخدم ، يمكن أن يكون لديك تسلسلين مختلفين للأحرف يبدوان متشابهين. لتجنب
الارتباك ، يحدد معيار ISO 10646 بعضًا التطبيع القواعد والتي عند تطبيقها
تأكد من تحويل تسلسلين متشابهين إلى نفس التسلسل. مجلس التعاون الخليجي
يمكنه تحذيرك إذا كنت تستخدم معرفات لم يتم تطبيعها ؛ هذا الخيار
يتحكم في هذا التحذير.

هناك أربعة مستويات من التحذير مدعومة من قبل دول مجلس التعاون الخليجي. الافتراضي هو غير طبيعي = nfc,
الذي يحذر من أي معرف غير موجود في النموذج القياسي ISO 10646 "C" ،
NFC. NFC هو الشكل الموصى به لمعظم الاستخدامات.

لسوء الحظ ، هناك بعض الأحرف المسموح بها في المعرفات بواسطة ISO C و ISO C ++
هذا ، عند تحويله إلى NFC ، غير مسموح به في المعرفات. هذا هو ، لا توجد طريقة
لاستخدام هذه الرموز في ISO C أو C ++ المحمولة والحصول على جميع معرفاتك في NFC.
- غير طبيعي = معرف يمنع التحذير لهذه الشخصيات. ومن المؤمل أن المستقبل
إصدارات المعايير المعنية ستصحح هذا ، وهذا هو السبب في أن هذا الخيار ليس كذلك
الافتراضي.

يمكنك إيقاف تشغيل التحذير لجميع الأحرف عن طريق الكتابة - غير طبيعي = لا شيء. أنت
لن ترغب في القيام بذلك إلا إذا كنت تستخدم مخطط تطبيع آخر (مثل
"D") ، لأنه بخلاف ذلك يمكنك بسهولة إنشاء أخطاء يستحيل فعلها حرفيًا
انظر.

بعض الأحرف في ISO 10646 لها معاني مميزة ولكنها تبدو متطابقة في بعض الخطوط
أو منهجيات العرض ، خاصة بعد تطبيق التنسيق. على سبيل المثال
سيتم عرض "\ u207F"، "SUPERSCRIPT LATIN SMALL LETTER N" تمامًا مثل "n" العادي
التي تم وضعها في مرتفع. تحدد ISO 10646 ملف نفكك التطبيع
مخطط لتحويل كل هذه إلى نموذج قياسي أيضًا ، وسيحذر GCC إذا كان لديك
الرمز ليس في NFKC إذا كنت تستخدم غير طبيعي = nfkc. هذا التحذير يمكن مقارنته بـ
تحذير بخصوص كل معرّف يحتوي على الحرف O لأنه قد يكون مشوشًا
بالرقم 0 ، وبالتالي ليس هو الخيار الافتراضي ، ولكنه قد يكون مفيدًا كترميز محلي
اصطلاحًا إذا كانت بيئة البرمجة غير قادرة على إصلاحها لعرضها
الشخصيات بشكل واضح.

-Wno- مهملة
لا تحذر من استخدام الميزات المهملة.

- إقرارات - مهملة
لا تحذر من استخدامات الوظائف ، والمتغيرات ، والأنواع التي تم وضع علامة مهملة بواسطة
باستخدام السمة "مهملة".

-لا تجاوز
لا تحذر من تجاوز وقت الترجمة في التعبيرات الثابتة.

-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 فقط)
تحذير إذا تمت مصادفة تصريح "خارجي" داخل دالة.

-وينلاين
تحذير إذا كان لا يمكن تضمين دالة وتم إعلانها على أنها مضمنة. حتى مع هذا
الخيار ، فإن المترجم لن يحذر من الفشل في الوظائف المضمنة المعلنة في
رؤوس النظام.

يستخدم المترجم مجموعة متنوعة من الأساليب البحثية لتحديد ما إذا كان سيتم تضمين ملف
وظيفة. على سبيل المثال ، يأخذ المترجم في الاعتبار حجم الوظيفة
مضمنة ومقدار التضمين الذي تم إجراؤه بالفعل في الوظيفة الحالية.
لذلك ، يمكن أن تتسبب التغييرات التي تبدو غير مهمة في البرنامج المصدر في حدوث
التحذيرات التي تنتجها -وينلاين لتظهر أو تختفي.

-Wno- غير صالح- offsetof (C ++ و Objective-C ++ فقط)
قم بإلغاء التحذيرات من تطبيق تعويض ماكرو إلى نوع غير POD. وفق
معيار ISO C ++ لعام 1998 المطبق تعويض إلى نوع غير POD غير معرف. في
تطبيقات C ++ الحالية ، ومع ذلك ، تعويض عادةً ما يعطي نتائج ذات مغزى
حتى عند تطبيقها على أنواع معينة من الأنواع غير POD. (مثل ملف البنية أن
فشل في أن يكون نوع POD فقط بحكم وجود مُنشئ.) هذه العلامة مخصصة لـ
المستخدمون الذين يدركون أنهم يكتبون تعليمات برمجية غير قابلة للنقل والذين قاموا بذلك عن عمد
تم اختياره لتجاهل التحذير الخاص به.

القيود على تعويض يمكن تخفيفها في إصدار مستقبلي من معيار 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 المتحذلق. هذا هو الافتراضي. لمنع رسائل التحذير ، استخدم
-لا-varadic- وحدات الماكرو.

-Wvector-عملية-الأداء
تحذير إذا لم يتم تنفيذ عملية المتجه عبر إمكانيات SIMD للبنية.
مفيد بشكل رئيسي لضبط الأداء. يمكن تنفيذ عملية المتجهات
"متعدد التعريف" ، مما يعني أن العملية العددية يتم تنفيذها على كل متجه
عنصر؛ "بالتوازي" ، مما يعني أن عملية المتجه يتم تنفيذها باستخدام
الحجميات من النوع الأوسع ، والتي عادةً ما تكون أكثر كفاءة في الأداء ؛ و "كفرد واحد
سلمي "، مما يعني أن المتجه يلائم نوعًا عدديًا.

-فلا
تحذير إذا تم استخدام مصفوفة متغيرة الطول في الكود. -نو- vla سيمنع
-متحذلق تحذير من صفيف متغير الطول.

-تقلب- تسجيل- فار
تحذير إذا تم الإعلان عن متغير تسجيل متغير. المعدل المتطاير لا
تمنع كافة التحسينات التي قد تزيل عمليات القراءة و / أو الكتابة للتسجيل
المتغيرات. تم تمكين هذا التحذير من قبل الجدار شاحن.

-Wdisabled- التحسين
تحذير إذا تم تعطيل تصريح التحسين المطلوب. هذا التحذير لا بشكل عام
الإشارة إلى وجود أي خطأ في التعليمات البرمجية الخاصة بك ؛ إنه يشير فقط إلى أن دول مجلس التعاون الخليجي
لم يتمكن المحسنون من التعامل مع الكود بشكل فعال. في كثير من الأحيان ، المشكلة هي أن
شفرتك كبيرة جدًا أو معقدة جدًا ؛ سوف يرفض دول مجلس التعاون الخليجي تحسين البرامج عندما يكون
من المحتمل أن يستغرق التحسين بحد ذاته وقتًا طويلاً للغاية.

-Wpointer- تسجيل (C و Objective-C فقط)
التحذير من اجتياز حجة المؤشر أو التعيين بمواقع مختلفة. هذه
الخيار مدعوم فقط لـ C و Objective-C. هو ضمني من قبل الجدار شاحن و
-متحذلق، والتي يمكن تعطيلها باستخدام -لا-مؤشر- تسجيل.

- حامي Wstack
يكون هذا الخيار نشطًا فقط عندما -حامي-فسك نشط. يحذر من الوظائف
لن يتم حمايته من تحطيم المكدس.

-wno-mudflap
قم بإلغاء التحذيرات المتعلقة بالتركيبات التي لا يمكن استخدامها كأداة -fmudflap.

-الطول-الاوتار
تحذير من ثوابت السلسلة التي تكون أطول من "الحد الأدنى للطول"
المحدد في المعيار C. يسمح المترجمون الحديثون عمومًا بثوابت السلسلة
أطول بكثير من الحد الأدنى للمعيار ، ولكن يجب أن تكون البرامج المحمولة جدًا
تجنب استخدام سلاسل أطول.

ينطبق الحد بعد سلسلة ثابتة ، ولا تحسب الزائدة
نول. في C90 ، كان الحد الأقصى هو 509 حرفًا ؛ في C99 ، تم رفعه إلى 4095. C ++ 98 يفعل
لا تحدد حدًا أدنى معياريًا للحد الأقصى ، لذلك لا نشخص السلاسل ذات الطول المتراكب في
C ++.

هذا الخيار متضمن بواسطة -متحذلق، ويمكن تعطيله باستخدام -لا-طول- سلاسل.

- الثوابت غير الثابتة (C و Objective-C فقط)
سيصدر GCC تحذيرًا لأي ثابت عائم لا يحتوي على لاحقة. متي
تستخدم مع -Wsystem- رؤوس سوف يحذر من هذه الثوابت في رأس النظام
الملفات. يمكن أن يكون هذا مفيدًا عند إعداد رمز لاستخدامه مع "FLOAT_CONST_DECIMAL64"
pragma من امتداد الفاصلة العشرية العشرية إلى C99.

مزيد من الخيارات For التصحيح حل متجر العقارات الشامل الخاص بك في جورجيا البرنامج or الخليج
يوجد في GCC العديد من الخيارات الخاصة التي تُستخدم لتصحيح أخطاء برنامجك أو GCC:

-g إنتاج معلومات تصحيح الأخطاء بالتنسيق الأصلي لنظام التشغيل (الطعنات ، COFF ،
XCOFF أو DWARF 2). يمكن أن يعمل GDB مع معلومات التصحيح هذه.

في معظم الأنظمة التي تستخدم تنسيق Stabs ، -g يتيح استخدام معلومات تصحيح الأخطاء الإضافية
لا يمكن استخدامه إلا GDB ؛ هذه المعلومات الإضافية تجعل تصحيح الأخطاء يعمل بشكل أفضل في GDB ولكن
من المحتمل أن تتسبب في تحطم مصححات الأخطاء الأخرى أو ترفض قراءة البرنامج. إن أردت
للتحكم على وجه اليقين في إنشاء معلومات إضافية ، استخدم -غستابس +,
-جستابس, -gxcoff +, -gxcoffالطرق أو -gvms (انظر أدناه).

يسمح لك مجلس التعاون الخليجي باستخدام ملفات -g مع -O. قد الاختصارات المأخوذة عن طريق الكود الأمثل
ينتج أحيانًا نتائج مفاجئة: بعض المتغيرات التي أعلنت عنها قد لا تكون موجودة في
الكل؛ قد يتحرك تدفق السيطرة لفترة وجيزة حيث لم تكن تتوقعه ؛ بعض العبارات قد
لا يتم تنفيذها لأنها تحسب نتائج ثابتة أو كانت قيمها موجودة بالفعل
كف؛ قد يتم تنفيذ بعض العبارات في أماكن مختلفة لأنه تم نقلها من
حلقات.

ومع ذلك ، فإنه يثبت أنه من الممكن تصحيح أخطاء الإخراج المحسن. هذا يجعلها معقولة
لاستخدام المحسن للبرامج التي قد تحتوي على أخطاء.

تكون الخيارات التالية مفيدة عندما يتم إنشاء GCC مع القدرة على المزيد
من تنسيق تصحيح واحد.

-ggdb
إنتاج معلومات تصحيح الأخطاء لاستخدامها بواسطة GDB. هذا يعني استخدام أكثرها تعبيرا
التنسيق المتاح (DWARF 2 ، أو الطعنات ، أو التنسيق الأصلي إذا لم يكن أي منهما متاحًا
مدعوم) ، بما في ذلك امتدادات GDB إذا كان ذلك ممكنًا.

-جستابس
قم بإنتاج معلومات تصحيح الأخطاء بتنسيق stabs (إذا كان ذلك مدعومًا) ، بدون GDB
ملحقات. هذا هو التنسيق الذي تستخدمه DBX في معظم أنظمة BSD. في MIPS و Alpha و
أنظمة الإصدار 4 من النظام الخامس ينتج هذا الخيار إخراج طعنات لتصحيح الأخطاء غير الموجودة
يفهمها DBX أو SDB. يتطلب هذا الخيار في أنظمة الإصدار 4 من النظام الخامس GNU
المجمع.

-تصحيح-غير مستخدمة-رموز تصحيح
قم بإنتاج معلومات تصحيح الأخطاء بتنسيق stabs (إذا كان ذلك مدعومًا) ، للرموز فقط
التي يتم استخدامها بالفعل.

-نسبه-فئة-التصحيح-دائما
بدلاً من إرسال معلومات تصحيح الأخطاء لفئة C ++ في ملف كائن واحد فقط ،
إرساله في جميع ملفات الكائنات باستخدام الفئة. يجب استخدام هذا الخيار فقط مع
مصححات الأخطاء غير القادرة على التعامل مع الطريقة التي تُصدر بها دول مجلس التعاون الخليجي عادةً معلومات تصحيح الأخطاء
للفئات لأن استخدام هذا الخيار سيزيد من حجم معلومات التصحيح
بمقدار ضعفين.

- أنواع التصحيح - قسم
بشكل افتراضي عند استخدام DWARF v4 أو أعلى من النوع DIEs سيتم وضعها بمفردها
قسم .debug_types بدلاً من جعلها جزءًا من قسم .debug_info. إنها
أكثر كفاءة لوضعهم في أقسام منفصلة من comdat لأن الرابط سيكون بعد ذلك
قادرة على إزالة التكرارات. ولكن لا يدعم جميع مستهلكي DWARF أقسام .debug_types
حتى الان.

-غستابس +
قم بإنتاج معلومات تصحيح الأخطاء بتنسيق stabs (إذا كان ذلك مدعومًا) ، باستخدام GNU
الامتدادات لا يفهمها إلا مصحح أخطاء جنو (GDB). استخدام هذه الامتدادات
من المحتمل أن تتسبب في تحطم مصححات الأخطاء الأخرى أو ترفض قراءة البرنامج.

-كوف
قم بإنتاج معلومات التصحيح بتنسيق COFF (إذا كان ذلك مدعومًا). هذا ال
التنسيق المستخدم بواسطة SDB في معظم أنظمة System V قبل الإصدار 4 من النظام الخامس.

-gxcoff
قم بإنشاء معلومات تصحيح الأخطاء بتنسيق XCOFF (إذا كان ذلك مدعومًا). هذا ال
التنسيق المستخدم بواسطة مصحح أخطاء DBX على أنظمة IBM RS / 6000.

-gxcoff +
قم بإنتاج معلومات تصحيح الأخطاء بتنسيق XCOFF (إذا كان ذلك مدعومًا) ، باستخدام GNU
الامتدادات لا يفهمها إلا مصحح أخطاء جنو (GDB). استخدام هذه الامتدادات
من المحتمل أن تتسبب في تعطل مصححات الأخطاء الأخرى أو ترفض قراءة البرنامج ، وقد يتسبب ذلك
المجمعات الأخرى غير مُجمِّع جنو (GAS) تفشل بسبب خطأ.

-قزم-الإصدار
قم بإنشاء معلومات تصحيح الأخطاء بتنسيق DWARF (إذا كان ذلك مدعومًا). هذا ال
التنسيق المستخدم بواسطة DBX على IRIX 6. قيمة الإصدار قد يكون إما 2 أو 3 أو 4 ؛ ال
الإصدار الافتراضي هو 2.

لاحظ أنه مع الإصدار 2 من DWARF ، تتطلب بعض المنافذ ، وستستخدم دائمًا ، بعض المنافذ غير
تضارب امتدادات DWARF 3 في جداول التصفية.

الإصدار 4 قد يتطلب GDB 7.0 و -fvar- تتبع- التخصيصات لتحقيق أقصى فائدة.

-جريكورد- مفاتيح دول مجلس التعاون الخليجي
يؤدي رمز التبديل هذا إلى استخدام خيارات سطر الأوامر لاستدعاء المترجم الذي قد يكون
تؤثر على إنشاء الكود ليتم إلحاقه بسمة DW_AT_producer في DWARF
معلومات التصحيح. الخيارات متسلسلة بمسافات تفصل بينها
بعضها البعض ومن إصدار المترجم. أنظر أيضا - مفاتيح دول مجلس التعاون الخليجي لآخر
طريقة لتخزين خيارات المترجم في ملف الكائن.

-Gno- سجل- مفاتيح دول مجلس التعاون الخليجي
عدم السماح بإلحاق خيارات سطر الأوامر بسمة DW_AT_producer في DWARF
معلومات التصحيح. هذا هو الافتراضي.

-القزم الصارم
عدم السماح باستخدام امتدادات لإصدار DWARF القياسي الأحدث من المحدد مع
-قزم-الإصدار. على معظم الأهداف باستخدام امتدادات DWARF غير المتضاربة من وقت لاحق
الإصدارات القياسية مسموح بها.

- صارم - قزم
السماح باستخدام امتدادات لإصدار DWARF القياسي الأحدث من المحدد مع
-قزم-الإصدار.

-gvms
قم بإنشاء معلومات تصحيح الأخطاء بتنسيق تصحيح VMS (إذا كان ذلك مدعومًا). هذا ال
التنسيق المستخدم بواسطة DEBUG على أنظمة VMS.

-gمستوى
-ggdbمستوى
-جستابسمستوى
-كوفمستوى
-gxcoffمستوى
-gvmsمستوى
اطلب معلومات التصحيح واستخدمها أيضًا مستوى لتحديد مقدار المعلومات. ال
المستوى الافتراضي هو 2.

لا ينتج المستوى 0 أي معلومات تصحيح على الإطلاق. هكذا، -G0 ينفي -g.

ينتج المستوى 1 الحد الأدنى من المعلومات ، وهو ما يكفي لعمل مسارات خلفية في أجزاء من
البرنامج الذي لا تخطط لتصحيحه. هذا يتضمن أوصاف وظائف و
المتغيرات الخارجية ، ولكن لا توجد معلومات حول المتغيرات المحلية ولا توجد أرقام سطور.

يتضمن المستوى 3 معلومات إضافية ، مثل كافة تعريفات الماكرو الموجودة في ملف
برنامج. تدعم بعض أدوات تصحيح الأخطاء توسيع الماكرو عند استخدام ملفات -G3.

-جدوارف -2 لا يقبل مستوى تصحيح أخطاء متسلسل ، لأن GCC يستخدم لدعم ملف
خيار -جدوارف هذا يعني إنشاء معلومات التصحيح في الإصدار 1 من DWARF
(وهو مختلف تمامًا عن الإصدار 2) ، وكان من الممكن أن يكون مربكًا للغاية.
يعد تنسيق التصحيح هذا قديمًا منذ فترة طويلة ، ولكن لا يمكن تغيير الخيار الآن. بدلا من ذلك استخدم
بالإضافة -gمستوى خيار لتغيير مستوى التصحيح لـ DWARF.

-gtoggle
قم بإيقاف تشغيل إنشاء معلومات التصحيح ، إذا كان ترك هذا الخيار سيؤدي إلى إنشائه ،
أو قم بتشغيله في المستوى 2 خلاف ذلك. موضع هذه الحجة في سطر الأوامر
لا يهم ، فهي سارية المفعول بعد معالجة جميع الخيارات الأخرى ، وهي تفعل ذلك
مرة واحدة فقط ، بغض النظر عن عدد مرات تقديمها. الغرض الأساسي من هذا هو استخدامه
مع -fcompare-debug.

-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-دوبس
ضغط معلومات تصحيح أخطاء DWARF2 عن طريق التخلص من المعلومات المكررة حول كل منها
رمز. يكون هذا الخيار منطقيًا فقط عند إنشاء معلومات تصحيح أخطاء DWARF2
مع -جدوارف -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
يجعل المترجم يطبع بعض الإحصائيات حول التخصيص الدائم للذاكرة عند ذلك
التشطيبات.

-fpre-IPA-MEM-تقرير
-fpost-ipa-mem-report
يجعل المترجم يطبع بعض الإحصائيات حول التخصيص الدائم للذاكرة قبل أو
بعد التحسين بين الإجراءات.

-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 =قائمة النطاق
هذه مجموعة من خيارات التصحيح التي تُستخدم للتعطيل / التمكين بشكل صريح
يمر التحسين. لمستخدمي المترجم ، خيارات منتظمة لتمكين / تعطيل التمريرات
يجب أن تستخدم بدلا من ذلك.

* <- fdisable-ipa-pass >
تعطيل ipa pass pass . pass هو اسم المرور. إذا كان نفس التمريرة ثابتًا
تم استدعاؤه في المترجم عدة مرات ، يجب إلحاق اسم المرور بامتداد
رقم تسلسلي يبدأ من 1.

* <- fdisable-rtl-pass >
* <- fdisable-rtl-pass =قائمة النطاق>
تعطيل rtl pass pass . pass هو اسم المرور. إذا كان نفس التمريرة ثابتًا
تم استدعاؤه في المترجم عدة مرات ، يجب إلحاق اسم المرور بامتداد
رقم تسلسلي يبدأ من 1. قائمة النطاق هي قائمة مفصولة بفواصل من
نطاقات الوظائف أو أسماء المجمعات. كل نطاق عبارة عن زوج أرقام مفصول بـ a
القولون. النطاق شامل في كلا الطرفين. إذا كان النطاق تافهاً ، الرقم
يمكن تبسيط الزوج كرقم واحد. إذا كانت عقدة cgraph الخاصة بالوظيفة رقم تعريف الوحدة is
التي تقع ضمن أحد النطاقات المحددة ، فإن pass تم تعطيل لذلك
وظيفة. ال رقم تعريف الوحدة يظهر في عنوان الوظيفة لملف التفريغ ، والممر
يمكن إغراق الأسماء باستخدام الخيار -fdump- يمر.

* <- fdisable-tree-pass >
* <- fdisable-tree-pass =قائمة النطاق>
تعطيل تمرير الشجرة pass . شاهد -fdisable-rtl لوصف الخيار
الحجج.

* <- fenable-ipa-pass >
تفعيل ipa pass pass . pass هو اسم المرور. إذا كان نفس التمريرة ثابتًا
تم استدعاؤه في المترجم عدة مرات ، يجب إلحاق اسم المرور بامتداد
رقم تسلسلي يبدأ من 1.

* <- fenable-rtl-pass >
* <- fenable-rtl-pass =قائمة النطاق>
تفعيل rtl pass 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
يقول لجعل عمليات تفريغ التصحيح أثناء التجميع في الأوقات التي يحددها حروف. هذا
يستخدم لتصحيح أخطاء الممرات المعتمدة على 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-regmove
تفريغ بعد تمرير التسجيل.

-fdump-rtl-جدولة 1
-fdump-rtl-جدولة 2
-fdump-rtl-جدولة 1 و -fdump-rtl-جدولة 2 تمكين الإغراق بعد الكتلة الأساسية
جدولة يمر.

-fdump-rtl-انظر
تفريغ بعد القضاء على تمديد التوقيع.

-fdump-rtl-seqabstr
تفريغ بعد اكتشاف التسلسل المشترك.

-fdump-rtl-تقصير
تفريغ بعد تقصير الفروع.

-fdump-rtl- الأخ
تفريغ بعد تحسينات استدعاء الأشقاء.

-fdump-rtl-split1
-fdump-rtl-split2
-fdump-rtl-split3
-fdump-rtl-split4
-fdump-rtl-split5
-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 حاشية. ملاحظة.

-دف لكل من ملفات التفريغ الأخرى المشار إليها (-fdump- rtl-pass ) ، تفريغ أ
تمثيل مخطط تدفق التحكم المناسب للعرض باستخدام VCG إلى
file.pass.vcg.

-dx ما عليك سوى إنشاء RTL لوظيفة بدلاً من تجميعها. عادة ما تستخدم مع
-fdump-rtl- توسيع.

-fdump-noaddr
عند إجراء عمليات تفريغ التصحيح ، قم بإيقاف إخراج العنوان. هذا يجعله أكثر جدوى
استخدم فرق في تصحيح أخطاء تفريغ استدعاءات المترجم باستخدام ثنائيات مترجم مختلفة
و / أو مواقع بدء نصية / bss / data / heap / stack / dso مختلفة.

-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". استخدامه الأساسي هو سهولة استخدام العمل للخلف من
أسماء مشوهة في ملف التجميع.

نحيل
منع إغراق أعضاء نطاق أو هيئة لوظيفة لمجرد ذلك
تم الوصول إلى النطاق. تفريغ هذه العناصر فقط عندما يمكن الوصول إليها مباشرة عن طريق
طريق آخر. عند التخلص من الأشجار المطبوعة بشكل جميل ، فإن هذا الخيار يمنع الإغراق
هيئات هياكل التحكم.

الخام اطبع تمثيلًا خامًا للشجرة. بشكل افتراضي ، تتم طباعة الأشجار بشكل جميل في تنسيق
تمثيل سي شبيه.

تفاصيل
تمكين عمليات تفريغ أكثر تفصيلاً (لا يتم الالتزام بها بواسطة كل خيار تفريغ).

الإحصائيات
قم بتمكين إغراق الإحصائيات المختلفة حول البطاقة (لا يتم تكريمها من قبل كل تفريغ
اختيار).

كتل
تفعيل إظهار حدود الكتلة الأساسية (معطل في عمليات التفريغ الأولية).

VOPS
تمكين إظهار المعاملات الافتراضية لكل عبارة.

لينينو
تمكين إظهار أرقام الأسطر للبيانات.

رقم تعريف الوحدة تفعيل إظهار المعرف الفريد ("DECL_UID") لكل متغير.

مطنب
تفعيل إظهار تفريغ الشجرة لكل عبارة.

eh تفعيل إظهار رقم منطقة EH الذي يحمل كل عبارة.

سكيف
تفعيل إظهار تفاصيل تحليل التطور القياسي.

من جميع قم بتشغيل جميع الخيارات ، باستثناء الخام, نحيل, مطنب و لينينو.

مكبات الأشجار التالية ممكنة:

أصلي
تفريغ قبل أي تحسين على أساس الشجرة ، إلى ملف.

الأمثل
تفريغ بعد كل التحسين القائم على الشجرة ، إلى ملف. الأمثل.

قرحة
تفريغ كل وظيفة قبل وبعد تمرير gimplification إلى ملف. الملف
الاسم مصنوع بإلحاق .gimple إلى اسم الملف المصدر.

CFG تفريغ الرسم البياني لتدفق التحكم لكل دالة في ملف. اسم الملف من صنع
إلحاق .cfg إلى اسم الملف المصدر.

VCG تفريغ الرسم البياني لتدفق التحكم لكل دالة إلى ملف بتنسيق VCG. الملف
الاسم مصنوع بإلحاق .vcg إلى اسم الملف المصدر. لاحظ أنه إذا كان الملف
يحتوي على أكثر من وظيفة ، لا يمكن استخدام الملف الذي تم إنشاؤه مباشرة بواسطة
VCG. ستحتاج إلى قص الرسم البياني لكل وظيفة ولصقه في منفصل خاص به
الملف أولا.

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 إلى اسم الملف المصدر.

من جميع قم بتمكين كل عمليات تفريغ الشجرة المتوفرة مع العلامات المتوفرة في هذا الخيار.

-ftree-vectorizer- مطول =n
يتحكم هذا الخيار في مقدار إخراج التصحيح الذي يطبعه Vectorizer. هذه
تتم كتابة المعلومات إلى الخطأ المعياري ، ما لم يكن -fdump-tree-all or -fdump- شجرة- vect
محدد ، وفي هذه الحالة يتم إخراجها إلى ملف قائمة التفريغ المعتاد ، .vect. إلى
n= 0 لم يتم الإبلاغ عن أي معلومات تشخيصية. لو n= 1 يقوم المتجه بالإبلاغ عن كل حلقة
التي تم تحويلها إلى متجه ، وإجمالي عدد الحلقات التي تم تحويلها إلى متجه. لو n= 2
يُبلغ Vectorizer أيضًا عن الحلقات غير الموجهة التي اجتازت مرحلة التحليل الأولى
(vect_analyze_loop_form) - على سبيل المثال ، قابل للعد ، الجزء الداخلي ، أحادي bb ، إدخال / خروج واحد
الحلقات. هذا هو نفس مستوى الإسهاب -fdump-tree-vect- احصائيات الاستخدامات. أعلى
تعني مستويات الإسهاب إما إغراق المزيد من المعلومات لكل حلقة تم الإبلاغ عنها ، أو نفس الشيء
كمية المعلومات المبلغ عنها لمزيد من الحلقات: إذا n= 3 ، نموذج تكلفة vectorizer
تم الإبلاغ عن المعلومات. لو n= 4 ، تتم إضافة المعلومات ذات الصلة بالمحاذاة إلى
التقارير. لو n= 5 ، المعلومات المتعلقة بمراجع البيانات (مثل اعتمادات الذاكرة والذاكرة
access-pattern) إلى التقارير. لو n= 6 ، يشير ناقل الاتجاه أيضًا إلى عدم
معظم الحلقات الداخلية المتجهية التي لم تجتاز مرحلة التحليل الأولى (على سبيل المثال ، لا يجوز
يمكن عدها ، أو قد يكون لها تدفق تحكم معقد). لو n= 7 ، تقارير vectorizer
أيضا حلقات متداخلة غير متجهية. لو n= 8 ، تتم إضافة المعلومات المتعلقة بـ SLP إلى ملف
التقارير. ل n= 9 ، كل المعلومات التي يولدها جهاز التوجيه أثناء تحليله
ويتم الإبلاغ عن التحول. هذا هو نفس مستوى الإسهاب
-fdump- شجرة- vect- التفاصيل يستخدم.

-بذور عشوائية =سلسلة
يوفر هذا الخيار أساسًا يستخدمه مجلس التعاون الخليجي عندما يستخدم أرقامًا عشوائية.
يتم استخدامه لإنشاء أسماء رموز معينة يجب أن تكون مختلفة في كل منها
ملف مترجم. يتم استخدامه أيضًا لوضع طوابع فريدة في ملفات بيانات التغطية وملفات
ملفات الكائن التي تنتجها. يمكنك استعمال ال -بذور عشوائية خيار الإنتاج
ملفات كائن متطابقة استنساخًا.

سلسلة يجب أن يكون مختلفًا لكل ملف تقوم بتجميعه.

-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- تتبع- التخصيصاتبنفس الطريقة -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) --- ولا تفعل أي شيء آخر.

-مكبات
اطبع المواصفات المضمنة في المترجم - ولا تفعل أي شيء آخر. (يستخدم هذا عندما
يتم بناء دول مجلس التعاون الخليجي نفسها.)

- إزالة أنواع التصحيح غير المستخدمة
عادةً ، عند إنتاج مخرجات DWARF2 ، ستصدر GCC معلومات تصحيح الأخطاء للجميع
الأنواع المعلنة في وحدة الترجمة ، بغض النظر عما إذا كانت موجودة بالفعل أم لا
المستخدمة في وحدة التجميع تلك. في بعض الأحيان يكون هذا مفيدًا ، على سبيل المثال ، في مصحح الأخطاء ،
تريد إضافة قيمة إلى نوع لم يتم استخدامه بالفعل في برنامجك (ولكنه
أعلن). ومع ذلك ، في كثير من الأحيان ، ينتج عن هذا قدر كبير من المساحة الضائعة.
باستخدام هذا الخيار ، سيتجنب GCC إنتاج إخراج رمز التصحيح للأنواع الموجودة
لا تستخدم في أي مكان في الملف المصدر الذي يتم تجميعه.

مزيد من الخيارات أن مراقبة التحسين
تتحكم هذه الخيارات في أنواع مختلفة من التحسينات.

بدون أي خيار تحسين ، هدف المترجم هو تقليل تكلفة التجميع
ولجعل التصحيح ينتج عنه النتائج المتوقعة. تصريحات مستقلة: إذا كنت
قم بإيقاف البرنامج بنقطة توقف بين العبارات ، يمكنك بعد ذلك تعيين قيمة جديدة لـ
أي متغير أو تغيير برنامج العداد إلى أي عبارة أخرى في الدالة و get
بالضبط النتائج التي تتوقعها من شفرة المصدر.

يؤدي تشغيل علامات التحسين إلى جعل المحول البرمجي يحاول تحسين الأداء و / أو
حجم الكود على حساب وقت التجميع وربما القدرة على تصحيح أخطاء
برنامج.

يقوم المترجم بالتحسين بناءً على المعرفة التي يمتلكها بالبرنامج.
يسمح تجميع ملفات متعددة في وقت واحد إلى وضع ملف الإخراج الفردي للمترجم باستخدامها
تم الحصول على المعلومات من جميع الملفات عند تجميع كل منها.

لا يتم التحكم في جميع التحسينات بشكل مباشر بواسطة علامة. فقط التحسينات التي تحتوي على ملف
يتم سرد العلم في هذا القسم.

يتم تمكين معظم التحسينات فقط في حالة وجود ملف -O يتم تعيين المستوى في سطر الأوامر. خلاف ذلك
يتم تعطيلها ، حتى لو تم تحديد علامات التحسين الفردية.

اعتمادًا على الهدف وكيفية تكوين GCC ، هناك مجموعة مختلفة قليلاً من
قد يتم تمكين التحسينات في كل -O مستوى من تلك المذكورة هنا. يمكنك استدعاء GCC
مع -Q --help = محسِّنون لمعرفة المجموعة الدقيقة من التحسينات التي تم تمكينها في
كل مستوى.

-O
-O1 تحسين. يستغرق تحسين التجميع وقتًا أطول إلى حد ما ، وذاكرة أكبر بكثير من أجله
وظيفة كبيرة.

بدافع -Oيحاول المترجم تقليل حجم الكود ووقت التنفيذ دون أداء
أي تحسينات تستغرق وقتًا طويلاً في التجميع.

-O يقوم بتشغيل علامات التحسين التالية:

-فاوتو- المؤتمر الوطني العراقي -مقارنة-القضاء سجلات fcprop -fdce -fdefer-pop - فرع متأخر
-fdse -fguess- فرع- احتمال -fif- التحويل 2 -fif- التحويل -فيبا-نقي-كونست
-فيبا الشخصي -فيبا المرجع الثوابت - أنواع الانقسام العريض -ftree-بت-ccp
-ftree- بنيت- نداء- DCE -فتري- ccp -فتري- الفصل -ftree- نسخة -فتري- dce
-فتري-المسيطر-الخيارات -فتري- dse -ftree- forwprop -ftree- فري -فتري-بيبروب -فتري-سرا
-فتري- pta -فتري-تير -الوحدة في وقت واحد

-O يتحول أيضا على - مؤشر الإطار على الأجهزة التي لا يتدخل فيها ذلك
مع التصحيح.

-O2 تحسين أكثر. ينفذ مجلس التعاون الخليجي تقريبًا جميع التحسينات المدعومة التي لا تفعل ذلك
تنطوي على مقايضة سرعة الفضاء. مقارنة ب -O، يزيد هذا الخيار كليهما
وقت التجميع وأداء الكود الذي تم إنشاؤه.

-O2 يقوم بتشغيل جميع علامات التحسين المحددة بواسطة -O. كما يتحول إلى ما يلي
أعلام التحسين: -الخيط القفزات وظائف المحاذاة -محاذي-يقفز حلقات محاذاة
-ملصقات المحاذاة -fcaller- يحفظ -القفز المتقاطع القفزات -fcse- متابعة كتل -fcse- تخطي
-fdelete-null-pointer-check-pointer (تحقق من -fdelete-null-pointer-pointer) - افترض - تحسينات غير مكلفة -fgcse
-fgcse-lm وظائف صغيرة الحجم - مضمنة غير مباشرة -فيبا-سرا
-تحسين- مكالمات الأخوة -تضمين جزئيًا -ف ثقب الباب2 -الحفظ كتل -freorder
وظائف -freorder -frerun-cse-بعد الحلقة -fsched-interblock -fsched- المواصفات
-fschedule- insns -fschedule-insns2 -تعرج صارم - تجاوز الحد
-تبديل الشجرة التحويل -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- جزئية- قبل و -فيبا- cp- استنساخ خيارات.

-O0 قلل وقت الترجمة واجعل التصحيح ينتج عنه النتائج المتوقعة. هذا ال
افتراضي.

-أوس تحسين الحجم. -أوس تمكن الجميع -O2 التحسينات التي لا تزيد عادة
حجم الكود. كما يقوم بإجراء تحسينات إضافية مصممة لتقليل حجم الكود.

-أوس تعطيل علامات التحسين التالية: وظائف المحاذاة -محاذي-يقفز
حلقات محاذاة -ملصقات المحاذاة كتل -freorder كتل-فريدر-والتقسيم
-fprefetch- حلقة- صفائف -ftree- vect- حلقة الإصدار

-سريع
تجاهل الامتثال الصارم للمعايير. -سريع تمكن الجميع -O3 تحسينات. كذلك
يمكّن التحسينات غير الصالحة لكافة البرامج المتوافقة مع المعايير. هو - هي
يشغل -فاست-الرياضيات وفورتران الخاصة -fno- حماية-أقواس و -fstack- المصفوفات.

إذا كنت تستخدم ملفات -O خيارات ، مع أرقام المستوى أو بدونها ، فإن الخيار الأخير هو
الذي هو فعال.

خيارات النموذج -fعلم تحديد الأعلام المستقلة عن الآلة. تحتوي معظم الأعلام على كليهما
أشكال إيجابية وسلبية. الشكل السلبي لـ -ffoo سيكون -فنو-فو. في الطاولة
أدناه ، تم إدراج نموذج واحد فقط - النموذج الذي ستستخدمه عادةً. يمكنك الرقم
من الشكل الآخر إما عن طريق الإزالة الجوى أو إضافته.

تتحكم الخيارات التالية في تحسينات محددة. إما أنها مفعلة بواسطة -O
خيارات أو تتعلق بتلك الموجودة. يمكنك استخدام العلامات التالية في حالات نادرة
الحالات التي يكون فيها المطلوب "صقل" التحسينات المطلوب إجراؤها.

-fno- الافتراضي- مضمنة
لا تجعل وظائف الأعضاء مضمنة بشكل افتراضي لمجرد أنها محددة بالداخل
نطاق الفئة (C ++ فقط). خلاف ذلك ، عندما تحدد -O، وظائف العضو المحددة
يتم تصنيف داخل نطاق الفئة بشكل افتراضي ؛ على سبيل المثال ، لا تحتاج إلى إضافة مضمنة
أمام اسم وظيفة العضو.

-fno- تأجيل البوب
قم دائمًا بإخراج الوسيطات إلى كل استدعاء دالة بمجرد عودة هذه الوظيفة. ل
الآلات التي يجب أن تفرقع الوسائط بعد استدعاء دالة ، يسمح المترجم عادة
تتراكم الوسائط على المكدس لعدة استدعاءات للوظائف وتنبثق عنها جميعًا
ذات مرة.

معاق على المستويات -O, -O2, -O3, -أوس.

- تكاثر
قم بإجراء تمريرة انتشار أمامية على RTL. يحاول التمرير الجمع بين أمرين
ويتحقق مما إذا كان يمكن تبسيط النتيجة. إذا كان فتح الحلقة نشطًا ، يتم تمرير مرتين
يتم تنفيذ والثاني مجدول بعد فتح الحلقة.

يتم تمكين هذا الخيار افتراضيًا عند مستويات التحسين -O, -O2, -O3, -أوس.

-فب-عقد =نمط
-ffp- عقد = إيقاف تعطيل انكماش تعبير الفاصلة العائمة. -ffp-Contract = سريع
تمكن من تقلص تعبير النقطة العائمة مثل تشكيل الجمع المضاعف المدمج
العمليات إذا كان الهدف لديه دعم محلي لها. -ffp- عقد = تشغيل تمكن
تقلص تعبير الفاصلة العائمة إذا كان مسموحًا به بواسطة معيار اللغة. هذا هو
لم يتم تنفيذه حاليًا ومعاملته على قدم المساواة -ffp- عقد = إيقاف.

الافتراضي هو -ffp-Contract = سريع.

- مؤشر الإطار
لا تحتفظ بمؤشر الإطار في سجل للوظائف التي لا تحتاج إلى واحد. هذه
يتجنب التعليمات الخاصة بحفظ مؤشرات الإطار وإعدادها واستعادتها ؛ كما أنه يجعل
يتوفر سجل إضافي في العديد من الوظائف. It أيضا يجعل التصحيح مستحيل on
بعض آلات.

في بعض الأجهزة ، مثل VAX ، ليس لهذه العلامة أي تأثير ، لأن المعيار
يتعامل تسلسل الاستدعاء تلقائيًا مع مؤشر الإطار ولا يتم حفظ أي شيء بواسطة
التظاهر غير موجود. ماكرو وصف الجهاز "FRAME_POINTER_REQUIRED"
يتحكم في ما إذا كان الجهاز المستهدف يدعم هذه العلامة.

بدءًا من إصدار GCC 4.6 ، الإعداد الافتراضي (عند عدم التحسين للحجم) لـ
تم تغيير أهداف Linux x32 86 بت و Darwin x32 86 بت إلى
- مؤشر الإطار. يمكن إعادة الإعداد الافتراضي إلى -fno-حذف-مؤشر الإطار by
تكوين GCC مع - مؤشر الإطار التمكين خيار التكوين.

ممكن على المستويات -O, -O2, -O3, -أوس.

-تحسين- مكالمات الأخوة
تحسين المكالمات المتكررة للأخوة والذيل.

ممكن على المستويات -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.

الافتراضي هو -فرع-عد-ريج.

-fno-وظيفة-CSE
لا تضع عناوين الوظائف في السجلات ؛ اجعل كل تعليمات تستدعي أ
وظيفة ثابتة تحتوي على عنوان الوظيفة صراحة.

ينتج عن هذا الخيار كود أقل كفاءة ، ولكن بعض الاختراقات الغريبة التي تغير امتداد
قد يتم الخلط بين إخراج المجمّع من خلال التحسينات التي يتم إجراؤها عندما يكون هذا الخيار
غير مستعمل.

الافتراضي هو -وظيفة- CSE

-fno-صفر-تهيئة-في-bss
إذا كان الهدف يدعم قسم BSS ، فإن GCC بشكل افتراضي يضع المتغيرات التي هي
تهيئته إلى الصفر في BSS. هذا يمكن أن يوفر مساحة في الكود الناتج.

يقوم هذا الخيار بإيقاف تشغيل هذا السلوك لأن بعض البرامج تعتمد بشكل صريح على المتغيرات
الذهاب إلى قسم البيانات. على سبيل المثال ، حتى يتمكن الملف التنفيذي الناتج من العثور على ملف
بداية هذا القسم و / أو وضع افتراضات بناءً على ذلك.

الافتراضي هو -fzero- تهيئة- في- bss.

-fmudflap -fmudflapth -fmudflapir
للواجهات الأمامية التي تدعمها (C و C ++) ، صك كل مؤشر / مصفوفة محفوفة بالمخاطر
عمليات إلغاء المراجع ، وبعض دالات سلسلة / كومة المكتبة القياسية ، وبعض وظائف أخرى
التركيبات المرتبطة باختبارات المدى / الصلاحية. يجب أن تكون الوحدات المجهزة بهذه الطريقة
محصن ضد الفيضانات العازلة ، واستخدام الكومة غير الصالحة ، وبعض فئات C / C ++ الأخرى
أخطاء البرمجة. تعتمد الأجهزة على مكتبة وقت تشغيل منفصلة
(com.libmudflap) ، والتي سيتم ربطها ببرنامج إذا -fmudflap يتم إعطاؤه في وقت الارتباط.
يتم التحكم في سلوك وقت تشغيل البرنامج المُجهز بواسطة MUDFLAP_OPTIONS
متغيرات البيئة. راجع "env MUDFLAP_OPTIONS = -help a.out" للتعرف على خياراته.

استعمل -fmudflapth بدلا من -fmudflap للترجمة والربط إذا كان برنامجك متعدد
مترابطة. يستخدم -fmudflapir، بالإضافة إلى -fmudflap or -fmudflapth، إذا
يجب أن تتجاهل الأجهزة قراءة المؤشر. ينتج عن هذا أجهزة أقل (و
وبالتالي تنفيذ أسرع) ولا يزال يوفر بعض الحماية ضد الذاكرة الكاملة
يكتب المفسد ، ولكنه يسمح بقراءة البيانات بشكل خاطئ للنشر داخل البرنامج.

-الخيط القفزات
قم بإجراء التحسينات حيث نتحقق لمعرفة ما إذا كانت هناك قفزة في الفروع إلى موقع حيث
تم العثور على مقارنة أخرى مدرجة في الأول. إذا كان الأمر كذلك ، فإن الفرع الأول هو
إعادة توجيه إما إلى وجهة الفرع الثاني أو نقطة على الفور
اتباعها ، اعتمادًا على ما إذا كان الشرط معروفًا بصحته أو خطأه.

ممكن على المستويات -O2, -O3, -أوس.

- أنواع الانقسام العريض
عند استخدام نوع يشغل عدة سجلات ، مثل "long long" على 32 بت
النظام ، وتقسيم السجلات عن بعضها البعض وتخصيصها بشكل مستقل. هذا عادة
يولد كودًا أفضل لتلك الأنواع ، لكنه قد يجعل تصحيح الأخطاء أكثر صعوبة.

ممكن على المستويات -O, -O2, -O3, -أوس.

القفزات -fcse- متابعة
في التخلص من التعبير الجزئي الشائع (CSE) ، قم بفحص تعليمات القفز عندما يكون ملف
لم يتم الوصول إلى هدف القفزة بواسطة أي مسار آخر. على سبيل المثال ، عند مواجهة محرك البحث المخصص
عبارة "if" مع شرط "آخر" ، سيتبع محرك البحث المخصص القفزة عند الشرط
اختبار خاطئ.

ممكن على المستويات -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 تم تمكينه ، سيحاول التخلص من التعبيرات الفرعية الشائعة العالمية
نقل الأحمال التي تقتلها المتاجر فقط إلى نفسها. هذا يسمح بحلقة
يحتوي على تسلسل تحميل / تخزين ليتم تغييره إلى حمل خارج الحلقة ، و
نسخ / تخزين داخل الحلقة.

يتم التمكين افتراضيًا عند تمكين gcse.

-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 ، تعيين الأعلام وتعليمات القيمة المطلقة ، وبعض الحيل قابلة للتنفيذ
بواسطة الحساب القياسي. استخدام التنفيذ المشروط على الرقائق أينما كانت
متاح يتحكم فيه "if-conversion2".

ممكن على المستويات -O, -O2, -O3, -أوس.

-fif- التحويل 2
استخدم التنفيذ الشرطي (عند توفره) لتحويل القفزات الشرطية إلى
معادلات دون فرع.

ممكن على المستويات -O, -O2, -O3, -أوس.

-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, -أوس.

- تحسينات غير مكلفة
قم بإجراء عدد من التحسينات الثانوية باهظة الثمن نسبيًا.

ممكن على المستويات -O2, -O3, -أوس.

-حر
حاول إزالة تعليمات التمديد الزائدة. هذا مفيد بشكل خاص ل
بنية x86-64 التي تمتد ضمنيًا إلى الصفر في سجلات 64 بت بعد
الكتابة إلى النصف السفلي 32 بت.

ممكّن لـ x86 على المستويات -O2, -O3.

-تحسين-تسجيل-الخطوة
-الحفظ
محاولة إعادة تعيين أرقام التسجيل في تعليمات النقل ومعاملات أخرى
تعليمات بسيطة من أجل تعظيم مقدار ربط التسجيل. هذا هو
مفيد بشكل خاص على الأجهزة ذات التعليمات ذات المعاملين.

ملاحظات -الحفظ و -تحسين-تسجيل-الخطوة هي نفس التحسين.

ممكن على المستويات -O2, -O3, -أوس.

خوارزمية فيرا =خوارزمية
استخدم خوارزمية التلوين المحددة لمخصص التسجيل المتكامل. ال
خوارزمية يمكن أن تكون الحجة الأولوية، والتي تحدد أولوية تلوين Chow ، أو CB,
الذي يحدد تلوين Chaitin-Briggs. لم يتم تنفيذ تلوين Chaitin-Briggs
لجميع البنى ، ولكن بالنسبة لتلك الأهداف التي تدعمها ، فهذا هو الإعداد الافتراضي
لأنه يولد شفرة أفضل.

منطقة فيرا =منطقة
استخدم مناطق محددة لمخصص السجل المتكامل. ال منطقة حجة
يجب أن يكون أحد العناصر التالية:

من جميع استخدم كل الحلقات كمناطق تخصيص التسجيل. هذا يمكن أن يعطي أفضل النتائج لـ
آلات ذات مجموعة تسجيل صغيرة و / أو غير منتظمة.

مختلط
استخدم جميع الحلقات باستثناء الحلقات ذات الضغط المسجل الصغير كمناطق. هذه
تعطي القيمة عادةً أفضل النتائج في معظم الحالات ومعظم الهياكل ، و
يتم تمكينه افتراضيًا عند التجميع باستخدام تحسين السرعة (-O, -O2، ...).

صورة واحدة؟ استخدم جميع الوظائف كمنطقة واحدة. ينتج عن هذا عادةً أصغر رمز
الحجم ، ويتم تمكينه افتراضيًا من أجل -أوس or -O0.

- ضغط حلقة فيرا
استخدم IRA لتقييم ضغط التسجيل في الحلقات لاتخاذ قرارات تحريك ثوابت الحلقة.
ينتج عن هذا الخيار عادةً إنشاء رمز أسرع وأصغر على الأجهزة ذات
ملفات التسجيل الكبيرة (> = 32 تسجيلات) ، لكنها يمكن أن تبطئ المترجم.

يتم تمكين هذا الخيار على المستوى -O3 لبعض الأهداف.

-fno- آيرا- حصة- حفظ- فتحات
قم بتعطيل مشاركة فتحات المكدس المستخدمة لحفظ السجلات الثابتة المستخدمة في المكالمة التي تعيش من خلالها
مكالمة. يحصل كل سجل صلب على فتحة مكدس منفصلة ، ونتيجة لذلك يتم تكديس الوظائف
الإطارات أكبر.

فتحات انسكاب الفتحات
تعطيل مشاركة فتحات المكدس المخصصة للسجلات الزائفة. كل سجل زائف
التي لا تحصل على سجل ثابت تحصل على فتحة مكدس منفصلة ، ونتيجة لذلك وظيفة
إطارات المكدس أكبر.

-فيرا- مطوّل =n
التحكم في الإسهاب في ملف التفريغ لمخصص السجل المتكامل. ال
القيمة الافتراضية هي 5. إذا كانت القيمة n أكبر أو يساوي 10 ، يتم إرسال إخراج التفريغ
إلى stderr باستخدام نفس تنسيق n ناقص 10.

- فرع متأخر
إذا كانت مدعومة للجهاز الهدف ، فحاول إعادة ترتيب التعليمات لاستغلالها
فتحات التعليمات متاحة بعد تعليمات الفرع المتأخرة.

ممكن على المستويات -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 (الدورات) التي سيتم فحصها للاعتماد على توقف
إن هذا مرشح للإزالة المبكرة من قائمة انتظار الأسماء المتوقفة. هذه
له تأثير فقط أثناء تمرير الجدولة الثاني ، وفقط إذا
-fsched-المتوقفة-insns . -fno-Sched-stalled-insns-dep ما يعادل
-fsched-stalled-insns-dep = 0. -fsched-المتوقفة-insns-dep بدون قيمة يساوي
إلى -fsched-stalled-insns-dep = 1.

-fsched2-استخدام-superblocks
عند الجدولة بعد تخصيص التسجيل ، استخدم خوارزمية جدولة superblock.
تسمح جدولة Superblock بالحركة عبر حدود الكتلة الأساسية مما ينتج عنه بشكل أسرع
جداول. هذا الخيار تجريبي ، حيث لا تستخدم جميع أوصاف الجهاز في GCC
نموذج وحدة المعالجة المركزية بشكل وثيق بما يكفي لتجنب النتائج غير الموثوقة من الخوارزمية.

هذا منطقي فقط عند الجدولة بعد تخصيص السجل ، أي مع
-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 is
تشغيل.

-الجدولة- الأنابيب- الخارجية- الحلقات
عندما حلقات الأنابيب أثناء الجدولة الانتقائية ، وكذلك الحلقات الخارجية لخط الأنابيب. هذه
الخيار ليس له أي تأثير حتى -الجدولة- الأنابيب قيد التشغيل.

-لف شرينك
تنبعث مقدمات الوظيفة فقط قبل أجزاء من الوظيفة التي تحتاج إليها ، وليس عند
الجزء العلوي من الوظيفة. يتم تمكين هذه العلامة بشكل افتراضي في -O وأعلى.

-fcaller- يحفظ
تمكين القيم التي سيتم تخصيصها في السجلات التي سيتم ضربها بواسطة استدعاءات الوظائف ،
من خلال إصدار تعليمات إضافية لحفظ واستعادة السجلات حول هذه المكالمات.
يتم إجراء هذا التخصيص فقط عندما يبدو أنه ينتج رمزًا أفضل مما قد يحدث
وإلا يتم إنتاجها.

يتم تمكين هذا الخيار دائمًا افتراضيًا على أجهزة معينة ، عادةً تلك التي تحتوي على
لا توجد سجلات محفوظة عند الاتصال لاستخدامها بدلاً من ذلك.

ممكن على المستويات -O2, -O3, -أوس.

-مجمع-المكدس-التعديلات
يتتبع تعديلات المكدس (الدفعات والملوثات العضوية الثابتة) ويكدس مراجع الذاكرة ثم يحاول
للعثور على طرق لدمجها.

يتم التمكين افتراضيًا في -O1 وأعلى.

-الحفاظ-المكدس
محاولة تقليل استخدام المكدس. سيحاول المترجم استخدام مساحة أقل للمكدس ،
حتى لو أدى ذلك إلى جعل البرنامج أبطأ. هذا الخيار يعني تعيين كومة كبيرة-
هيكل المعلمة 100 و نمو إطار مكدس كبير المعلمة إلى 400.

-ftree-ressoc
قم بإعادة التجميع على الأشجار. يتم تمكين هذه العلامة بشكل افتراضي في -O وأعلى.

-ftree- قبل
قم بإزالة التكرار الجزئي (PRE) على الأشجار. يتم تمكين هذه العلم من قبل
الافتراضي في -O2 و -O3.

-ftree- جزئية- قبل
اجعل التخلص الجزئي من التكرار (PRE) أكثر عدوانية. يتم تمكين هذه العلم من قبل
الافتراضي في -O3.

-ftree- forwprop
نفذ التكاثر الأمامي على الأشجار. يتم تمكين هذه العلامة بشكل افتراضي في -O و
أعلى.

-ftree- فري
قم بإزالة التكرار الكامل (FRE) على الأشجار. الفرق بين FRE و
PRE هو أن FRE لا تراعي سوى التعبيرات المحسوبة على جميع المسارات المؤدية إلى
الحساب الزائد. هذا التحليل أسرع من PRE ، على الرغم من أنه يعرض عددًا أقل
الزوائد. يتم تمكين هذه العلامة بشكل افتراضي في -O وأعلى.

-فتري-بيبروب
قم برفع الأحمال من المؤشرات الشرطية على الأشجار. تم تمكين هذا المرور من قبل
الافتراضي في -O وأعلى.

-ftree- نسخة- الدعامة
قم بتنفيذ عملية نشر النسخ على الأشجار. يزيل هذا التمرير عمليات النسخ غير الضرورية.
يتم تمكين هذه العلامة بشكل افتراضي في -O وأعلى.

-فيبا-نقي-كونست
اكتشف الوظائف النقية أو الثابتة. يتم التمكين افتراضيًا في -O وأعلى.

-فيبا المرجع
اكتشف المتغيرات الثابتة التي لا تفلت ولا يمكنها الهروب من وحدة الترجمة.
يتم التمكين افتراضيًا في -O وأعلى.

-فيبا- pta
إجراء تحليل المؤشر بين الإجراءات والتعديل بين الإجراءات و
التحليل المرجعي. يمكن أن يتسبب هذا الخيار في زيادة الذاكرة واستخدام وقت الترجمة
وحدات ترجمة كبيرة. لا يتم تمكينه افتراضيًا على أي مستوى تحسين.

-فيبا الشخصي
تنفيذ انتشار ملف التعريف بين الإجراءات. وظائف تسمى فقط من البرد
يتم تمييز الوظائف على أنها باردة. يتم أيضًا تنفيذ الوظائف مرة واحدة (مثل "بارد" ،
"noreturn" ، المنشئات الثابتة أو المدمرة). وظائف باردة و
حلقة أقل من أجزاء من الوظائف التي يتم تنفيذها مرة واحدة يتم تحسينها من أجل الحجم. تم التمكين بواسطة
الافتراضي في -O وأعلى.

-فيبا- CP
أداء التكاثر المستمر بين الإجراءات. هذا التحسين يحلل البرنامج
لتحديد متى تكون القيم التي يتم تمريرها إلى الوظائف ثوابت ثم يتم تحسينها
وفقا لذلك. يمكن أن يؤدي هذا التحسين إلى زيادة الأداء بشكل كبير إذا كان
يحتوي التطبيق على ثوابت تم تمريرها إلى الوظائف. يتم تمكين هذه العلامة بشكل افتراضي في
-O2, -أوس و -O3.

-فيبا- cp- استنساخ
أداء وظيفة الاستنساخ لجعل التكاثر المستمر بين الإجراءات أقوى. متي
ممكّنًا ، سيؤدي التكاثر المستمر بين الإجراءات إلى أداء وظيفة الاستنساخ عندما
يمكن استدعاء الوظيفة المرئية خارجيًا باستخدام وسيطات ثابتة. لأن هذا
يمكن أن يؤدي التحسين إلى إنشاء نسخ متعددة من الوظائف ، وقد يزيد ذلك بشكل ملحوظ
حجم الكود (انظر - معلمة ipcp- وحدة النمو =قيمنا). يتم تمكين هذه العلامة بشكل افتراضي في
-O3.

-فيبا-ماتريكس-ريورج
إجراء تسوية المصفوفة ونقلها. تحاول تسوية المصفوفة استبدال ملف
مصفوفة ذات أبعاد م مع مصفوفة أبعادها المكافئة ، حيث ن <م. هذه
يقلل من مستوى المراوغة اللازمة للوصول إلى عناصر المصفوفة. ال
التحسين الثاني هو نقل المصفوفة ، والذي يحاول تغيير ترتيب
أبعاد المصفوفة من أجل تحسين موقع التخزين المؤقت. كلا التحسينات تحتاج إلى
-كل-البرنامج علم. يتم تمكين التحويل فقط إذا تم تمكين معلومات التنميط
متاح.

-فتري-بالوعة
أداء حركة المتجر إلى الأمام على الأشجار. يتم تمكين هذه العلامة بشكل افتراضي في -O و
أعلى.

-ftree-بت-ccp
قم بتنفيذ انتشار ثابت للبت الشرطي المتناثر على الأشجار ومؤشر الانتشار
معلومات المحاذاة. يعمل هذا التمرير فقط على المتغيرات العددية المحلية وهو
ممكّن افتراضيًا في -O وأعلى. يتطلب ذلك -فتري- ccp .

-فتري- ccp
قم بإجراء انتشار ثابت شرطي متناثر (CCP) على الأشجار. هذا يمر فقط
يعمل على المتغيرات العددية المحلية ويتم تمكينه افتراضيًا في -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 مع - مع- ppl و - مع عباءة إلى
تمكين البنية التحتية لتحويل حلقة الجرافيت.

- التبادل الطائر
قم بإجراء تحويلات تبادل الحلقة على الحلقات. تبديل حلقتين متداخلتين
يبدل الحلقات الداخلية والخارجية. على سبيل المثال ، إعطاء حلقة مثل:

هل ي = 1 ، م
هل أنا = 1 ، ن
أ (ي ، أنا) = أ (ي ، أنا) * ج
إندو
إندو

سيحول تبادل الحلقة الحلقة كما لو كان المستخدم قد كتب:

هل أنا = 1 ، ن
هل ي = 1 ، م
أ (ي ، أنا) = أ (ي ، أنا) * ج
إندو
إندو

والتي يمكن أن تكون مفيدة عندما تكون "N" أكبر من ذاكرات التخزين المؤقت ، لأنه في Fortran ،
يتم تخزين عناصر المصفوفة في الذاكرة بشكل متجاور حسب العمود ، والأصل
تتكرر الحلقة عبر الصفوف ، مما قد يؤدي إلى فقدان ذاكرة التخزين المؤقت عند كل وصول. هذه
ينطبق التحسين على جميع اللغات التي تدعمها GCC ولا يقتصر على
فورتران. لاستخدام تحويل الكود هذا ، يجب تكوين GCC مع - مع- ppl
و - مع عباءة لتمكين البنية التحتية لتحويل حلقة الجرافيت.

-قريب-شريط-الألغام
قم بإجراء تحويلات تعدين الشريط الحلقي على الحلقات. قطاع التعدين يقسم حلقة إلى
حلقتان متداخلتان. الحلقة الخارجية لها خطوات مساوية لحجم الشريط والداخلي
تحتوي الحلقة على خطوات واسعة من الحلقة الأصلية داخل الشريط. يمكن تغيير طول الشريط
يستخدم ال حلقة-كتلة-حجم البلاط معامل. على سبيل المثال ، إعطاء حلقة مثل:

هل أنا = 1 ، ن
أ (أنا) = أ (أنا) + ج
إندو

سيعمل تعدين الشريط الحلقي على تحويل الحلقة كما لو كان المستخدم قد كتب:

هل II = 1 ، N ، 51
DO I = II، min (II + 50، N)
أ (أنا) = أ (أنا) + ج
إندو
إندو

ينطبق هذا التحسين على جميع اللغات التي تدعمها GCC ولا يقتصر على
فورتران. لاستخدام تحويل الكود هذا ، يجب تكوين GCC مع - مع- ppl
و - مع عباءة لتمكين البنية التحتية لتحويل حلقة الجرافيت.

- كتلة طيارة
قم بإجراء تحويلات منع الحلقة على الحلقات. حظر مناجم الشريط كل حلقة في
عش الحلقة بحيث تتلاءم الذاكرة التي تصل إلى حلقات العنصر داخل ذاكرات التخزين المؤقت. ال
يمكن تغيير طول الشريط باستخدام حلقة-كتلة-حجم البلاط معامل. على سبيل المثال،
معطى حلقة مثل:

هل أنا = 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 مع - مع- ppl
و - مع عباءة لتمكين البنية التحتية لتحويل حلقة الجرافيت.

-fgraphite- الهوية
تمكين تحويل الهوية للجرافيت. لكل SCoP نقوم بإنشاء ملف
تمثيل متعدد السطوح وتحويله مرة أخرى إلى شكل. استخدام -fgraphite- الهوية
يمكننا التحقق من تكاليف أو فوائد GIMPLE -> GRAPHITE -> GIMPLE التحول.
يتم أيضًا تنفيذ بعض التحسينات الدنيا بواسطة منشئ الكود CLooG ، مثل الفهرس
تقسيم وإلغاء رمز الميت في الحلقات.

-فلوب-تتسطح
يزيل بنية تداخل الحلقة: يحول عش الحلقة إلى حلقة مفردة. هذه
يمكن أن يكون التحويل مفيدًا كتحويل تمكين للتوجيه و
الموازاة. هذه الميزة تجريبية. لاستخدام تحويل الكود هذا ، GCC
يجب تكوينه مع - مع- ppl و - مع عباءة لتمكين حلقة الجرافيت
البنية التحتية للتحول.

-قلب-موازاة الكل
استخدم تحليل اعتماد بيانات الجرافيت لتحديد الحلقات التي يمكن موازنتها.
قم بموازنة جميع الحلقات التي يمكن تحليلها بحيث لا تحتوي على تبعيات تحمل الحلقة
دون التحقق من أنه من المربح موازنة الحلقات.

-فحص-البيانات-الدوائر
قارن نتائج العديد من أدوات تحليل الاعتماد على البيانات. يستخدم هذا الخيار ل
تصحيح أخطاء محللي اعتماد البيانات.

-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. قد يضر هذا بمعلومات التصحيح من هذا القبيل
المتغيرات المضمنة ، لكنها ستبقي متغيرات الوظيفة المضمنة بعيدًا عن
بعضها البعض ، بحيث تزداد احتمالية احتوائها على القيم المتوقعة في ملف
جلسة التصحيح. كان هذا هو الإعداد الافتراضي في إصدارات GCC الأقدم من 4.7.

-ftree-coalesce-vars
أخبر بطاقة اسم النسخة (انظر -ftree- نسخة) لمحاولة الجمع بين مستخدم صغير-
المتغيرات المعرفة أيضا ، بدلا من مجرد مؤقت المترجم. هذا قد يحد بشدة
القدرة على تصحيح أخطاء برنامج محسن تم تجميعه مع -fno-var- تتبع-التخصيصات.
في النموذج المنفي ، تمنع هذه العلامة اندماج SSA لمتغيرات المستخدم ، بما في ذلك
مضمنة منها. يتم تمكين هذا الخيار افتراضيًا.

-فتري-تير
إجراء استبدال مؤقت للتعبير أثناء SSA-> المرحلة العادية. غير مرتبطة
يتم استبدال المؤقتات استخدام / تعريف مفرد في موقع استخدامها مع تعريفها
التعبير. ينتج عن هذا رمز غير GIMPLE ، ولكنه يعطي الموسعات أكثر من ذلك بكثير
أشجار معقدة للعمل عليها تؤدي إلى جيل أفضل من RTL. يتم تمكين هذا بواسطة
الافتراضي في -O وأعلى.

-ftree-vectorize
أداء توجيه حلقة على الأشجار. يتم تمكين هذه العلامة بشكل افتراضي في -O3.

-ftree-slp-vectorize
إجراء توجيه الكتلة الأساسي على الأشجار. يتم تمكين هذه العلامة بشكل افتراضي في -O3 و
متى -ftree-vectorize .

-ftree- vect- حلقة الإصدار
قم بتنفيذ إصدار الحلقة عند القيام بتوجيه الحلقة على الأشجار. عندما تظهر حلقة
لتكون قابلة للتحويل فيما عدا أنه لا يمكن تحديد محاذاة البيانات أو الاعتماد على البيانات
في وقت الترجمة ، ثم يتم إنشاء إصدارات متجهية وغير متجهية من الحلقة
جنبًا إلى جنب مع فحوصات وقت التشغيل للمحاذاة أو التبعية للتحكم في الإصدار
أعدم. يتم تمكين هذا الخيار افتراضيًا باستثناء المستوى -أوس حيث يتم تعطيله.

-تأثير- نموذج التكلفة
تمكين نموذج التكلفة للتوجيه.

-ftree-vrp
قم بتنفيذ نشر نطاق القيمة على الأشجار. هذا مشابه للانتشار المستمر
تمرير ، ولكن بدلاً من القيم ، يتم نشر نطاقات القيم. هذا يسمح لـ
أمثلية لإزالة عمليات تدقيق النطاق غير الضرورية مثل عمليات التحقق من الصفيف المقيدة والمؤشر الفارغ
الفحوصات. يتم تمكين هذا افتراضيًا في -O2 وأعلى. مؤشر فارغ تحقق من الحذف
يتم فقط إذا -fdelete-null-pointer-check-pointer (تحقق من -fdelete-null-pointer-pointer) .

-ftracer
إجراء تكرار الذيل لتكبير حجم الكتلة الفائقة. يبسط هذا التحول
تدفق التحكم في الوظيفة مما يسمح بالتحسينات الأخرى للقيام بعمل أفضل.

حلقات -funroll
قم بفك الحلقات التي يمكن تحديد عدد تكراراتها في وقت الترجمة أو بناءً عليها
الدخول إلى الحلقة. حلقات -funroll يدل -frerun-cse-بعد الحلقة. هذا الخيار يجعل
رمز أكبر ، وقد يجعله يعمل بشكل أسرع أو لا.

-funroll- جميع الحلقات
قم بفك جميع الحلقات ، حتى إذا كان عدد التكرارات فيها غير مؤكد عندما تكون الحلقة
دخلت. هذا عادة ما يجعل البرامج تعمل بشكل أبطأ. -funroll- جميع الحلقات يعني أن
نفس الخيارات مثل حلقات -funroll,

-fsplit-ivs-in-unroller
تمكن من التعبير عن قيم متغيرات الاستقراء في التكرارات اللاحقة لـ
حلقة غير منكرة باستخدام القيمة في التكرار الأول. هذا يكسر التبعية الطويلة
السلاسل ، وبالتالي تحسين كفاءة تمريرات الجدولة.

مزيج من -ويب وغالبًا ما تكون CSE كافية للحصول على نفس التأثير. لكن
في الحالات التي يكون فيها جسم الحلقة أكثر تعقيدًا من كتلة أساسية واحدة ، فهذا ليس كذلك
موثوق بها. كما أنه لا يعمل على الإطلاق في بعض البنى بسبب
القيود في بطاقة CSE.

يتم تمكين هذا التحسين بشكل افتراضي.

متغير التوسع في unroller
باستخدام هذا الخيار ، سيقوم المترجم بإنشاء نسخ متعددة من بعض المتغيرات المحلية
عند فتح حلقة يمكن أن ينتج عنها رمز متفوق.

-تضمين جزئيًا
أجزاء مضمنة من الوظائف. هذا الخيار له أي تأثير فقط عندما يتم تضمين نفسه
تشغيل بواسطة وظائف الخطوط الدقيقة or وظائف صغيرة الحجم خيارات.

ممكن على المستوى -O2.

- المشتركة التنبؤية
قم بإجراء تحسين تنبؤي مشترك ، أي إعادة استخدام الحسابات (على وجه الخصوص
أحمال الذاكرة والمخازن) التي أجريت في التكرارات السابقة للحلقات.

يتم تمكين هذا الخيار على المستوى -O3.

-fprefetch- حلقة- صفائف
إذا كان الجهاز المستهدف مدعومًا ، فقم بإنشاء تعليمات لجلب الذاكرة مسبقًا إلى
تحسين أداء الحلقات التي تصل إلى المصفوفات الكبيرة.

قد ينتج عن هذا الخيار رمز أفضل أو أسوأ ؛ النتائج تعتمد بشكل كبير على
بنية الحلقات داخل الكود المصدري.

معاق على المستوى -أوس.

-fno-ثقب الباب
-fno-ثقب الباب2
تعطيل أي تحسينات ثقب الباب الخاصة بالجهاز. الفرق بين
-fno-ثقب الباب و -fno-ثقب الباب2 في كيفية تنفيذها في المترجم ؛ بعض
تستخدم الأهداف أحدهما ، والبعض الآخر يستخدم الآخر ، والبعض الآخر يستخدم كلاهما.

-فثقب الباب يتم تمكينه افتراضيًا. -ف ثقب الباب2 ممكن على المستويات -O2, -O3, -أوس.

احتمالية عدم وجود فرع تخمين
لا تخمن احتمالات الفرع باستخدام الاستدلال.

سيستخدم GCC الاستدلال لتخمين احتمالات الفرع إذا لم يتم توفيرها بواسطة
ملاحظات التنميط (-fprofile- أقواس). تستند هذه الاستدلالات على تدفق التحكم
رسم بياني. إذا تم تحديد بعض احتمالات الفرع بواسطة __بناء_توقع، ثم
سيتم استخدام الاستدلال لتخمين احتمالات الفرع لبقية تدفق التحكم
الرسم البياني ، مع أخذ __بناء_توقع المعلومات في الحساب. التفاعلات بين
الاستدلال و __بناء_توقع يمكن أن تكون معقدة ، وفي بعض الحالات ، قد يكون من المفيد
تعطيل الاستدلال بحيث آثار __بناء_توقع أسهل
تفهم.

الافتراضي هو -fguess- فرع- احتمال على المستويات -O, -O2, -O3, -أوس.

كتل -freorder
أعد ترتيب الكتل الأساسية في الوظيفة المترجمة لتقليل عدد ما تم التقاطه
الفروع وتحسين منطقة الكود.

ممكن على المستويات -O2, -O3.

كتل-فريدر-والتقسيم
بالإضافة إلى إعادة ترتيب الكتل الأساسية في الوظيفة المترجمة ، من أجل تقليل
عدد الفروع والأقسام المأخوذة من الكتل الأساسية الساخنة والباردة إلى أقسام منفصلة
من ملفات التجميع و. o لتحسين أداء موقع الترحيل والتخزين المؤقت.

يتم إيقاف تشغيل هذا التحسين تلقائيًا في وجود معالجة الاستثناء ،
لأقسام linkonce ، وللوظائف التي لها سمة قسم محددة بواسطة المستخدم وعلى أي منها
العمارة التي لا تدعم الأقسام المسماة.

وظائف -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" تصبح وظائف ثابتة ويتم تحسينها في الواقع
بشكل أكثر عدوانية من قبل محسنو الطب البديل. لو الذهب يستخدم كمكوِّن إضافي للرابط ،
تتم إضافة سمات "externally_visible" تلقائيًا إلى الوظائف (ليست متغيرة بعد
بسبب التيار الذهب المشكلة) التي يتم الوصول إليها خارج كائنات LTO وفقًا لـ
تم إنتاج ملف الدقة بواسطة الذهب. للروابط الأخرى التي لا يمكن أن تولد القرار
ملف ، لا تزال سمات "مرئية_خارجية" واضحة ضرورية. بينما هذا الخيار
يعادل الاستخدام الصحيح للكلمة الأساسية "الثابتة" للبرامج المكونة من
ملف واحد ، بالاقتران مع الخيار -فلتو يمكن استخدام هذا العلم لتجميع العديد
برامج ذات نطاق أصغر لأن الوظائف والمتغيرات تصبح محلية للجميع
وحدة الترجمة المدمجة ، وليس لملف المصدر الواحد نفسه.

هذا الخيار يعني - كامل الملف لبرامج فورتران.

-فلتو [=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.

الشيء الوحيد المهم الذي يجب أخذه في الاعتبار هو تمكين تحسينات وقت الارتباط
-فلتو يجب تمرير العلامة إلى كل من أوامر التحويل البرمجي والرابط.

لجعل تحسين البرنامج بأكمله فعالا ، من الضروري جعل بعض الشيء كله
افتراضات البرنامج. يحتاج المترجم إلى معرفة الوظائف والمتغيرات التي يمكن أن تكون
يتم الوصول إليها بواسطة المكتبات ووقت التشغيل خارج الوحدة المُحسَّنة لوقت الارتباط. متي
بدعم من الرابط ، البرنامج المساعد للرابط (انظر -fuse-linker-plugin) يمر، يمرر، اجتاز بنجاح
معلومات للمترجم عن الرموز المستخدمة والمرئية خارجيًا. عندما
المكوِّن الإضافي للرابط غير متوفر ، -كل-البرنامج يجب استخدامها للسماح للمترجم
لإجراء هذه الافتراضات ، مما يؤدي إلى اتخاذ قرارات تحسين أكثر صرامة.

لاحظ أنه عندما يتم تجميع ملف بامتداد -فلتو، ملف الكائن الذي تم إنشاؤه أكبر من
ملف كائن عادي لأنه يحتوي على رموز بايت GIMPLE والرمز النهائي المعتاد.
هذا يعني أنه يمكن ربط ملفات الكائنات التي تحتوي على معلومات LTO ككائن عادي
الملفات. لو -فلتو لم يتم تمريره إلى الرابط ، ولا توجد تحسينات بين اللغات
مطبقة.

بالإضافة إلى ذلك ، فإن علامات التحسين المستخدمة في تجميع الملفات الفردية ليست كذلك
تتعلق بالضرورة بتلك المستخدمة في وقت الارتباط. على سبيل المثال،

دول مجلس التعاون الخليجي -c -O0 -flto foo.c
دول مجلس التعاون الخليجي -c -O0-flto bar.c
دول مجلس التعاون الخليجي -o myprog -flto -O3 foo.o bar.o

ينتج عن هذا ملفات كائنات فردية برمز مجمّع غير محسّن ، ولكن ملف
الناتج الثنائي myprog هو الأمثل في -O3. إذا ، بدلاً من ذلك ، فإن الثنائي النهائي هو
ولدت بدون -فلتو، ثم myprog لم يتم تحسينه.

عند إنتاج الملف الثنائي النهائي بـ -فلتو، تطبق GCC فقط تحسينات وقت الارتباط
لتلك الملفات التي تحتوي على رمز بايت. لذلك ، يمكنك مزج ملفات الكائنات ومطابقتها
والمكتبات مع رموز بايت GIMPLE وكود الهدف النهائي. مجلس التعاون الخليجي يختار تلقائيا
الملفات التي سيتم تحسينها في وضع LTO وأي الملفات سيتم ربطها بدون المزيد
معالجة.

هناك بعض إشارات إنشاء الكود التي يحتفظ بها مجلس التعاون الخليجي عند إنشاء رموز بايت ، مثل
يجب استخدامها أثناء مرحلة الارتباط النهائي. حاليا ، الخيارات التالية
يتم حفظها في ملفات GIMPLE bytecode: -fPIC, -مألوف وجميع -m أعلام الهدف.

في وقت الارتباط ، تتم قراءة هذه الخيارات وإعادة تطبيقها. لاحظ أن التيار
لا يقوم التنفيذ بأي محاولة للتعرف على القيم المتضاربة لهذه الخيارات. لو
تحتوي الملفات المختلفة على قيم خيارات متضاربة (على سبيل المثال ، يتم تجميع ملف واحد باستخدام -fPIC
وآخر ليس كذلك) ، يستخدم المترجم ببساطة آخر قيمة تمت قراءتها من الرمز الثانوي
الملفات. يوصى ، إذن ، بتجميع جميع الملفات المشاركة في
نفس الرابط مع نفس الخيارات.

إذا واجهت LTO كائنات ذات ارتباط C تم إعلانه بأنواع غير متوافقة بشكل منفصل
يتم ربط وحدات الترجمة معًا (سلوك غير محدد وفقًا لمعيار ISO C99
6.2.7) ، قد يتم إصدار تشخيص غير مميت. السلوك لا يزال غير محدد في المدى
مرة.

ميزة أخرى لـ LTO هي أنه من الممكن تطبيق تحسينات ما بين الإجراءات
على ملفات مكتوبة بلغات مختلفة. هذا يتطلب الدعم في اللغة الأمامية
نهاية. حاليًا ، يمكن للواجهات الأمامية في C و C ++ و Fortran إصدار GIMPLE
رموز بايت ، لذلك يجب أن يعمل شيء مثل هذا:

دول مجلس التعاون الخليجي -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 إذا كنت تستخدم ملف
رابط مع دعم البرنامج المساعد. لتمكين هذه الميزة ، استخدم العلم -fuse-linker-plugin
في وقت الارتباط:

دول مجلس التعاون الخليجي -o myprog -O2 -flto -fuse-linker-plugin ao bo -lfoo

مع تمكين المكون الإضافي للرابط ، يستخرج الرابط ملفات GIMPLE المطلوبة من
libfoo.a ويمررها إلى دول مجلس التعاون الخليجي الجارية لجعلها جزءًا من المجموع
سيتم تحسين صورة GIMPLE.

إذا كنت لا تستخدم رابطًا مع دعم البرنامج المساعد و / أو لا تقم بتمكين الرابط
البرنامج المساعد ، ثم العناصر الموجودة بداخله libfoo.a يتم استخراجها وربطها كالعادة ، لكنهم
لا تشارك في عملية تحسين LTO.

لا تتطلب تحسينات وقت الارتباط وجود البرنامج بأكمله للعمل.
إذا كان البرنامج لا يتطلب أي رموز ليتم تصديرها ، فمن الممكن دمجها
-فلتو و -كل-البرنامج للسماح للمحسّنين متعددي الإجراءات باستخدام المزيد
افتراضات صارمة قد تؤدي إلى تحسين فرص التحسين. استخدام
-كل-البرنامج ليست هناك حاجة عندما يكون البرنامج المساعد رابط نشط (انظر -fuse-linker-plugin).

لا يقوم التنفيذ الحالي لـ LTO بأي محاولة لإنشاء رمز ثانوي
محمول بين أنواع مختلفة من المضيفين. يتم إصدار ملفات بايت كود وهناك
يعد فحصًا صارمًا للإصدار ، لذلك لن يتم إنشاء ملفات الرمز الثانوي التي تم إنشاؤها في إصدار واحد من GCC
العمل مع إصدار أقدم / أحدث من GCC.

لا يعمل تحسين وقت الارتباط بشكل جيد مع إنشاء معلومات تصحيح الأخطاء.
الجمع بين -فلتو مع -g قيد التجربة حاليًا ومن المتوقع أن ينتج عنه خطأ
النتائج.

إذا قمت بتحديد الاختيارية n، يتم إجراء التحسين وإنشاء الكود في وقت الارتباط
يتم تنفيذه بالتوازي باستخدام n وظائف موازية من خلال استخدام مثبت جعل برنامج.
متغير البيئة جعل يمكن استخدامها لتجاوز البرنامج المستخدم. الافتراضي
قيمة ل n هو 1.

يمكنك أيضا تحديد -flto = خادم العمل لاستخدام وضع خادم عمل GNU make لتحديد
عدد الوظائف الموازية. هذا مفيد عندما يكون Makefile استدعاء GCC بالفعل
تنفيذ بالتوازي. يجب عليك مقدمًا أ + إلى وصفة الأمر في الوالد
Makefile لهذا العمل. من المحتمل أن يعمل هذا الخيار فقط إذا جعل هو صنع غنو.

هذا الخيار معطل افتراضيا

- التقسيم - فلو =ALG
حدد خوارزمية التقسيم المستخدمة بواسطة مُحسِّن وقت الارتباط. القيمة
إما "1to1" لتحديد تقسيم يعكس ملفات المصدر الأصلية أو
"متوازن" لتحديد التقسيم إلى أجزاء متساوية الحجم (كلما أمكن ذلك).
يؤدي تحديد "لا شيء" كخوارزمية إلى تعطيل التقسيم والتدفق بشكل كامل. ال
القيمة الافتراضية هي "متوازنة".

-فلتو-مستوى الضغط =n
يحدد هذا الخيار مستوى الضغط المستخدم للغة الوسيطة المكتوبة
إلى ملفات كائن LTO ، ويكون مفيدًا فقط مع وضع LTO (-فلتو).
القيم الصالحة هي 0 (بدون ضغط) إلى 9 (أقصى ضغط). قيم خارج هذا
يتم تثبيت النطاق على إما 0 أو 9. إذا لم يتم توفير الخيار ، فسيتم توازن افتراضي
يتم استخدام إعداد الضغط.

-التقرير
طباعة تقرير بتفاصيل داخلية عن طريقة عمل مُحسِّن وقت الارتباط. ال
محتويات هذا التقرير تختلف من إصدار إلى آخر. من المفترض أن تكون مفيدة لدول مجلس التعاون الخليجي
للمطورين عند معالجة ملفات الكائنات في وضع LTO (عبر -فلتو).

معطل افتراضيًا.

-fuse-linker-plugin
لتمكين استخدام المكون الإضافي للرابط أثناء تحسين وقت الارتباط. هذا الخيار يعتمد
على دعم البرنامج المساعد في الرابط ، والمتوفر باللون الذهبي أو في GNU ld 2.21 أو
أحدث.

يتيح هذا الخيار استخراج ملفات الكائنات باستخدام رمز بايت GIMPLE خارج المكتبة
أرشيف. يؤدي ذلك إلى تحسين جودة التحسين من خلال عرض المزيد من التعليمات البرمجية على الرابط-
مُحسِّن الوقت. تحدد هذه المعلومات الرموز التي يمكن الوصول إليها خارجيًا
(بواسطة كائن غير LTO أو أثناء الارتباط الديناميكي). نتيجة تحسين جودة التعليمات البرمجية على
الثنائيات (والمكتبات المشتركة التي تستخدم الرؤية المخفية) تشبه
"-كل-البرنامج". ارى -فلتو للحصول على وصف لتأثير هذا العلم وكيفية
استخدامها.

يتم تمكين هذا الخيار افتراضيًا عند تمكين دعم LTO في GCC وتمكين GCC
مهيأ للاستخدام مع المكونات الإضافية الداعمة للرابط (GNU ld 2.21 أو الأحدث أو الذهبي).

-فتات-ليتو الأشياء
كائنات Fat LTO هي ملفات كائن تحتوي على كل من اللغة الوسيطة و
رمز التعليمة. هذا يجعلها قابلة للاستخدام لكل من ربط LTO والربط العادي. هذه
الخيار فعال فقط عند التحويل البرمجي باستخدام -فلتو ويتم تجاهله في وقت الارتباط.

- الدهون - ليتو الأجسام يعمل على تحسين وقت الترجمة مقارنةً بـ LTO العادي ، ولكنه يتطلب
سلسلة أدوات كاملة لتكون على دراية بـ LTO. يتطلب رابط مع دعم البرنامج المساعد رابط
للوظائف الأساسية. بالإضافة إلى ذلك ، تحتاج nm و ar و ranlib إلى دعم الرابط
المكونات الإضافية للسماح ببيئة بناء كاملة الميزات (قادرة على إنشاء ملفات ثابتة
المكتبات ، إلخ).

الافتراضي هو -فتات-ليتو الأشياء ولكن هذا التقصير يهدف إلى التغيير في المستقبل
الإصدارات عندما تصبح البيئات التي تم تمكين المكون الإضافي لها رابطًا أكثر شيوعًا.

-مقارنة-القضاء
بعد تخصيص السجل وتقسيم تعليمات التخصيص بعد التسجيل ، حدد
التعليمات الحسابية التي تحسب أعلام المعالج المشابهة لعملية المقارنة
بناء على هذا الحساب. إذا أمكن ، قم بإزالة عملية المقارنة الصريحة.

ينطبق هذا التمرير فقط على أهداف معينة لا يمكنها تمثيل
عملية المقارنة قبل اكتمال تخصيص التسجيل.

ممكن على المستويات -O, -O2, -O3, -أوس.

-fuse-ld = ذهب
استخدم الذهب رابط بدلاً من الرابط الافتراضي.

-fuse-ld = bfd
استخدم ld.bfd رابط بدلاً من الرابط الافتراضي.

سجلات fcprop
بعد تسجيل التخصيص وتقسيم تعليمات التخصيص بعد التسجيل ، نقوم بذلك
إجراء تمريرة نشر نسخ لمحاولة تقليل تبعيات الجدولة و
احذف النسخة من حين لآخر.

ممكن على المستويات -O, -O2, -O3, -أوس.

-fprofile- تصحيح
قد تكون الملفات الشخصية التي تم جمعها باستخدام ثنائي مُجهز للبرامج متعددة الخيوط
غير متسق بسبب عدم وجود تحديثات عداد. عندما يتم تحديد هذا الخيار ، فإن GCC will
استخدام الاستدلال لتصحيح أو تسوية مثل هذه التناقضات. افتراضيا ، دول مجلس التعاون الخليجي سوف
إرسال رسالة خطأ عند اكتشاف ملف تعريف غير متناسق.

-fprofile- دير =مسار
قم بتعيين الدليل للبحث عن ملفات بيانات ملف التعريف في مسار. هذا الخيار
يؤثر فقط على بيانات الملف الشخصي التي تم إنشاؤها بواسطة -fprofile- توليد, -تغطية -ftest,
-fprofile- أقواس وتستخدم من قبل -fprofile- استخدام و -احتمالات-فرع وما يتصل بها
والخيارات. يمكن استخدام كل من المسارات المطلقة والنسبية. بشكل افتراضي ، سيستخدم GCC امتداد الملف
الدليل الحالي باسم مسار، وبالتالي سيظهر ملف بيانات الملف الشخصي في نفس الملف
الدليل كملف كائن.

-fprofile- توليد
-fprofile- تولد =مسار
تمكين الخيارات المستخدمة عادة لتطبيق الأدوات لإنتاج ملف تعريف مفيد
لإعادة التجميع لاحقًا مع التحسين المستند إلى ملاحظات الملف الشخصي. عليك أن تستعمل
-fprofile- توليد سواء عند التجميع أو عند ربط البرنامج الخاص بك.

تم تمكين الخيارات التالية: "-fprofile-arcs" ، "-fprofile-القيم" ، "-fvpt".

If مسار محددًا ، فإن GCC ستنظر في مسار للعثور على بيانات ملاحظات الملف الشخصي
الملفات. ارى -fprofile- دير.

-fprofile- استخدام
-fprofile- استخدام =مسار
تمكين التحسينات الموجهة لملاحظات الملف الشخصي والتحسينات المربحة بشكل عام
فقط مع ملاحظات الملف الشخصي المتاحة.

تم تمكين الخيارات التالية: "-fbranch-probabilities"، "-fvpt"،
"-funroll-loops"، "-fpeel-loops"، "-ftracer"

بشكل افتراضي ، يرسل GCC رسالة خطأ إذا لم تتطابق ملفات تعريف الملاحظات مع ملف
مصدر الرمز. يمكن تحويل هذا الخطأ إلى تحذير باستخدام -التغطية-عدم تطابق.
لاحظ أن هذا قد يؤدي إلى رمز محسن بشكل سيئ.

If مسار محددًا ، فإن GCC ستنظر في مسار للعثور على بيانات ملاحظات الملف الشخصي
الملفات. ارى -fprofile- دير.

تتحكم الخيارات التالية في سلوك المترجم فيما يتعلق بحساب الفاصلة العائمة.
هذه الخيارات تقايض بين السرعة والصواب. يجب تمكين كل شيء على وجه التحديد.

-متجر طائر
لا تقم بتخزين متغيرات الفاصلة العائمة في السجلات ، وقم بمنع الخيارات الأخرى التي
قد يتغير ما إذا كانت قيمة الفاصلة العائمة مأخوذة من سجل أو من الذاكرة.

يمنع هذا الخيار الدقة الزائدة غير المرغوب فيها على آلات مثل 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- استخدام.

-fvpt
إذا تم دمجها مع -fprofile- أقواس، فإنه يوجه المترجم لإضافة رمز لجمع
معلومات حول قيم التعبيرات.

بدافع -احتمالات-فرع، يقوم بقراءة البيانات التي تم جمعها ويقوم بالفعل بتنفيذ
التحسينات على أساسها. تشمل التحسينات حاليًا تخصص
عملية القسمة باستخدام معرفة قيمة المقام.

-frename- تسجيلات
حاول تجنب التبعيات الخاطئة في التعليمات البرمجية المجدولة من خلال الاستفادة من السجلات المتبقية
أكثر بعد تخصيص التسجيل. سيعود هذا التحسين بالنفع على المعالجات باستخدام
الكثير من السجلات. اعتمادًا على تنسيق معلومات التصحيح الذي يعتمده الهدف ،
ومع ذلك ، يمكن أن يجعل التصحيح مستحيلاً ، لأن المتغيرات لن تبقى في ملف
"تسجيل المنزل".

ممكن بشكل افتراضي مع حلقات -funroll و حلقات تقشير.

-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 بايت.
تتم تهيئة الواقيات عند إدخال وظيفة ثم فحصها عند ملف
وظيفة المخارج. إذا فشل فحص الحارس ، فستتم طباعة رسالة خطأ والبرنامج
المخارج.

ملاحظة: في Ubuntu 6.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- واحد
تتحكم العديد من المعلمات في بطانة الشجرة المستخدمة في دول مجلس التعاون الخليجي. هذا الرقم يحدد ال
الحد الأقصى لعدد التعليمات (المحسوبة في التمثيل الداخلي لدول مجلس التعاون الخليجي) في أ
وظيفة واحدة ستأخذها الشجرة في الاعتبار للتضمين. هذا فقط
يؤثر على الوظائف المعلنة المضمنة والطرق المنفذة في إعلان الفئة
(سي ++). القيمة الافتراضية هي 400.

max-inline-insns- السيارات
عند استخدام وظائف الخطوط الدقيقة (متضمن في -O3) ، والكثير من الوظائف التي من شأنها
وإلا سيتم التحقيق في تضمينها من قبل المترجم. إلى
هذه الوظائف ، حد مختلف (أكثر تقييدًا) مقارنة بالوظائف
يمكن تطبيق مضمن المعلن. القيمة الافتراضية هي 40.

الوظائف الكبيرة
الحد الذي يحدد وظائف كبيرة حقًا. للوظائف الأكبر من هذا الحد
بعد التضمين ، يتم تقييد التضمين بواسطة - معلمة وظيفة كبيرة النمو. هذا
المعلمة مفيدة في المقام الأول لتجنب وقت التجميع الشديد الناتج عن عدم
الخوارزميات الخطية المستخدمة من قبل النهاية الخلفية. القيمة الافتراضية هي 2700.

وظيفة كبيرة النمو
يحدد أقصى نمو للوظيفة الكبيرة الناتجة عن التضمين في النسب المئوية. ال
القيمة الافتراضية هي 100 والتي تحد من نمو الدالة الكبير إلى 2.0 مرة من الأصل
حجم.

وحدات كبيرة
الحد الذي يحدد وحدة الترجمة الكبيرة. النمو الناجم عن تطعيم الوحدات
أكبر من هذا الحد مقيد بـ - معلمة نمو وحدة مضمنة. للوحدات الصغيرة
قد يكون هذا ضيقًا جدًا (ضع في اعتبارك الوحدة التي تتكون من الوظيفة A المضمنة و
ب الذي يستدعي فقط ثلاث مرات. إذا كانت B صغيرة بالنسبة إلى A ، فإن نمو الوحدة
هو 300 \٪ ومع ذلك فإن هذا البطانة عاقل جدا. للوحدات الكبيرة جدا المكونة من
وظائف صغيرة غير مبطنة ولكن هناك حاجة إلى الحد الإجمالي لنمو الوحدة
تجنب الانفجار الأسي لحجم الشفرة. وبالتالي بالنسبة للوحدات الأصغر ، يكون الحجم
ارتفع إلى - معلمة وحدات كبيرة قبل التقديم - معلمة نمو وحدة مضمنة.
الافتراضي هو 10000

نمو وحدة مضمنة
يحدد أقصى نمو إجمالي لوحدة الترجمة الناتجة عن التضمين. ال
القيمة الافتراضية هي 30 مما يحد من نمو الوحدة إلى 1.3 ضعف الحجم الأصلي.

ipcp- وحدة النمو
يحدد أقصى نمو إجمالي لوحدة الترجمة الناتجة عن interprocedural
التكاثر المستمر. القيمة الافتراضية هي 10 مما يحد من نمو الوحدة إلى 1.1
أضعاف الحجم الأصلي.

إطار مكدس كبير
الحد الذي يحدد إطارات مكدس كبيرة. بينما تحاول تضمين الخوارزمية
لعدم تجاوز هذا الحد كثيرا. القيمة الافتراضية هي 256 بايت.

نمو إطار مكدس كبير
يحدد أقصى نمو لإطارات المكدس الكبيرة الناتجة عن التضمين في النسب المئوية.
القيمة الافتراضية هي 1000 مما يحد من نمو إطار المكدس الكبير إلى 11 ضعفًا
الحجم الأصلي.

max-inline-insns- العودية
max-inline-insns- متكرر-تلقائي
يحدد الحد الأقصى لعدد التعليمات الموجودة خارج السطر لنسخة مضمنة ذاتية التكرار
يمكن أن تنمو الوظيفة من خلال إجراء تضمين متكرر.

للوظائف المعلنة مضمنة - معلمة max-inline-insns- العودية يؤخذ في
الحساب. بالنسبة للوظيفة التي لم يتم الإعلان عنها في السطر ، يحدث التبطين العودي فقط عندما
وظائف الخطوط الدقيقة (متضمن في -O3) ممكّن و - معلمة ماكس مضمنة insNS-
العودية التلقائي يستخدم. القيمة الافتراضية هي 450.

أقصى عمق متكرر
ماكس مضمنة العودية العمق التلقائي
يحدد الحد الأقصى لعمق العودية المستخدم بواسطة البطانة العودية.

للوظائف المعلنة مضمنة - معلمة أقصى عمق متكرر يؤخذ في
الحساب. بالنسبة للوظيفة التي لم يتم الإعلان عنها في السطر ، يحدث التبطين العودي فقط عندما
وظائف الخطوط الدقيقة (متضمن في -O3) ممكّن و - معلمة ماكس-مضمنة- العودية-
العمق التلقائي يستخدم. القيمة الافتراضية هي 8.

مين-مضمنة-العودية-الاحتمال
يعتبر التضمين العودي مربحًا فقط للوظيفة التي لها تكرار عميق في
متوسط ​​ويمكن أن يضر لوظيفة ذات عمق عودي قليل عن طريق زيادة
حجم مقدمة أو مدى تعقيد جسم الوظيفة لمحسّنات أخرى.

عندما تتوفر ملاحظات الملف الشخصي (انظر -fprofile- توليد) العودية الفعلية
يمكن تخمين العمق من احتمال تكرار هذه الوظيفة عبر مكالمة معينة
التعبير. تحدد هذه المعلمة التضمين فقط لاستدعاء التعبير الذي
يتجاوز الاحتمال الحد المعطى (بالنسب المئوية). القيمة الافتراضية هي 10.

التطعيم المبكر
حدد النمو الذي يمكن أن يحققه البطانة المبكرة. في الواقع يزيد من كمية
تضمين رمز يحتوي على عقوبة تجريد كبيرة. القيمة الافتراضية هي 10.

ماكس في وقت مبكر inliner التكرارات
ماكس في وقت مبكر inliner التكرارات
حد التكرارات للخط الداخلي المبكر. هذا العدد يحد أساسًا من المتداخلة
المكالمات غير المباشرة المبكرة يمكن حلها. لا يزال يتم التعامل مع سلاسل أعمق في وقت متأخر
مضمنة.

كومدات-تقاسم-احتمال
كومدات-تقاسم-احتمال
الاحتمال (بالنسبة المئوية) أن دالة C ++ المضمنة مع رؤية comdat ستكون
مشتركة عبر وحدات تجميع متعددة. القيمة الافتراضية هي 20.

min-vect-loop-ملزمة
الحد الأدنى لعدد التكرارات التي لن يتم توجيه حلقة تحتها
-ftree-vectorize يستخدم. عدد التكرارات بعد التوجيه يحتاج إلى
تكون أكبر من القيمة المحددة بواسطة هذا الخيار للسماح بالاتجاه. ال
القيمة الافتراضية هي 0.

نسبة التكلفة والمسافة
عامل القياس في حساب المسافة القصوى يمكن تحريك التعبير بواسطتها
تحسينات GCSE. هذا مدعوم حاليًا فقط في ممر رفع الكود.
كلما كانت النسبة أكبر ، كلما كان رفع الشفرة أكثر شراسة سيكون بسيطًا
التعبيرات ، أي التعبيرات التي تكلف أقل من gcse- غير مقيد-
كلف. تحديد 0 سيعطل رفع التعبيرات البسيطة. الافتراضي
القيمة 10.

تكلفة GCSE غير المقيدة
التكلفة ، مُقاسة تقريبًا كتكلفة تعليمات آلة نموذجية واحدة ، عند
تحسينات GCSE التي لن تقيد المسافة التي يمكن أن يقطعها التعبير.
هذا مدعوم حاليًا فقط في ممر رفع الكود. كلما قلت التكلفة ،
سيكون رفع التعليمات البرمجية الأكثر عدوانية. تحديد 0 سيسمح للجميع
تعابير للسفر مسافات غير مقيدة. القيمة الافتراضية هي 3.

أقصى عمق للرافعة
عمق البحث في شجرة المسيطر عن التعبيرات التي يجب رفعها. هذا مستخدم
لتجنب السلوك التربيعي في خوارزمية الرفع. سيتم تجنب قيمة 0
الحد من البحث ، ولكن قد يبطئ تجميع الوظائف الضخمة. الافتراضي
القيمة 30.

مقارنات max-tail-merge
أقصى قدر من bbs مماثلة لمقارنة bb مع. يستخدم هذا لتجنب
السلوك التربيعي في دمج ذيل الشجرة. القيمة الافتراضية هي 10.

ماكس الذيل دمج التكرارات
الحد الأقصى لمقدار تكرارات التمرير فوق الوظيفة. هذا معتاد على
الحد من وقت التجميع في دمج ذيل الشجرة. القيمة الافتراضية هي 2.

الحد الأقصى للإضافات غير المسجلة
الحد الأقصى لعدد التعليمات التي يجب أن تحتويها الحلقة إذا كانت هذه الحلقة هي
unrolled ، وإذا كانت الحلقة غير ملتفة ، فإنها تحدد عدد مرات رمز الحلقة
غير مقيد.

max-average-unrolled-insns. الحد الأقصى لمتوسط ​​الإدخال
أقصى عدد من التعليمات منحازة باحتمالات تنفيذها
يجب أن تحتوي الحلقة إذا كانت تلك الحلقة غير ملتفة ، وإذا كانت الحلقة غير ملتفة ، فإنها
يحدد عدد المرات التي يتم فيها إلغاء تسجيل رمز الحلقة.

ماكس-فتح مرات
الحد الأقصى لعدد عمليات فتح حلقة واحدة.

ماكس مقشر
الحد الأقصى لعدد التعليمات التي يجب أن تحتويها الحلقة إذا تم تقشير تلك الحلقة ،
وإذا تم تقشير الحلقة ، فإنها تحدد عدد مرات تقشير رمز الحلقة.

مرات التقشير القصوى
الحد الأقصى لعدد التقشير في حلقة واحدة.

ماكس مقشر تماما
الحد الأقصى لعدد الدعامات لحلقة مقشرة تمامًا.

مرات التقشير القصوى
الحد الأقصى لعدد التكرارات للحلقة لتكون مناسبة للتقشير الكامل.

max-full-peel-loop-nest-عمق
أقصى عمق لعش حلقي مناسب للتقشير الكامل.

الحد الأقصى لإلغاء التبديل-insns
الحد الأقصى لعدد إدخالات الحلقة غير المحولة.

ماكس أون سويتش المستوى
الحد الأقصى لعدد الفروع غير المحولة في حلقة واحدة.

ليم باهظة الثمن
التكلفة الدنيا لتعبير باهظ الثمن في حركة الحلقة الثابتة.

رابعا - مراعاة - جميع المرشحين ملزمة
ملزمة بعدد المرشحين لمتغيرات الاستقراء أدناه لجميع المرشحين
تعتبر لكل استخدام في تحسينات متغيرة الاستقراء. فقط أكثر
يتم النظر في المرشحين ذوي الصلة إذا كان هناك المزيد من المرشحين ، لتجنب
تعقيد الوقت التربيعي.

رابعا - ماكس - الاستخدامات المدروسة
تتخلى التحسينات المتغيرة الاستقرائية عن الحلقات التي تحتوي على مزيد من الاستقراء
استخدامات متغيرة.

رابعًا - دائمًا - خوخ - مرتبط بالشموع
إذا كان عدد المرشحين في المجموعة أقل من هذه القيمة ، فإننا نحاول دائمًا ذلك
قم بإزالة ivs غير الضرورية من المجموعة أثناء تحسينها عند إضافة iv جديد
إلى المجموعة.

scev-max-expr-size
ملزم بحجم التعبيرات المستخدمة في محلل التطورات العددية. كبير
التعبيرات تبطئ المحلل.

تعقيد scev-max-expr
مقيد بتعقيد التعبيرات في محلل التطور القياسي.
التعبيرات المعقدة تبطئ المحلل.

أوميغا ماكس فارز
أقصى عدد من المتغيرات في نظام قيود أوميغا. القيمة الافتراضية
هو 128.

أوميغا ماكس geqs
العدد الأقصى من التفاوتات في نظام قيود أوميغا. الافتراضي
القيمة 256.

أوميغا ماكس مكافئ
أقصى عدد من المساواة في نظام قيود أوميغا. القيمة الافتراضية
هو 128.

أوميغا ماكس وايلد بطاقات
الحد الأقصى لعدد متغيرات أحرف البدل التي سيتمكن حلال أوميغا من القيام بها
إدراج. القيمة الافتراضية هي 18.

أوميغا حجم الجدول
حجم جدول التجزئة في أداة حل أوميغا. القيمة الافتراضية هي 550.

مفاتيح أوميغا ماكس
العدد الأقصى للمفاتيح المستخدمة بواسطة أداة حل أوميغا. القيمة الافتراضية هي 500.

أوميغا القضاء على القيود الزائدة عن الحاجة
عند الضبط على 1 ، استخدم طرقًا باهظة الثمن لإزالة جميع القيود الزائدة عن الحاجة. ال
القيمة الافتراضية هي 0.

vect-max-version-for-alignment-check. فحص المحاذاة
الحد الأقصى لعدد فحوصات وقت التشغيل التي يمكن إجراؤها عند إجراء التكرار
إصدار للمحاذاة في vectorizer. انظر الخيار ftree-vect-loop-version
للمزيد من المعلومات.

اختبارات vect-max-version-for-alias-check
الحد الأقصى لعدد فحوصات وقت التشغيل التي يمكن إجراؤها عند إجراء التكرار
تعيين الإصدار للاسم المستعار في Vectorizer. انظر الخيار ftree-vect-loop-version لـ
معلومات اكثر.

الحد الأقصى لتكرار المسار
الحد الأقصى لعدد التكرارات لحلقة خوارزمية القوة الغاشمة للتحليل
من # من التكرارات في الحلقة يحاول التقييم.

hot-bb- العد الكسر
حدد جزء من العدد الأقصى لتكرارات الكتلة الأساسية في البرنامج
نظرًا لأن الكتلة الأساسية يجب أن تعتبر ساخنة.

حار-ب-تردد-جزء
حدد جزءًا من تكرار كتلة الإدخال لعمليات تنفيذ الكتلة الأساسية في
الوظيفة التي تعطى الكتلة الأساسية يجب أن تعتبر ساخنة.

التكرارات القصوى المتوقعة
الحد الأقصى لعدد تكرارات الحلقة التي نتوقعها بشكل ثابت. هذا مفيد في
الحالات التي تحتوي فيها الوظيفة على حلقة مفردة ذات حلقة ربط معروفة وحلقة أخرى بها
غير معروف. نتوقع العدد المعروف من التكرارات بشكل صحيح ، بينما المجهول
متوسط ​​عدد التكرارات إلى ما يقرب من 10. وهذا يعني أن الحلقة بدونها
ستبدو الحدود باردة بشكل مصطنع بالنسبة إلى الأخرى.

عتبة المحاذاة
حدد جزء من الحد الأقصى لتكرار عمليات إعدام الكتلة الأساسية في الوظيفة
ستتم محاذاة الكتلة الأساسية المعطاة.

محاذاة حلقة التكرارات
حلقة من المتوقع أن تتكرر حتى لا تحصل على العدد المحدد من التكرارات
محاذاة.

تغطية التتبع الديناميكي
التتبع الديناميكي للتغطية-التغذية الراجعة
تُستخدم هذه القيمة للحد من تكوين الكتلة الفائقة بمجرد النسبة المئوية المعطاة لـ
يتم تغطية التعليمات المنفذة. هذا يحد من توسيع حجم الكود غير الضروري.

التتبع الديناميكي للتغطية-التغذية الراجعة فقط عندما يتم استخدام ملاحظات الملف الشخصي
متوفرة. الملفات الشخصية الحقيقية (على عكس تلك المقدرة بشكل ثابت) كثيرة
أقل توازناً مما يسمح للعتبة بأن تكون ذات قيمة أكبر.

تتبع- ماكس- كود- النمو
أوقف ازدواجية الذيل بمجرد أن يصل نمو الكود إلى نسبة معينة. هذا هو
إلى حد ما حجة هزلية ، حيث سيتم حذف معظم التكرارات لاحقًا في العرض
القفز ، لذلك قد يتم تعيينه على قيم أعلى بكثير من نمو الكود المطلوب.

نسبة تتبع دقيقة فرع
أوقف النمو العكسي عندما يكون الاحتمال العكسي لأفضل حافة أقل من ذلك
عتبة (بالنسبة المئوية).

نسبة تتبع دقيقة فرع
تتبع دقيقة دقيقة نسبة الفرع ردود الفعل
أوقف النمو إلى الأمام إذا كان احتمال أفضل ميزة أقل من هذا
عتبة.

مشابه ل تغطية التتبع الديناميكي توجد قيمتان ، واحدة للتجميع
لتعليقات الملف الشخصي وواحد للتجميع بدون. قيمة الترجمة
مع ملاحظات الملف الشخصي يجب أن تكون أكثر تحفظًا (أعلى) من أجل القيام بذلك
التتبع فعال.

أقصى طول مسار cse
الحد الأقصى لعدد الكتل الأساسية على المسار الذي تعتبره cse. الافتراضي هو 10.

max-cse-insns
أقصى تعليمات CSE عملية قبل الشطف. الافتراضي هو 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 - تعطيل
امتداد المنطقة ، N - فعل تكرار N على الأكثر. القيمة الافتراضية هي 0.

max-Sched-insn- تعارض-تأخير
الحد الأقصى لتأخير التعارض لـ insn يجب أن يؤخذ في الاعتبار للحركة التخمينية.
القيمة الافتراضية هي 3.

جدولة المواصفات- مشكلة- قطع
الحد الأدنى من احتمال نجاح المضاربة (بالنسب المئوية) ، بحيث تكون المضاربة
سيتم جدولة INN. القيمة الافتراضية هي 40.

جدولة-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.

عدد صحيح حصة حد
يمكن أن تستخدم ثوابت الأعداد الصحيحة الصغيرة بنية بيانات مشتركة ، مما يقلل من المترجم
استخدام الذاكرة وزيادة سرعتها. هذا يحدد الحد الأقصى لقيمة ملف
ثابت عدد صحيح. القيمة الافتراضية هي 256.

الحد الأدنى من التعيينات الافتراضية
يحدد الحد الأدنى لعدد التعيينات الافتراضية في مُحدِّث SSA التزايدي
التي يجب أن يتم تسجيلها لتشغيل توجيهات التعيينات الظاهرية المحددة بواسطة
نسبة التعيينات الافتراضية. القيمة الافتراضية هي 100.

نسبة التعيينات الافتراضية
إذا كان عدد التعيينات الظاهرية أكبر من الرقم
من الرموز الافتراضية المراد تحديثها ، ثم يتحول محدث SSA التزايدي إلى ملف
التحديث الكامل لتلك الرموز. النسبة الافتراضية هي 3.

ssp- حجم المخزن المؤقت
الحد الأدنى لحجم المخازن المؤقتة (أي المصفوفات) التي ستتلقى تحطيم المكدس
عندما الحماية -حماية التكديس .

هذا الإعداد الافتراضي قبل Ubuntu 10.10 كان "8". حاليا هو "4" ، لزيادة
عدد الوظائف التي يحميها واقي المكدس.

ماكس القفز موضوع الازدواجية stmts
الحد الأقصى من العبارات المسموح بها في الكتلة التي تحتاج إلى تكرار عندما
خيوط يقفز.

max-Fields للحقول الحساسة
الحد الأقصى لعدد الحقول في الهيكل الذي سنتعامل معه بطريقة حساسة للمجال
أثناء تحليل المؤشر. القيمة الافتراضية هي صفر لـ -O0 و -O1 و 100 لـ -Os ،
-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

إيرا ماكس حلقات الأسطوانات
يستخدم IRA تخصيص السجل الإقليمي افتراضيًا. إذا كانت الوظيفة تحتوي على المزيد
حلقات من الرقم المعطى بواسطة هذه المعلمة ، فقط على الأكثر عدد معين من
تشكل الحلقات الأكثر تنفيذًا مناطق لتخصيص السجل الإقليمي.
القيمة الافتراضية للمعلمة هي 100.

حجم طاولة الصراع
على الرغم من أن IRA يستخدم خوارزمية معقدة لضغط جدول التعارض ، فإن ملف
الجدول لا يزال يتطلب كميات زائدة من الذاكرة لوظائف ضخمة. إذا كان
يمكن أن يكون جدول التعارض لوظيفة أكبر من الحجم بالميغابايت المعطى بواسطة هذا
المعلمة ، يستخدم مخصص السجل بدلاً من ذلك أسرع وأبسط وأقل-
خوارزمية الجودة التي لا تتطلب بناء جدول تعارض السجل الزائف.
القيمة الافتراضية للمعلمة هي 2000.

إيرا حلقة محجوزة
يمكن استخدام IRA لتقييم ضغط التسجيل الأكثر دقة في الحلقات لاتخاذ القرارات
لتحريك ثوابت الحلقة (انظر -O3). عدد السجلات المتاحة المحجوزة لـ
يتم إعطاء بعض الأغراض الأخرى بواسطة هذه المعلمة. القيمة الافتراضية لملف
المعلمة هي 2 ، وهو الحد الأدنى من عدد السجلات التي يحتاجها النموذج
تعليمات. هذه القيمة هي أفضل ما تم العثور عليه من تجارب عديدة.

حلقة-ثابت- max-bbs-in-loop
يمكن أن تكون حركة الحلقة الثابتة باهظة الثمن ، سواء في وقت التجميع أو في
مقدار ذاكرة وقت الترجمة المطلوبة ، مع حلقات كبيرة جدًا. حلقات مع المزيد
لن تحتوي الكتل الأساسية من هذه المعلمة على تحسين حركة ثابتة للحلقة
يؤدى عليهم. القيمة الافتراضية للمعلمة هي 1000 لـ -O1 و 10000
لـ -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
أضعاف حجم معلمة المؤشر الأصلية.

الحجم الكلي tm max
عند عمل نسخ من المتغيرات المحلية الخيطية في معاملة ، هذه المعلمة
يحدد الحجم بالبايت وبعد ذلك سيتم حفظ المتغيرات مع التسجيل
وظائف بدلاً من حفظ / استعادة أزواج تسلسل التعليمات البرمجية. هذا الخيار فقط
ينطبق عند استخدام -فنو- ​​tm.

الجرافيت-max-nb-scop-params
لتجنب التأثيرات الأسية في تحويلات حلقة الجرافيت ، فإن عدد
المعلمات في جزء التحكم الثابت (SCoP) محدودة. القيمة الافتراضية هي 10
العوامل. متغير قيمته غير معروفة في وقت التجميع ومحددة
خارج SCoP معلمة من SCoP.

الجرافيت- max-bbs- لكل وظيفة
لتجنب التأثيرات الأسية في اكتشاف SCoPs ، حجم الوظائف
تحليلها بواسطة الجرافيت يحدها. القيمة الافتراضية هي 100 كتلة أساسية.

حلقة-كتلة-حجم البلاط
يتم تمكين حجب الحلقة أو تحويلات التعدين الشريطية مع - كتلة طيارة or
-قريب-شريط-الألغام، قم بتجريد كل حلقة في عش الحلقة بعدد معين من
التكرارات. يمكن تغيير طول الشريط باستخدام حلقة-كتلة-حجم البلاط
معامل. القيمة الافتراضية هي 51 تكرارا.

ipa-cp-قيمة-حجم القائمة
يحاول IPA-CP تتبع جميع القيم والأنواع الممكنة التي تم تمريرها إلى الوظيفة
المعلمة من أجل تكاثرها وتنفيذ devirtualization. قيمة ipa-cp-
حجم القائمة هو الحد الأقصى لعدد القيم والأنواع التي يخزنها لكل رسمية
معلمة وظيفة.

أقسام lto
حدد العدد المطلوب من الأقسام التي تم إنتاجها أثناء تجميع WHOPR. ال
يجب أن يتجاوز عدد الأقسام عدد وحدات المعالجة المركزية المستخدمة في التجميع. ال
القيمة الافتراضية هي 32.

lto-minpartition
حجم الحد الأدنى من التقسيم لـ WHOPR (في التعليمات المقدرة). هذا يمنع
نفقات تقسيم البرامج الصغيرة جدًا إلى أقسام كثيرة جدًا.

مساحات الأسماء cxx-max-for-التشخيص-التعليمات
الحد الأقصى لعدد مساحات الأسماء التي يمكن الرجوع إليها للحصول على اقتراحات عند البحث عن اسم C ++
فشل للحصول على معرّف. الافتراضي هو 1000.

عتبة التردد بالوعة
الحد الأقصى لتكرار التنفيذ النسبي (بالنسب المئوية) للكتلة المستهدفة
بالنسبة إلى الكتلة الأصلية للبيان للسماح بغرق العبارة لـ
بيان. تؤدي الأرقام الكبيرة إلى المزيد من الغرق العدواني في العبارات. ال
القيمة الافتراضية هي 75. يتم تطبيق تعديل إيجابي صغير على البيانات ذات
معاملات الذاكرة لأنها أكثر ربحية لذا تغرق.

ماكس-مخازن للحوض
أقصى عدد من أزواج المتاجر الشرطية التي يمكن غرقها. اضبط على 0 إذا
إما vectorization (-ftree-vectorize) أو إذا-التحويل (-ftree- حلقة- إذا- تحويل)
معطل. الافتراضي هو 2.

سباقات السماح بتحميل البيانات
السماح للمحسّنين بتقديم سباقات بيانات جديدة عند التحميل. اضبط على 1 للسماح ،
بخلاف ذلك إلى 0. يتم تمكين هذا الخيار افتراضيًا ما لم يتم تعيينه ضمنيًا بواسطة
-نموذج الذاكرة = الخيار.

سماح-تخزين-بيانات-سباقات
السماح للمحسّنين بتقديم سباقات بيانات جديدة في المتاجر. اضبط على 1 للسماح ،
بخلاف ذلك إلى 0. يتم تمكين هذا الخيار افتراضيًا ما لم يتم تعيينه ضمنيًا بواسطة
-نموذج الذاكرة = الخيار.

سماح-معبأة-تحميل-البيانات-سباقات
السماح للمحسّنين بتقديم سباقات بيانات جديدة على أحمال البيانات المعبأة. اضبط من 1 إلى
سماح ، وإلا إلى 0. يتم تمكين هذا الخيار افتراضيًا ما لم يتم تعيينه ضمنيًا بواسطة
ال -نموذج الذاكرة = الخيار.

سماح-تخزين-بيانات-سباقات
السماح للمحسّنين بتقديم سباقات بيانات جديدة في مخازن البيانات المعبأة. اضبط من 1 إلى
سماح ، وإلا إلى 0. يتم تمكين هذا الخيار افتراضيًا ما لم يتم تعيينه ضمنيًا بواسطة
ال -نموذج الذاكرة = الخيار.

عتبة قيم الحالة
أصغر عدد من القيم المختلفة من الأفضل استخدام جدول انتقال
بدلا من شجرة الفروع الشرطية. إذا كانت القيمة 0 ، فاستخدم الإعداد الافتراضي لـ
الآلة. الافتراضي هو 0.

عرض الشجرة reassoc
قم بتعيين الحد الأقصى لعدد التعليمات التي يتم تنفيذها بالتوازي في الشجرة المعاد إقرانها.
تتجاوز هذه المعلمة الأساليب البحثية التابعة للهدف المستخدمة افتراضيًا إذا لم يكن بها
قيمة صفرية.

مزيد من الخيارات السيطرة ال قبل المعالج
تتحكم هذه الخيارات في معالج C ، والذي يتم تشغيله على كل ملف مصدر C قبل الفعلي
التحويل البرمجي.

إذا كنت تستخدم -E الخيار ، لا شيء يتم القيام به باستثناء المعالجة المسبقة. بعض هذه الخيارات
منطقي فقط مع -E لأنهم يتسببون في إخراج المعالج المسبق
غير مناسب للترجمة الفعلية.

-Wp ،خيار
يمكنك استخدام -Wp ،خيار لتجاوز سائق المترجم وتمرير خيار مباشرة من خلال
إلى المعالج. لو خيار يحتوي على فواصل ، يتم تقسيمه إلى خيارات متعددة في
الفواصل. ومع ذلك ، يتم تعديل العديد من الخيارات أو ترجمتها أو تفسيرها بواسطة
برنامج تشغيل المترجم قبل أن يتم تمريره إلى المعالج المسبق ، و -Wp يتجاوز بالقوة
هذه المرحلة. الواجهة المباشرة للمعالج غير موثقة وتخضع لـ
التغيير ، لذا يجب تجنب استخدام -Wp ودع السائق يتعامل مع ملف
خيارات بدلا من ذلك.

-المعالج X خيار
تجاوز خيار كخيار للمعالج. يمكنك استخدام هذا لتزويد النظام-
خيارات المعالجات المحددة التي لا يعرف مجلس التعاون الخليجي كيفية التعرف عليها.

إذا كنت تريد تمرير خيار يأخذ حجة ، فيجب عليك استخدام -المعالج X
مرتين ، مرة للخيار ومرة ​​للحجة.

-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- في-المعرفات
استمر $ في المعرفات.

- المعرفات الموسعة
قبول أسماء الأحرف العالمية في المعرفات. هذا الخيار تجريبي. في
الإصدار المستقبلي من GCC ، سيتم تمكينه افتراضيًا لـ C99 و 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.

-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 إذا تم استخدام أي من هذه الخيارات ، فلن يتم تشغيل الرابط ، وأسماء ملفات الكائن
لا ينبغي أن تستخدم الحجج.

-lمكتبة
-l مكتبة
ابحث في المكتبة المسماة مكتبة عند الربط. (البديل الثاني مع
مكتبة كوسيطة منفصلة فقط للامتثال POSIX ولا يوصى به.)

يحدث فرقًا حيث تكتب هذا الخيار في الأمر ؛ يبحث الرابط
ويعالج المكتبات وملفات الكائنات بالترتيب المحدد لها. هكذا، foo.o
-lz بار يبحث في المكتبة z بعد الملف foo.o لكن قبل بار. إذا بار يشير إلى
وظائف في z، قد لا يتم تحميل هذه الوظائف.

يبحث الرابط في قائمة قياسية من الدلائل للمكتبة ، وهي في الواقع
ملف اسمه مكتبة.أ. ثم يستخدم الرابط هذا الملف كما لو تم تحديده
بالتحديد بالاسم.

تتضمن الدلائل التي تم البحث عنها العديد من أدلة النظام القياسية بالإضافة إلى أي منها أنت
حدد مع -L.

عادةً ما تكون الملفات التي يتم العثور عليها بهذه الطريقة هي ملفات مكتبة --- ملفات أرشيفية يكون أعضاؤها
ملفات الكائن. يتعامل الرابط مع ملف أرشيف عن طريق مسحه بحثًا عن الأعضاء
التي تحدد الرموز التي تمت الإشارة إليها حتى الآن ولكن لم يتم تعريفها. ولكن إذا كان
الملف الذي تم العثور عليه هو ملف كائن عادي ، وهو مرتبط بالطريقة المعتادة. ال
فقط الاختلاف بين استخدام -l الخيار وتحديد اسم الملف هو أن -l
يحيط مكتبة مع ليب و .a ويبحث في عدة أدلة.

-lobjc
أنت بحاجة إلى هذه الحالة الخاصة من -l الخيار لربط Objective-C أو
برنامج Objective-C ++.

-نوستارتفيليس
لا تستخدم ملفات بدء تشغيل النظام القياسية عند الربط. النظام القياسي
يتم استخدام المكتبات بشكل طبيعي ، ما لم يتم استخدام -نوستدليب or -Nodefaultlibs .

-Nodefaultlibs
لا تستخدم مكتبات النظام القياسية عند الارتباط. فقط المكتبات التي تحددها
سيتم تمريرها إلى الرابط ، والخيارات التي تحدد ارتباط مكتبات النظام ، مثل
سيتم تجاهل "-static-libgcc" أو "-shared-libgcc". ملفات بدء التشغيل القياسية
تستخدم بشكل طبيعي ، ما لم -نوستارتفيليس يستخدم. قد يقوم المترجم بإنشاء مكالمات إلى
"memcmp" ، "memset" ، "memcpy" و "memmove". عادة ما يتم حل هذه الإدخالات بواسطة
إدخالات في libc. يجب توفير نقاط الدخول هذه من خلال بعض الآليات الأخرى
عندما يتم تحديد هذا الخيار.

-نوستدليب
لا تستخدم ملفات أو مكتبات بدء تشغيل النظام القياسية عند الارتباط. لا يوجد بدء تشغيل
سيتم تمرير الملفات والمكتبات التي تحددها فقط إلى خيارات الرابط
تحديد ارتباط مكتبات النظام ، مثل "-static-libgcc" أو
سيتم تجاهل "-shared-libgcc". قد ينشئ المترجم استدعاءات لـ "memcmp" ،
"memset" و "memcpy" و "memmove". عادة ما يتم حل هذه الإدخالات عن طريق الإدخالات في
libc. يجب توفير نقاط الدخول هذه من خلال آلية أخرى عند ذلك
تم تحديد الخيار.

واحدة من المكتبات القياسية التي تم تجاوزها -نوستدليب و -Nodefaultlibs is libgcc.aأو المعلم
مكتبة من الإجراءات الفرعية الداخلية التي تستخدمها دول مجلس التعاون الخليجي للتغلب على أوجه القصور الخاصة
آلات أو احتياجات خاصة لبعض اللغات.

في معظم الحالات ، أنت بحاجة libgcc.a حتى عندما تريد تجنب المكتبات القياسية الأخرى.
بمعنى آخر ، عندما تحدد -نوستدليب or -Nodefaultlibs يجب عليك عادة
تحديد -lgcc أيضا. هذا يضمن عدم وجود مراجع لم يتم حلها إلى
إجراءات فرعية داخلية للمكتبات الخليجية. (على سبيل المثال، __الأساسية، تستخدم لضمان C ++
سيتم استدعاء المنشئين.)

-فطيرة
قم بإنتاج منصب مستقل قابل للتنفيذ على الأهداف التي تدعمه. للتنبؤ
النتائج ، يجب عليك أيضًا تحديد نفس مجموعة الخيارات التي تم استخدامها لإنشاء التعليمات البرمجية
(-fpie, -fPIE، أو خيارات فرعية للنموذج) عندما تحدد هذا الخيار.

-ديناميكي
مرر العلم - ديناميكية التصدير إلى رابط ELF ، على الأهداف التي تدعمه. هذه
يوجه الرابط لإضافة جميع الرموز ، وليس الرموز المستخدمة فقط ، إلى الرمز الديناميكي
طاولة. هذا الخيار ضروري لبعض استخدامات "dlopen" أو للسماح بالحصول عليها
backtraces من داخل البرنامج.

-s قم بإزالة كل جدول الرموز ومعلومات النقل من الملف القابل للتنفيذ.

-ثابتة
في الأنظمة التي تدعم الارتباط الديناميكي ، يمنع هذا الارتباط بالملفات المشتركة
المكتبات. على الأنظمة الأخرى ، هذا الخيار ليس له أي تأثير.

-مشاركة
أنتج عنصرًا مشتركًا يمكن ربطه بعد ذلك بكائنات أخرى لتكوين ملف
تنفيذ. لا تدعم كل الأنظمة هذا الخيار. للحصول على نتائج يمكن التنبؤ بها ، يجب عليك
حدد أيضًا نفس مجموعة الخيارات التي تم استخدامها لإنشاء رمز (-fpic, -fPICالطرق أو
النموذج الفرعي) عند تحديد هذا الخيار. [1]

-libgcc المشتركة
-static-libgcc
على الأنظمة التي تقدم libgcc كمكتبة مشتركة ، تفرض هذه الخيارات استخدام
إما النسخة المشتركة أو الثابتة على التوالي. إذا لم يكن هناك نسخة مشتركة من libgcc وكان
عندما تم تكوين المترجم ، فإن هذه الخيارات ليس لها أي تأثير.

هناك العديد من المواقف التي يجب أن يستخدم فيها التطبيق ملف libgcc
بدلاً من الإصدار الثابت. الأكثر شيوعًا هو عند التطبيق
يرغب في طرح الاستثناءات والتقاطها عبر مكتبات مشتركة مختلفة. في هذه الحالة،
يجب أن يستخدم كل من المكتبات وكذلك التطبيق نفسه ملفات libgcc.

لذلك ، تضيف برامج تشغيل G ++ و GCJ تلقائيًا -libgcc المشتركة كلما بنيت
مكتبة مشتركة أو ملف تنفيذي رئيسي ، لأن برامج C ++ و Java تستخدم عادةً
استثناءات ، لذلك هذا هو الشيء الصحيح الذي ينبغي عمله.

إذا كنت تستخدم بدلاً من ذلك برنامج التشغيل GCC لإنشاء مكتبات مشتركة ، فقد تجدها
لن يتم ربطه دائمًا بالمشاركة libgcc. إذا وجد GCC ، في تكوينه
الوقت ، أن لديك رابط غير جنو أو رابط جنو لا يدعم الخيار
--eh- الإطار- تقرير التنمية البشرية، فإنه سيربط النسخة المشتركة من libgcc في المكتبات المشتركة عن طريق
إفتراضي. خلاف ذلك ، سوف يستفيد من الرابط ويعمل على تحسين ملف
الارتباط بالنسخة المشتركة من libgcc، والربط مع الإصدار الثابت من libgcc
بشكل افتراضي. هذا يسمح للاستثناءات بالنشر من خلال هذه المكتبات المشتركة ،
دون تكبد تكاليف الانتقال في وقت تحميل المكتبة.

ومع ذلك ، إذا كان من المفترض أن تقوم مكتبة أو ملف تنفيذي رئيسي برمي أو التقاط استثناءات ، فأنت
يجب ربطه باستخدام برنامج التشغيل G ++ أو GCJ ، بما يتناسب مع اللغات المستخدمة في ملف
البرنامج أو باستخدام الخيار -libgcc المشتركة، بحيث يتم ربطها بالمشاركة
libgcc.

-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 عدة مرات مع رموز مختلفة لفرض تحميل
وحدات مكتبة إضافية.

مزيد من الخيارات For دليل بحث
تحدد هذه الخيارات أدلة للبحث عن ملفات الرأس والمكتبات والأجزاء
من المترجم:

-Iدير
أضف الدليل دير إلى رأس قائمة الدلائل المراد البحث عنها في العنوان
الملفات. يمكن استخدام هذا لتجاوز ملف رأس النظام ، واستبدال الملف الخاص بك
الإصدار ، حيث يتم البحث في هذه الدلائل قبل ملف رأس النظام
الدلائل. ومع ذلك ، لا يجب استخدام هذا الخيار لإضافة الدلائل التي تحتوي على
ملفات رأس النظام التي يوفرها البائع (استخدام -نظام من أجل هذا). إذا كنت تستخدم أكثر من واحد
-I الخيار ، يتم فحص الدلائل بالترتيب من اليسار إلى اليمين ؛ النظام القياسي
الدلائل تأتي بعد.

إذا كان النظام القياسي يتضمن دليلًا ، أو دليلًا محددًا بـ -نظام، هل
المحدد أيضًا بـ -Iأطلقت حملة -I سيتم تجاهل الخيار. سيظل الدليل
بحثت ولكن كدليل نظام في موقعها الطبيعي في النظام تشمل سلسلة.
هذا لضمان إجراء دول مجلس التعاون الخليجي لإصلاح رؤوس نظام عربات التي تجرها الدواب والطلب
للتوجيه include_next لا يتم تغييره دون قصد. إذا كنت حقا بحاجة إلى
قم بتغيير ترتيب البحث عن دلائل النظام ، استخدم -نوستدينك و / أو -نظام
خيارات.

-بلوجيندير =دير
اضبط الدليل للبحث عن المكونات الإضافية التي تم تمريرها من خلالها -فلوجين =الاسم بدلا من
-فلوجين =مسار/الاسم.وبالتالي. هذا الخيار ليس مخصصًا لاستخدامه من قبل المستخدم ، ولكن فقط
مرت من قبل السائق.

-انا اقتبسدير
أضف الدليل دير إلى رأس قائمة الدلائل المراد البحث عنها في العنوان
الملفات فقط لحالة تتضمن # "ملف"؛ لم يتم البحث عنها تتضمن # <ملف>,
خلاف ذلك تمامًا مثل -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) لديه الدعم اللازم لذلك
اختيار. إذا كان الرابط الخاص بك لا يدعم هذا الخيار ، فإن جانب ملف الرأس الخاص بـ
- الجذور ستظل تعمل ، لكن جانب المكتبة لن يعمل.

-أنا- تم إهمال هذا الخيار. يرجى استخدام -انا اقتبس بدلا من ذلك -I الدلائل من قبل
ال -أنا- وإزالة -أنا-. أي أدلة تحددها مع -I خيارات قبل
-أنا- يتم البحث عن الخيار فقط في حالة تتضمن # "ملف"؛ لم يتم تفتيشهم
For تتضمن # <ملف>.

إذا تم تحديد أدلة إضافية مع -I خيارات بعد -أنا-، هذه
يتم البحث عن الدلائل للجميع تتضمن # التوجيهات. (عادة من جميع -I الدلائل
تستخدم بهذه الطريقة.)

بالإضافة إلى ذلك، -أنا- الخيار يمنع استخدام الدليل الحالي (حيث
جاء ملف الإدخال الحالي من) كأول دليل بحث عن تتضمن # "ملف".
لا توجد طريقة لتجاوز هذا التأثير -أنا-. مع من أنا. يمكنك تحديد البحث
الدليل الذي كان موجودًا عند استدعاء المترجم. هذا ليس بالضبط
نفس ما يفعله المعالج المسبق افتراضيًا ، ولكنه غالبًا ما يكون مرضيًا.

-أنا- لا يمنع استخدام دلائل النظام القياسية لملفات الرأس.
وهكذا، -أنا- و -نوستدينك مستقلة.

تحديد الهدف تشمل و مترجم التجريبية
الطريقة المعتادة لتشغيل GCC هي تشغيل الملف التنفيذي المسمى دول مجلس التعاون الخليجيالطرق أو آلة-مجلس التعاون الخليجي عندما عبر-
تجميع أو آلة-مجلس التعاون الخليجي-الإصدار لتشغيل إصدار غير الإصدار الذي تم تثبيته
الاخير.

أجهزة التبخير الموديلات و تكوينات
يمكن أن يكون لكل نوع من أنواع الآلات المستهدفة خياراته الخاصة ، بدءًا من -m، لإختيار
بين نماذج أو تكوينات الأجهزة المختلفة - على سبيل المثال ، 68010 مقابل 68020 ، عائم
معالج مساعد أو لا شيء. يمكن لنسخة واحدة مثبتة من المترجم أن تترجم لأي نموذج
أو التكوين ، وفقًا للخيارات المحددة.

تدعم بعض تكوينات المترجم أيضًا خيارات خاصة إضافية ، عادةً لـ
التوافق مع المجمعين الآخرين على نفس النظام الأساسي.

ادابتيفا عيد الغطاس مزيد من الخيارات

تشبه -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 ، لذا استخدم هذه التعليمات للمكالمات المباشرة. الافتراضي
is - مكالمات طويلة.

- صغير 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 ، مما يجعل التحميل صغيرًا سلبيًا
الثوابت وبعض أقنعة البت بشكل أسرع. القيم المسموح بها لـ reg هي r43 و r63 ،
التي تحدد استخدام هذا السجل كسجل ثابت ، ولا شيء ، مما يعني أنه لا
يستخدم السجل لهذا الغرض. الافتراضي هو -m1reg- لا شيء.

آرتش64 مزيد من الخيارات

تم تحديد هذه الخيارات لتطبيقات AArch64:

-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
المتغيرات.

- مسيرة =الاسم
حدد اسم بنية الهدف ، مُلحقًا اختياريًا بواحد أو أكثر
معدِّلات الميزات. هذا الخيار له الشكل - مسيرة =قوس{+[لا]ميزة}*، أين ال
فقط قيمة قوس is armv8 أ. القيم المحتملة لـ ميزة موثقة في
القسم الفرعي أدناه.

عند تحديد معدِّلات الميزات المتعارضة ، يتم استخدام الميزة الموجودة في أقصى اليمين.

يستخدم GCC هذا الاسم لتحديد نوع التعليمات التي يمكنه إصدارها عند الإنشاء
كود التجميع. يمكن استخدام هذا الخيار مع أو بدلاً من -mcpu =
الخيار.

-mcpu =الاسم
حدد اسم المعالج الهدف ، مُلحقًا اختياريًا بميزة واحدة أو أكثر
الصفات التعريفية. هذا الخيار له الشكل -mcpu =وحدة المعالجة المركزية{+[لا]ميزة} * حيثما كان ذلك ممكناً
قيم وحدة المعالجة المركزية . عام, كبير. القيم المحتملة لـ ميزة موثقة في
القسم الفرعي أدناه.

عند تحديد معدِّلات الميزات المتعارضة ، يتم استخدام الميزة الموجودة في أقصى اليمين.

يستخدم GCC هذا الاسم لتحديد نوع التعليمات التي يمكنه إصدارها عند الإنشاء
كود التجميع.

-mtune =الاسم
حدد اسم المعالج لضبط الأداء. سيتم ضبط الكود
كما لو كان المعالج الهدف من النوع المحدد في هذا الخيار ، لكنه لا يزال يستخدم
تعليمات متوافقة مع المعالج الهدف المحدد بواسطة أ -mcpu = اختيار. هذه
لا يمكن إلحاق الخيار بمعدلات الميزات.

-مارس و - وحدة المعالجة المركزية معدِّلات الميزات

تستخدم معدِّلات الميزات مع -مارس و - وحدة المعالجة المركزية يمكن أن يكون أحد ما يلي:

التشفير
تمكين امتداد التشفير. هذا يعني أن SIMD المتقدمة ممكّنة.

fp تفعيل تعليمات النقطة العائمة.

سيمد
تفعيل تعليمات SIMD المتقدمة. هذا يعني أن تعليمات الفاصلة العائمة هي
ممكن. هذا هو الإعداد الافتراضي لجميع القيم الحالية الممكنة للخيارات -مارس و
-mcpu =.

ARM مزيد من الخيارات

تشبه -m يتم تحديد الخيارات لبنيات Advanced RISC Machines (ARM):

-مابي =الاسم
قم بإنشاء رمز لـ ABI المحدد. القيم المسموح بها هي: أبس- جنو, atpcs, com.aapcs,
aapcs لينكس و com.iwmmxt.

- خرائط - الإطار
قم بإنشاء إطار مكدس متوافق مع معيار استدعاء إجراء ARM للجميع
الوظائف ، حتى لو لم يكن ذلك ضروريًا تمامًا للتنفيذ الصحيح للكود.
تحديد - مؤشر الإطار مع هذا الخيار سيؤدي إلى عدم وجود إطارات المكدس
ولدت لوظائف طرفية. الافتراضي هو -منو- apcs- الإطار.

خرائط
هذا مرادف ل - خرائط - الإطار.

- الإبهام - البيني
قم بإنشاء رمز يدعم الاتصال بين مجموعات تعليمات ARM و Thumb.
بدون هذا الخيار ، في بنيات ما قبل الإصدار 5 ، لا يمكن أن تكون مجموعتي التعليمات
يستخدم بشكل موثوق داخل برنامج واحد. الافتراضي هو -mno-الإبهام البيني، منذ ذلك الحين قليلا
يتم إنشاء رمز أكبر عندما - الإبهام - البيني محدد. في تكوينات AAPCS
هذا الخيار لا معنى له.

-منو-جدولة-برولوج
منع إعادة ترتيب التعليمات في مقدمة الوظيفة ، أو دمج
تلك التعليمات مع التعليمات الموجودة في جسم الوظيفة. هذا يعني أن كل شيء
ستبدأ الوظائف بمجموعة يمكن التعرف عليها من التعليمات (أو في الواقع واحدة من أ
الاختيار من مجموعة صغيرة من المقدمات الوظيفية المختلفة) ، ويمكن أن تكون هذه المعلومات
تستخدم لتحديد موقع البداية إذا كانت الوظائف داخل جزء قابل للتنفيذ من التعليمات البرمجية. الافتراضي
is -مسيد-برولوج.

-mfloat-abi =الاسم
تحدد النقطة العائمة ABI المطلوب استخدامها. القيم المسموح بها هي: ناعم, com.softfp و
الصعب.

تحديد ناعم يتسبب في قيام دول مجلس التعاون الخليجي بإنشاء مخرجات تحتوي على استدعاءات مكتبة للتعويم-
عمليات النقطة. com.softfp يسمح بإنشاء رمز باستخدام الفاصلة العائمة للأجهزة
التعليمات ، ولكن لا يزال يستخدم اصطلاحات الاستدعاء ذات العوامة الناعمة. الصعب يسمح
إنشاء تعليمات الفاصلة العائمة واستخدام اصطلاحات استدعاء خاصة بـ FPU.

يعتمد الإعداد الافتراضي على التكوين الهدف المحدد. لاحظ أن أداة التعويم الثابت
وأنظمة ABI ذات الطفو الناعم غير متوافقة مع الارتباط ؛ يجب عليك تجميع برنامجك بالكامل باستخدام
نفس ABI ، وربطها بمجموعة متوافقة من المكتبات.

-ملل-endian
قم بإنشاء رمز لمعالج يعمل في الوضع الصغير. هذا هو الإعداد الافتراضي لـ
جميع التكوينات القياسية.

-mbig-endian
إنشاء رمز لمعالج يعمل في الوضع الكبير ؛ الافتراضي هو ترجمة
رمز لمعالج صغير.

-كلمات-ليتل-إندان
ينطبق هذا الخيار فقط عند إنشاء رمز للمعالجات الكبيرة. يولد
رمز لترتيب الكلمات باللغة الإنجليزية الصغيرة ولكن ترتيب بايت كبير. هذا هو بايت
ترتيب النموذج 32107654. ملاحظة: يجب استخدام هذا الخيار فقط إذا طلبت ذلك
التوافق مع الكود الخاص بمعالجات ARM الكبيرة التي تم إنشاؤها بواسطة إصدارات من
مترجم قبل 2.8. هذا الخيار مهمل الآن.

- مسيرة =الاسم
هذا يحدد اسم بنية 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.iwmmxt, com.iwmmxt2, ep9312.

-مارش = أصلي يتسبب في قيام المترجم بالكشف التلقائي عن بنية المبنى
الحاسوب. في الوقت الحالي ، هذه الميزة مدعومة فقط على 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,
القشرة- A15, القشرة- r4, القشرة- r4f, القشرة- r5, قشرة-m4, قشرة-m3, قشرة-m1,
قشرة-m0, xscale, com.iwmmxt, com.iwmmxt2, ep9312, fa526, fa626, fa606te, fa626te, fmp626,
fa726te.

-mtune = عام-قوس يحدد أن GCC يجب أن تضبط الأداء لمزيج من
معالجات داخل العمارة قوس. الهدف هو إنشاء رمز يعمل جيدًا على
المعالجات الحالية الأكثر شيوعًا ، والموازنة بين التحسينات التي تفيد البعض
وحدات المعالجة المركزية في النطاق ، وتجنب مخاطر أداء وحدات المعالجة المركزية الأخرى. آثار ال
قد يتغير هذا الخيار في الإصدارات المستقبلية لدول مجلس التعاون الخليجي حيث تأتي نماذج وحدة المعالجة المركزية وتذهب.

-mtune = أصلي يتسبب في قيام المترجم بالكشف التلقائي عن وحدة المعالجة المركزية لجهاز الكمبيوتر. في
حاليًا ، هذه الميزة مدعومة فقط على Linux ، وليست كل البنى
معروف. إذا لم ينجح الاكتشاف التلقائي ، فلن يكون للخيار أي تأثير.

-mcpu =الاسم
هذا يحدد اسم معالج ARM الهدف. يستخدم GCC هذا الاسم لاشتقاق
اسم بنية ARM المستهدفة (كما لو تم تحديدها بواسطة -مارس) ومعالج ARM
اكتب لضبط الأداء (كما لو تم تحديده بواسطة -متوني). أين هذا الخيار
يستخدم بالتزامن مع -مارس or -متوني، فهذه الخيارات لها الأسبقية على
الجزء المناسب من هذا الخيار.

الأسماء المسموح بها لهذا الخيار هي نفسها أسماء -متوني.

-mcpu = عام-قوس هو أيضا جائز ، ويعادل - مسيرة =قوس
-mtune = عام-قوس. شاهد -متوني للمزيد من المعلومات.

-mcpu = أصلي يتسبب في قيام المترجم بالكشف التلقائي عن وحدة المعالجة المركزية لجهاز الكمبيوتر. في
حاليًا ، هذه الميزة مدعومة فقط على Linux ، وليست كل البنى
معروف. إذا لم ينجح الاكتشاف التلقائي ، فلن يكون للخيار أي تأثير.

-mfpu =الاسم
-mfpe =عدد
-mfp =عدد
هذا يحدد ما هي أجهزة الفاصلة العائمة (أو مضاهاة الأجهزة) المتوفرة على
الهدف. الأسماء المسموح بها هي: fpa, fpe2, fpe3, مستقل, vfp, vfpv3, vfpv3- fp16,
vfpv3-d16, vfpv3- d16- fp16, vfpv3xd, vfpv3xd- fp16, نيون, النيون fp16, vfpv4, vfpv4-d16,
FPV4-SP-D16 و النيون vfpv4. -الطابع المتعدد و -mfpe مرادفات ل -مفبو=fpeعدد، ل
التوافق مع الإصدارات الأقدم من دول مجلس التعاون الخليجي.

If -مسنة- تعويم محدد هذا يحدد تنسيق قيم الفاصلة العائمة.

إذا كانت أجهزة النقطة العائمة المحددة تشتمل على امتداد NEON (على سبيل المثال -مفبو=نيون),
لاحظ أن عمليات الفاصلة العائمة لن يتم استخدامها بواسطة بطاقة التوجيه التلقائي لدول مجلس التعاون الخليجي
ما لم -ممتعة-الرياضيات-التحسينات محدد أيضا. هذا لأن أجهزة NEON
لا يطبق بشكل كامل معيار IEEE 754 لحساب الفاصلة العائمة (بتنسيق
يتم التعامل مع قيم غير طبيعية معينة على أنها صفر) ، لذلك يمكن استخدام تعليمات NEON
يؤدي إلى فقدان الدقة.

-نسق mfp16 =الاسم
حدد تنسيق نوع الفاصلة العائمة نصف الدقة "__fp16". مسموح
الأسماء لا شيء, IEEEو البديل؛ الافتراضي هو لا شيء، في هذه الحالة "__fp16"
لم يتم تعريف النوع.

-حجم الهيكل =n
سيتم تقريب حجم جميع الهياكل والنقابات إلى مضاعف العدد
من البتات التي حددها هذا الخيار. القيم المسموح بها هي 8 و 32 و 64. القيمة الافتراضية
يختلف باختلاف سلاسل الأدوات. بالنسبة لسلسلة أدوات COFF المستهدفة ، تكون القيمة الافتراضية هي
8. يسمح بقيمة 64 فقط إذا كان ABI الأساسي يدعمها.

يمكن أن يؤدي تحديد العدد الأكبر إلى إنتاج رمز أسرع وأكثر كفاءة ، ولكن يمكن أيضًا أن ينتج عنه
زيادة حجم البرنامج. من المحتمل أن تكون القيم المختلفة غير متوافقة.
لا يمكن أن تتوقع التعليمات البرمجية المجمعة بقيمة واحدة بالضرورة أن تعمل مع التعليمات البرمجية أو المكتبات
جمعت بقيمة أخرى ، إذا تبادلوا المعلومات باستخدام الهياكل أو النقابات.

مابورت أون نورترن
إنشاء استدعاء لوظيفة "إحباط" في نهاية وظيفة "نورترن". ستكون
يتم تنفيذه إذا حاولت الوظيفة العودة.

- مكالمات طويلة
- مكالمات طويلة
يطلب من المترجم إجراء استدعاءات الوظائف عن طريق تحميل عنوان ملف
وظيفة في سجل ثم إجراء مكالمة روتين فرعي على هذا السجل. هذه
التبديل مطلوب إذا كانت الوظيفة الهدف ستقع خارج عنونة 64 ميغا بايت
نطاق الإصدار المستند إلى الإزاحة لتعليمات الإجراء الفرعي.

حتى إذا تم تمكين هذا المفتاح ، فلن يتم تحويل جميع مكالمات الوظائف إلى مكالمات طويلة.
الاستدلال هو أن الوظائف الثابتة ، الوظائف التي لها الامتداد مكالمة قصيرة ينسب،
الوظائف الموجودة داخل نطاق # براغما no_long_calls التوجيه والوظائف
الذين تم بالفعل تجميع تعريفاتهم داخل وحدة التجميع الحالية ، سوف
لا تتحول إلى مكالمات طويلة. الاستثناء من هذه القاعدة هو تلك الوظيفة الضعيفة
التعريفات والوظائف ذات الامتداد مكالمة طويلة السمة أو قسم السمة و
الوظائف التي تقع في نطاق أ # براغما مكالمات طويلة التوجيه ، سيكون دائمًا
تحولت إلى مكالمات طويلة.

لم يتم تمكين هذه الميزة بشكل افتراضي. التحديد - مكالمات طويلة سوف يستعيد
السلوك الافتراضي ، كما هو الحال مع وضع استدعاءات الوظائف في نطاق # براغما
مكالمات طويلة التوجيه. لاحظ أن هذه المفاتيح ليس لها أي تأثير على كيفية عمل المترجم
يولد رمزًا للتعامل مع استدعاءات الوظائف عبر مؤشرات الوظيفة.

-مفردة الموافقة المسبقة عن علم- قاعدة
تعامل مع السجل المستخدم لعنونة الموافقة المسبقة عن علم على أنه للقراءة فقط ، بدلاً من تحميله في ملف
مقدمة لكل وظيفة. نظام وقت التشغيل مسؤول عن تهيئة هذا
التسجيل بقيمة مناسبة قبل بدء التنفيذ.

تسجيل -mpic =ريج
حدد السجل الذي سيتم استخدامه لعنونة الموافقة المسبقة عن علم. الافتراضي هو R10 ما لم مكدس-
يتم تمكين الفحص ، عند استخدام R9.

-مراخ-إصلاح-إدخالات غير صالحة
أدخل NOPs في دفق التعليمات لحل المشاكل مع
تركيبات تعليمات مافريك غير صالحة. هذا الخيار صالح فقط إذا كان
- وحدة المعالجة المركزية = ep9312 تم استخدام الخيار لتمكين توليد التعليمات لـ Cirrus
معالج مشترك النقطة العائمة المنشق. لم يتم تمكين هذا الخيار افتراضيًا ، منذ ذلك الحين
المشكلة موجودة فقط في تطبيقات مافريك الأقدم. يمكن إعادة التقصير
تم تمكينه عن طريق استخدام -منو-سيروس-فيكس-إينس إنز التبديل.

-موقع-وظيفة-اسم
اكتب اسم كل وظيفة في قسم النص ، قبل الوظيفة مباشرة
مقدمة. الكود الذي تم إنشاؤه مشابه لهذا:

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 بت عددية. تم تعطيل هذا افتراضيا
نظرًا لأن تكلفة نقل البيانات من السجلات الأساسية إلى نيون مرتفعة.

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 {} = "ata6289"، "attiny13"، "attiny13a"، "attiny2313"،
"attiny2313a" ، "attiny24" ، "attiny24a" ، "attiny25" ، "attiny261" ، "attiny261a" ،
"attiny43u" ، "attiny4313" ، "attiny44" ، "attiny44a" ، "attiny45" ، "attiny461" ،
"attiny461a" ، "attiny48" ، "attiny84" ، "attiny84a" ، "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 {} = "atmega16u2"، "atmega32u2"، "atmega8u2"،
"attiny167", "at90usb162", "at90usb82".

"avr4"
أجهزة "محسّنة" تصل سعتها إلى 8 @ تعادل {} كيلوبايت من ذاكرة البرنامج. MCUtie {} =
"atmega48" ، "atmega48a" ، "atmega48p" ، "atmega8" ، "atmega8hva" ، "atmega8515" ،
"atmega8535" ، "atmega88" ، "atmega88a" ، "atmega88p" ، "atmega88pa" ، "at90pwm1" ،
"at90pwm2", "at90pwm2b", "at90pwm3", "at90pwm3b", "at90pwm81".

"avr5"
الأجهزة "المحسّنة" بسعة 16 @ tie {} KiB حتى 64 @ tie {} كيلوبايت من ذاكرة البرنامج.
MCUtie {} = "atmega16"، "atmega16a"، "atmega16hva"، "atmega16hva2"، "atmega16hvb"،
"atmega16m1" ، "atmega16u4" ، "atmega161" ، "atmega162" ، "atmega163" ، "atmega164a" ،
"atmega164p" ، "atmega165" ، "atmega165a" ، "atmega165p" ، "atmega168" ، "atmega168a" ،
"atmega168p" ، "atmega169" ، "atmega169a" ، "atmega169p" ، "atmega169pa" ، "atmega32" ،
"atmega32c1", "atmega32hvb", "atmega32m1", "atmega32u4", "atmega32u6",
"atmega323" ، "atmega324a" ، "atmega324p" ، "atmega324pa" ، "atmega325" ، "atmega325a" ،
"atmega325p" ، "atmega3250" ، "atmega3250a" ، "atmega3250p" ، "atmega328" ،
"atmega328p" ، "atmega329" ، "atmega329a" ، "atmega329p" ، "atmega329pa" ،
"atmega3290" ، "atmega3290a" ، "atmega3290p" ، "atmega406" ، "atmega64" ، "atmega64c1" ،
"atmega64hve" ، "atmega64m1" ، "atmega640" ، "atmega644" ، "atmega644a" ، "atmega644p" ،
"atmega644pa" ، "atmega645" ، "atmega645a" ، "atmega645p" ، "atmega6450" ،
"atmega6450a" ، "atmega6450p" ، "atmega649" ، "atmega649a" ، "atmega649p" ،
"atmega6490", "at90can32", "at90can64", "at90pwm216", "at90pwm316", "at90scr100",
"at90usb646" ، "at90usb647" ، "at94k" ، "m3000".

"avr51"
الأجهزة "المحسّنة" بسعة 128 @ tie {} كيلوبايت من ذاكرة البرنامج. MCUtie {} = "atmega128"،
"atmega128rfa1" ، "atmega1280" ، "atmega1281" ، "atmega1284p" ، "at90can128" ،
"at90usb1286" ، "at90usb1287".

"avr6"
الأجهزة "المحسّنة" التي تحتوي على كمبيوتر ثلاثي البايت ، أي بأكثر من 3 @ تعادل {} كيلوبايت من البرنامج
ذاكرة. MCUtie {} = "atmega2560"، "atmega2561".

"avrxmega2"
أجهزة "XMEGA" مع أكثر من 8 @ tie {} KiB وما يصل إلى 64 @ tie {} KiB من ذاكرة البرنامج.
MCUtie {} = "atxmega16a4"، "atxmega16d4"، "atxmega16x1"، "atxmega32a4"،
"atxmega32d4" ، "atxmega32x1".

"avrxmega4"
أجهزة "XMEGA" التي يزيد وزنها عن 64 كيلوبايت {} كيلوبايت وما يصل إلى 128 @ تعادل {} كيلوبايت من البرنامج
ذاكرة. MCUtie {} = "atxmega64a3"، "atxmega64d3".

"avrxmega5"
أجهزة "XMEGA" التي يزيد وزنها عن 64 كيلوبايت {} كيلوبايت وما يصل إلى 128 @ تعادل {} كيلوبايت من البرنامج
الذاكرة وأكثر من 64 @ التعادل {} كيلوبايت من ذاكرة الوصول العشوائي. MCUtie {} = "atxmega64a1" ،
"atxmega64a1u".

"avrxmega6"
أجهزة "XMEGA" مع أكثر من 128 @ تعادل {} كيلوبايت من ذاكرة البرنامج. MCUtie {} =
"atxmega128a3", "atxmega128d3", "atxmega192a3", "atxmega192d3", "atxmega256a3",
"atxmega256a3b", "atxmega256a3bu", "atxmega256d3".

"avrxmega7"
أجهزة "XMEGA" التي تحتوي على أكثر من 128 @ تعادل {} كيلوبايت من ذاكرة البرنامج وأكثر من
64 @ التعادل {} كيلوبايت من ذاكرة الوصول العشوائي. MCUtie {} = "atxmega128a1"، "atxmega128a1u".

"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 ، ولكنه ينتج عنه أصغر
حجم الكود.

-منو المقاطعات
الرمز الذي تم إنشاؤه غير متوافق مع مقاطعات الأجهزة. حجم الكود أصغر.

-استراحة
حاول استبدال "CALL" resp. تعليمات "JMP" بواسطة أقصر مدة "RCALL". "RJMP"
التعليمات إن وجدت. يؤدي إعداد "-mrelax" إلى إضافة خيار "--relax" إلى ملف
سطر الأوامر رابط عند استدعاء الرابط.

يتم تنفيذ القفز بالاسترخاء بواسطة الرابط لأنه لم يتم التعرف على إزاحات القفز من قبل
يقع الرمز. لذلك ، رمز المجمع الذي تم إنشاؤه بواسطة المترجم هو نفسه ،
لكن التعليمات الواردة في الملف القابل للتنفيذ قد تختلف عن التعليمات الواردة في المجمع
رمز.

يجب تشغيل الاسترخاء إذا كانت هناك حاجة إلى بذرة رابط ، راجع قسم "EIND" و
بذرة رابط أدناه.

- مكالمات قصيرة
تم إهمال هذا الخيار وستتم إزالته في GCC 4.8. انظر "-mrelax" للحصول على أ
الاستبدال.

استخدم إرشادات "RCALL" / "RJMP" حتى على الأجهزة ذات 16 @ tie {} كيلوبايت أو أكثر من البرامج
الذاكرة ، أي على الأجهزة التي تحتوي على تعليمات "CALL" و "JMP".

-msp8
تعامل مع سجل مؤشر المكدس على أنه سجل 8 بتات ، أي افترض البايت العالي لـ
مؤشر المكدس هو صفر. بشكل عام ، لا تحتاج إلى ضبط هذا الخيار يدويًا.

يتم استخدام هذا الخيار داخليًا بواسطة المترجم لتحديد وبناء ملفات متعددة لـ
معماريات "avr2" و "avr25". تمزج هذه البنى الأجهزة مع وبدون
"SPH". لأي إعداد بخلاف "-mmcu = avr2" أو "-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 بتات @ التعادل السفلية {} من مؤشر المكدس.

"EIND" وأجهزة بها أكثر من 128 كي بايت من فلاش

يبلغ عرض المؤشرات في التنفيذ 16 @ تعادل {} بت. عنوان الوظيفة أو التسمية
يتم تمثيله كعنوان كلمة بحيث يمكن للقفزات والمكالمات غير المباشرة استهداف أي رمز
العنوان في نطاق 64 @ التعادل {} الكلمات كي.

من أجل تسهيل القفز غير المباشر على الأجهزة بأكثر من 128 @ تعادل {} كي بايت من
مساحة ذاكرة البرنامج ، هناك وظيفة تسجيل خاصة تسمى "EIND" والتي تعمل بمثابة
الجزء الأكثر أهمية من عنوان الهدف عندما تكون تعليمات "EICALL" أو "EIJMP"
مستخدم.

يتم التعامل مع القفزات والمكالمات غير المباشرة على هذه الأجهزة على النحو التالي بواسطة المترجم وهي
تخضع لبعض القيود:

· المترجم لا يعيّن "EIND" أبدًا.

· يستخدم المترجم "EIND" ضمنيًا في تعليمات "EICALL" / "EIJMP" أو قد يقرأ
"EIND" مباشرة من أجل محاكاة مكالمة / قفزة غير مباشرة عن طريق "RET"
تعليمات.

· يفترض المترجم أن "EIND" لا يتغير أبدًا أثناء رمز بدء التشغيل أو أثناء
تطبيق. على وجه الخصوص ، لا يتم حفظ / استعادة "EIND" في الوظيفة أو المقاطعة
خدمة روتينية مقدمة / خاتمة.

بالنسبة للمكالمات غير المباشرة للوظائف والمحسوبة ، فإن الرابط يولد بذرة. كعب
تسمى أحيانًا منصات القفز الترامبولين. وبالتالي ، فإن الاتصال / القفز غير المباشر يقفز إلى
مثل كعب. يحتوي كعب الروتين على قفزة مباشرة إلى العنوان المطلوب.

رابط الاسترخاء يجب أن يكون قيد التشغيل بحيث الرابط سوف يولد بذرة
بشكل صحيح لجميع المواقع. راجع خيار المترجم "-mrelax" وخيار linler
"--يستريح". هناك حالات زاوية حيث من المفترض أن يقوم الرابط بإنشاء بذرة ولكن
يجهض بدون استرخاء وبدون رسالة خطأ مفيدة.

يتم ترتيب نص الرابط الافتراضي للرمز مع "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" حسب الحاجة قبل العملية.

· إذا كان الجهاز يدعم ذاكرة الوصول العشوائي أكبر من 64 @ التعادل {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، 102، 104، 105، 106، 107

For MCU= "avr2" ، "avr25" ، "avr3" ، "avr31" ، "avr35" ، "avr4" ، "avr5" ، "avr51" ، "avr6" ،
"avrxmega2" ، "avrxmega4" ، "avrxmega5" ، "avrxmega6" ، "avrxmega7" ، على التوالي. لو MCU
جهازًا ، يتم تعيين هذا الماكرو المدمج وفقًا لذلك. على سبيل المثال ، مع
"-mmcu = atmega8" سيتم تعريف الماكرو على 4.

"__AVR_جهاز__"
ضبط "-mmcu =جهاز" يحدد هذا الماكرو المدمج الذي يعكس اسم الجهاز.
على سبيل المثال ، يحدد "-mmcu = atmega8" الماكرو المدمج "__AVR_ATmega8__" ،
"-mmcu = attiny261a" تعرف "__AVR_ATtiny261A__" ، إلخ.

تتبع أسماء وحدات الماكرو المضمنة المخطط "__AVR_جهاز__" أين جهاز هل
اسم الجهاز اعتبارًا من دليل مستخدم AVR. الفرق بين جهاز في المدمج
الماكرو و جهاز في "-mmcu =جهاز" هو أن الأخير دائمًا بالأحرف الصغيرة.

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 @ tie {} كيلوبايت من ذاكرة البرنامج وإذا لم يتم تعيين "-mshort-calls".

"__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 بت بواسطة
المترجم. يتأثر تعريف وحدات الماكرو هذه بـ "-mtiny-stack".

"__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__"
يعكس هذا الماكرو خيار سطر الأوامر "-mno-interrupts".

"__AVR_ERRATA_SKIP__"
"__AVR_ERRATA_SKIP_JMP_CALL__"
يجب ألا تتخطى بعض أجهزة AVR (AT90S8515 ، ATmega103) إرشادات 32 بت بسبب
خطأ الأجهزة. تعليمات التخطي هي "SBRS" و "SBRC" و "SBIS" و "SBIC" و "CPSE".
يتم تعريف الماكرو الثاني فقط إذا تم أيضًا تعيين "__AVR_HAVE_JMP_CALL__".

"__AVR_SFR_OFFSET __ =عوض"
التعليمات التي يمكنها معالجة سجلات الوظيفة الخاصة للإدخال / الإخراج مباشرة مثل "IN" ،
قد تستخدم "OUT" و "SBI" وما إلى ذلك عنوانًا مختلفًا كما لو تم توجيهها بواسطة تعليمات لـ
الوصول إلى ذاكرة الوصول العشوائي مثل "LD" أو "STS". هذه الإزاحة تعتمد على بنية الجهاز ولها
ليتم طرحها من عنوان RAM للحصول على عنوان I / O @ tie {}.

"__WITH_AVRLIBC__"
تم تكوين المترجم ليتم استخدامه مع AVR-Libc. انظر
خيار تكوين "--with-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 المستهدف. أي حلول متاحة لـ
سيتم تمكين مراجعة السيليكون المستهدفة. لو com.sirevision is لا شيء، لا توجد حلول
ممكن. لو com.sirevision is أي وقت، جميع الحلول للمعالج المستهدف ستكون
ممكن. يتم تعريف الماكرو "__SILICON_REVISION__" إلى رقمين سداسي عشريين
تمثل الأرقام الرئيسية والثانوية في مراجعة السيليكون. لو com.sirevision is
لا شيء، لم يتم تعريف "__SILICON_REVISION__". لو com.sirevision is أي وقتأطلقت حملة
تم تعريف "__SILICON_REVISION__" على أنه 0xffff. إذا كان هذا اختياري com.sirevision ليس
مستخدمًا ، يفترض مجلس التعاون الخليجي أحدث مراجعة معروفة للسيليكون للزعنفة السوداء المستهدفة
المعالج.

دعم لل bf561 غير مكتمل. ل bf561، يتم تحديد ماكرو المعالج فقط.
بدون هذا الخيار ، bf532 يتم استخدامه كمعالج افتراضيًا. المناظرة
وحدات ماكرو المعالج المحددة مسبقًا لـ وحدة المعالجة المركزية يتم تعريفه. ولل bfin-elf سلسلة أدوات
يؤدي هذا إلى ربط الأجهزة التي يوفرها موقع libgloss بصفحة الدفع لتسوية الفواتير (BSP) إذا كان -مسيم ليس
معطى.

-مسيم
يحدد أن البرنامج سيتم تشغيله على جهاز المحاكاة. هذا يسبب المحاكاة
يتم توفير 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 متعدد النواة. ملفات البدء المناسبة وملفات
سيتم استخدام البرامج النصية للارتباط لدعم multicore. يحدد هذا الخيار
"__BFIN_MULTICORE". يمكن استخدامه فقط مع -mcpu = bf561[-com.sirevision]. يمكن استخدامه
مع -مكوريا or -موقع ب. إذا تم استخدامه بدون -مكوريا or -موقع ب، واحدة
تطبيق / نموذج برمجة ثنائي النواة مستخدم. في هذا النموذج ، فإن الوظيفة الرئيسية لـ
يجب تسمية Core B باسم coreb_main. إذا تم استخدامه مع -مكوريا or -موقع ب، واحد
يتم استخدام التطبيق لكل نموذج برمجة أساسي. إذا لم يتم استخدام هذا الخيار ، واحد
يتم استخدام نموذج برمجة التطبيقات الأساسية.

-مكوريا
أنشئ تطبيقًا مستقلاً لـ Core A من BF561 عند استخدام تطبيق واحد لكل مركز
نموذج البرمجة. سيتم استخدام ملفات البدء المناسبة ونصوص الارتباط لدعم Core A.
يعرّف هذا الخيار "__BFIN_COREA". يجب استخدامه مع -متعدد النواة.

-موقع ب
أنشئ تطبيقًا مستقلاً لـ Core B من BF561 عند استخدام تطبيق واحد لكل مركز
نموذج البرمجة. سيتم استخدام ملفات البدء المناسبة ونصوص الارتباط لدعم Core B.
يعرّف هذا الخيار "__BFIN_COREB". عند استخدام هذا الخيار ، يجب أن يكون coreb_main
تستخدم بدلا من الرئيسية. يجب استخدامه مع -متعدد النواة.

-msdram
إنشاء تطبيق مستقل لـ SDRAM. ستكون ملفات البدء المناسبة والبرامج النصية للارتباط
تستخدم لوضع التطبيق في SDRAM. يجب أن يقوم برنامج التحميل بتهيئة SDRAM قبل التحميل
التطبيق في SDRAM. يعرّف هذا الخيار "__BFIN_SDRAM".

-micplb
افترض أنه تم تمكين ICPLBs في وقت التشغيل. هذا له تأثير على شذوذ معين
الحلول. بالنسبة لأهداف Linux ، يكون الافتراض هو افتراض تمكين ICPLBs ؛ ل
التطبيقات المستقلة الافتراضي هو إيقاف التشغيل.

C6X مزيد من الخيارات

- مسيرة =الاسم
هذا يحدد اسم العمارة الهدف. يستخدم GCC هذا الاسم لتحديد
ما نوع التعليمات التي يمكن أن تصدرها عند إنشاء رمز التجميع. مسموح
الأسماء هي: c62x, c64x, c64x +, c67x, c67x +, c674x.

-mbig-endian
إنشاء رمز لهدف كبير.

-ملل-endian
قم بإنشاء رمز لهدف صغير. هذا هو الافتراضي.

-مسيم
اختر ملفات بدء التشغيل ونص رابط مناسب لجهاز المحاكاة.

-msdata = افتراضي
ضع البيانات العالمية والثابتة الصغيرة في ملف .neardata المقطع الذي يشير إليه
سجل "B14". ضع بيانات عالمية وثابتة صغيرة غير مهيأة في ملف .Bss الجزء،
وهو المجاور ل .neardata الجزء. ضع بيانات صغيرة للقراءة فقط في ملف .Rodata
الجزء. الأقسام المقابلة المستخدمة لأجزاء كبيرة من البيانات هي .فرداتا, .بعيد
و .مقدار ثابت.

-msdata = الكل
ضع جميع البيانات ، وليس الأشياء الصغيرة فقط ، في الأقسام المخصصة للبيانات الصغيرة ، و
استخدام العنونة المتعلقة بتسجيل "B14" للوصول إليها.

-msdata = لا شيء
لا تستخدم الأقسام المخصصة للبيانات الصغيرة ، واستخدم العناوين المطلقة لـ
الوصول إلى كافة البيانات. ضع جميع البيانات العالمية والثابتة التي تمت تهيئتها في ملف .فرداتا الجزء،
وجميع البيانات غير المهيأة في .بعيد الجزء. ضع كل البيانات الثابتة في ملف .مقدار ثابت
والقسم الخاص به.

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-axis-elf للربط مع الإدخال والإخراج
وظائف من مكتبة محاكاة. التعليمات البرمجية والبيانات التي تمت تهيئتها والبيانات الصفرية التهيئة
يتم تخصيصها على التوالي.

-سم 2
اعجاب -سم، ولكن قم بتمرير خيارات الرابط لتحديد موقع البيانات التي تمت تهيئتها عند 0x40000000 وصفر-
تمت تهيئة البيانات على 0x80000000.

CR16 مزيد من الخيارات

تم تحديد هذه الخيارات خصيصًا لمنافذ CR16.

-مماك
تمكين استخدام تعليمات الضرب والتراكم. معطل بشكل افتراضي.

-mcr16cplus
-مكر 16 ج
قم بإنشاء رمز لبنية CR16C أو CR16C +. بنية CR16C + هي الإعداد الافتراضي.

-مسيم
يربط مكتبة libsim.a المتوافقة مع المحاكاة. ينطبق على قزم
مترجم فقط.

النعناع 32
اختر نوع عدد صحيح بعرض 32 بت.

-مبيت العمليات
يولد تعليمات sbit / cbit لمعالجة البتات.

- نموذج البيانات =نموذج
اختر نموذج البيانات. اختيارات نموذج . قرب, بعيدا or متوسط. متوسط هو الافتراضي.
ومع ذلك، بعيدا غير صالح عندما يتم اختيار الخيار -mcr16c لأن هندسة CR16C لا تفعل ذلك
دعم نموذج البيانات البعيدة.

داروين مزيد من الخيارات

يتم تحديد هذه الخيارات لجميع البنى التي تقوم بتشغيل نظام تشغيل داروين.

FSF GCC على داروين لا تنشئ ملفات كائن "fat" ؛ سيقوم بإنشاء ملف كائن لـ
العمارة الوحيدة التي تم إنشاؤها لاستهدافها. دول مجلس التعاون الخليجي أبل على داروين تخلق
ملفات "الدهون" إذا كانت متعددة -قوس يتم استخدام الخيارات ؛ يقوم بذلك عن طريق تشغيل المترجم أو
linker عدة مرات والانضمام إلى النتائج معًا ليبو.

النوع الفرعي للملف الذي تم إنشاؤه (مثل ppc7400 or ppc970 or i686) بواسطة
العلامات التي تحدد ISA الذي تستهدفه دول مجلس التعاون الخليجي ، مثل - وحدة المعالجة المركزية or -مارس.
-فرض_cpusubtype_ALL يمكن استخدام الخيار لتجاوز هذا.

تختلف أدوات داروين في سلوكها عند تقديمها مع عدم تطابق ISA. ال
المجمع as، سيسمح فقط باستخدام التعليمات الصالحة للنوع الفرعي
الملف الذي يتم إنشاؤه ، لذلك لا يمكنك وضع إرشادات 64 بت في ملف ppc750 ملف الكائن.
رابط المكتبات المشتركة ، / usr / bin / libtool، سوف تفشل وطباعة خطأ إذا طلب منها ذلك
لإنشاء مكتبة مشتركة بنوع فرعي أقل تقييدًا من ملفات الإدخال (لـ
على سبيل المثال ، في محاولة لوضع ppc970 ملف الكائن في ملف ppc7400 مكتبة). رابط ل
الملفات التنفيذية ld، سيعطي الملف القابل للتنفيذ بهدوء النوع الفرعي الأكثر تقييدًا من أي من
ملفات الإدخال الخاصة به.

-Fدير
أضف دليل إطار العمل دير إلى رأس قائمة الدلائل التي سيتم البحث فيها
لملفات الرأس. هذه الدلائل متداخلة مع تلك المحددة بواسطة -I
الخيارات ويتم فحصها بترتيب من اليسار إلى اليمين.

دليل إطار العمل هو دليل به أطر عمل. الإطار هو
الدليل مع ملف "رؤوس" و / أو "PrivateHeaders" الدليل الوارد فيه مباشرة
الذي ينتهي في ".إطار العمل". اسم إطار العمل هو اسم هذا الدليل
باستثناء ".إطار العمل". تم العثور على الرؤوس المرتبطة بإطار العمل في أحد
هذين الدليلين ، مع "رؤوس" يجري البحث عنها أولا. الإطار الفرعي هو ملف
دليل Framework الموجود في إطار عمل "إطار أعمال" الدليل. يشمل
يمكن أن تظهر رؤوس إطار العمل الفرعي فقط في رأس إطار عمل يحتوي على
إطار فرعي ، أو في رأس إطار فرعي شقيق. إطاران فرعيان هما أشقاء إذا
تحدث في نفس الإطار. يجب ألا يحمل الإطار الفرعي نفس اسم ملف
إطار العمل ، سيتم إصدار تحذير في حالة انتهاك ذلك. حاليا إطار فرعي
لا يمكن أن يكون لديك إطارات فرعية ، في المستقبل ، قد يتم تمديد الآلية لدعم
هذه. يمكن العثور على الأطر القياسية في "/ System / Library / Frameworks" و
"/ Library / Frameworks". مثال يتضمن يبدو مثل "#include "،
أين الإطار يشير إلى اسم إطار العمل والعنوان. h موجود في ملف
"PrivateHeaders" or "رؤوس" الدليل.

-الإطاردير
اعجاب -F فيما عدا الدليل الذي يتم التعامل معه كدليل نظام. الاختلاف الرئيسي
بين هذا -الإطار و -F هل هذا مع -الإطار المترجم لا يحذر
حول التركيبات المضمنة في ملفات الرأس التي تم العثور عليها عبر دير. هذا الخيار صالح
فقط لعائلة اللغات C.

-تناول
تنبعث معلومات تصحيح الأخطاء للرموز المستخدمة. بالنسبة إلى تنسيق تصحيح أخطاء STABS ،
وهذا يتيح -تصحيح-غير مستخدمة-رموز تصحيح. يكون هذا افتراضيًا في وضع التشغيل.

-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 (منطقي) is 4
عند تجميع ملفات Darwin / PowerPC و 1 عند الترجمة لداروين / 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 بدون عمليات الفاصلة العائمة ، يجب عليك التأكد من أن المكتبة
بنيت حتى لا ندعوها.

لاحظ أن تطبيقات 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 في الوظيفة
مقدمة من ملف التجميع الذي تم إنشاؤه. تحت DEC Unix ، هذا له تأثير
سيتم ربط إجراءات مكتبة الرياضيات المتوافقة مع IEEE بتنسيق.

- بناء الثوابت
عادةً ما يفحص GCC ثابت عدد صحيح 32 أو 64 بت لمعرفة ما إذا كان يمكنه بنائه
من الثوابت الأصغر في تعليمتين أو ثلاثة. إذا لم تستطع ، فسيخرج ملف
ثابت كحرفية وإنشاء رمز لتحميله من مقطع البيانات في وقت التشغيل.

استخدم هذا الخيار لطلب إنشاء GCC من جميع ثوابت عدد صحيح باستخدام رمز ، حتى لو
يتطلب الأمر مزيدًا من التعليمات (الحد الأقصى هو ستة).

عادةً ما تستخدم هذا الخيار لإنشاء محمل ديناميكي للمكتبة المشتركة. بحد ذاتها
مكتبة مشتركة ، يجب أن تنتقل إلى الذاكرة قبل أن تتمكن من العثور على المتغيرات
والثوابت في مقطع البيانات الخاص بها.

-ملفا- as
-مغاس
حدد ما إذا كنت تريد إنشاء رمز ليتم تجميعه بواسطة المُجمِّع الذي يوفره البائع
(-ملفا- as) أو بواسطة مُجمِّع جنو -مغاس.

-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 و
سيختار القيم الافتراضية لمجموعة التعليمات من المعالج الذي تحدده.
إذا لم تحدد نوع المعالج ، فسيقوم GCC بالتعيين الافتراضي للمعالج الذي يحتوي ملف
تم بناء المترجم.

القيم المدعومة لـ نوع_ وحدة المعالجة المركزية .

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.

ديسمبر ألفا / VMS مزيد من الخيارات

تشبه -m يتم تحديد الخيارات لتطبيقات DEC Alpha / VMS:

رموز العودة mvms
إرجاع رموز الحالة VMS من main. الافتراضي هو إرجاع شرط نمط POSIX
(مثل خطأ) رموز.

-mdebug-main =بادئة
ضع علامة على الإجراء الأول الذي يبدأ اسمه بـ بادئة كإجراء روتيني رئيسي لـ
المصحح.

-مملوك 64
افتراضي إلى إجراءات تخصيص الذاكرة 64 بت.

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. يجب استخدام رمز التبديل هذا مع -الآنسة.

النعناع 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 الذي يتم استدعاؤه بواسطة --مع- لد تكوين الخيار ، دول مجلس التعاون الخليجي
مسار البحث عن البرنامج ، وأخيرًا بواسطة المستخدم PATH. يمكن أن يكون الرابط الذي تستخدمه دول مجلس التعاون الخليجي
مطبوعة باستخدام التي دول مجلس التعاون الخليجي -طباعة-اسم البرنامج = ld`. هذا الخيار متاح فقط على
64 بت HP-UX GCC ، أي تم تكوينه باستخدام 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_extending_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. هذا الخيار
تعيين إشارات لكل من المعالج والرابط.

إنتل 386 و AMD x86-64 مزيد من الخيارات

تشبه -m يتم تحديد الخيارات لعائلة أجهزة الكمبيوتر i386 و x86-64:

-mtune =نوع وحدة المعالجة المركزية
ضبط ل نوع وحدة المعالجة المركزية كل ما ينطبق على الكود الذي تم إنشاؤه ، باستثناء ABI
ومجموعة التعليمات المتاحة. اختيارات نوع وحدة المعالجة المركزية هي:

عام
أنتج رمزًا محسنًا لمعظم معالجات IA32 / AMD64 / EM64T الأكثر شيوعًا. اذا أنت
تعرف على وحدة المعالجة المركزية التي سيتم تشغيل التعليمات البرمجية الخاصة بك عليها ، ثم يجب عليك استخدام المقابل
-متوني الخيار بدلا من -mtune = عام. ولكن ، إذا كنت لا تعرف بالضبط ما وحدة المعالجة المركزية
سيكون لدى مستخدمي التطبيق الخاص بك ، ثم يجب عليك استخدام هذا الخيار.

كما يتم نشر معالجات جديدة في السوق ، سلوك هذا الخيار
سوف يتغير. لذلك ، إذا قمت بالترقية إلى إصدار أحدث من GCC ، فإن الكود
سيتغير الخيار الذي تم إنشاؤه ليعكس المعالجات الأكثر شيوعًا عند
تم إطلاق هذا الإصدار من دول مجلس التعاون الخليجي.

لا يوجد -مارش = عام خيار بسبب -مارس يشير إلى مجموعة التعليمات
يمكن للمترجم أن يستخدم ، ولا توجد مجموعة تعليمات عامة تنطبق على الجميع
معالجات. فى المقابل، -متوني يشير إلى المعالج (أو ، في هذه الحالة ،
مجموعة المعالجات) التي تم تحسين الكود لها.

محلي
هذا يحدد وحدة المعالجة المركزية لضبطها في وقت التجميع عن طريق تحديد المعالج
نوع آلة الترجمة. استخدام -mtune = أصلي سينتج رمز محسن
للجهاز المحلي في ظل قيود مجموعة التعليمات المحددة.
باستخدام -مارش = أصلي سيمكن جميع مجموعات التعليمات الفرعية التي يدعمها المحلي
الجهاز (وبالتالي قد لا تعمل النتيجة على أجهزة مختلفة).

i386
وحدة المعالجة المركزية Intel الأصلية i386.

i486
وحدة المعالجة المركزية Intel i486. (لم يتم تنفيذ أي جدولة لهذه الشريحة.)

i586 ، بنتيوم
وحدة المعالجة المركزية Intel Pentium مع عدم وجود دعم MMX.

بنتيوم مم ×
تعتمد وحدة المعالجة المركزية Intel PentiumMMX على أساس Pentium مع دعم مجموعة تعليمات MMX.

بنتيومبرو
وحدة المعالجة المركزية Intel PentiumPro.

i686
مثل "عام" ، ولكن عند استخدامها كخيار "مسيرة" ، مجموعة تعليمات PentiumPro
سيتم استخدام الرمز ، لذلك سيتم تشغيل الكود على جميع شرائح عائلة i686.

بنتيوم 2
وحدة المعالجة المركزية Intel Pentium2 على أساس PentiumPro مع دعم مجموعة تعليمات MMX.

بنتيوم 3 ، بنتيوم 3 م
وحدة المعالجة المركزية Intel Pentium3 على أساس PentiumPro مع مجموعة تعليمات MMX و SSE
دعم.

بنتيوم م
إصدار منخفض الطاقة من Intel Pentium3 CPU مع مجموعة تعليمات MMX و SSE و SSE2
الدعم. تستخدم من قبل أجهزة الكمبيوتر المحمولة Centrino.

بنتيوم 4 ، بنتيوم 4 م
وحدة المعالجة المركزية Intel Pentium4 مع دعم مجموعة تعليمات MMX و SSE و SSE2.

بريسكوت
نسخة محسنة من وحدة المعالجة المركزية Intel Pentium4 مع تعليمات MMX و SSE و SSE2 و SSE3
مجموعة الدعم.

nocona
نسخة محسنة من Intel Pentium4 CPU مع امتدادات 64 بت و MMX و SSE و SSE2 و
دعم مجموعة تعليمات SSE3.

core2
وحدة المعالجة المركزية Intel Core2 مع ملحقات 64 بت ، تعليمات MMX و SSE و SSE2 و SSE3 و SSSE3
مجموعة الدعم.

corei7
وحدة المعالجة المركزية Intel Core i7 مع امتدادات 64 بت و MMX و SSE و SSE2 و SSE3 و SSSE3 و SSE4.1 و
دعم مجموعة تعليمات SSE4.2.

Corei7-AVX
وحدة المعالجة المركزية Intel Core i7 مع امتدادات 64 بت ، MMX ، SSE ، SSE2 ، SSE3 ، SSSE3 ، SSE4.1 ،
دعم مجموعة تعليمات SSE4.2 و AVX و AES و PCLMUL.

كور- AVX- ط
وحدة المعالجة المركزية Intel Core مع امتدادات 64 بت ، MMX ، SSE ، SSE2 ، SSE3 ، SSSE3 ، SSE4.1 ،
دعم مجموعة تعليمات SSE4.2 و AVX و AES و PCLMUL و FSGSBASE و RDRND و F16C.

ذرة
وحدة المعالجة المركزية Intel Atom مع ملحقات 64 بت ، تعليمات MMX و SSE و SSE2 و SSE3 و SSSE3
مجموعة الدعم.

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 ، أوبتيرون athlon64 ، أثلون- fx
وحدات المعالجة المركزية AMD K8 الأساسية مع دعم مجموعة تعليمات x86-64. (هذا يحل محل MMX ،
SSE ، SSE2 ، 3DNow !، 3D Now! وملحقات مجموعة التعليمات 64 بت.)

k8-sse3 ، أوبتيرون- sse3 ، Athlon64-sse3
إصدارات محسنة من k8 و opteron و athlon64 مع دعم مجموعة تعليمات 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 ، AVX ، XOP ، LWP ، AES ، PCL_MUL ، CX16 ، 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 بت
ملحقات.)

ونشيب c6
يتم التعامل مع وحدة المعالجة المركزية IDT Winchip C6 بنفس طريقة التعامل مع i486 مع مجموعة تعليمات MMX إضافية
دعم.

ونشيب 2
وحدة المعالجة المركزية IDT Winchip2 ، يتم التعامل معها بنفس طريقة التعامل مع i486 مع MMX و 3DNow إضافيين!
دعم مجموعة التعليمات.

c3 عبر C3 CPU مع MMX و 3DNow! دعم مجموعة التعليمات. (لا توجد جدولة
نفذت لهذه الشريحة.)

c3-2
عبر C3-2 CPU مع دعم مجموعة تعليمات MMX و SSE. (لا توجد جدولة
نفذت لهذه الشريحة.)

الجيود حجر كريم
وحدة المعالجة المركزية AMD المضمنة مع MMX و 3DNow! دعم مجموعة التعليمات.

أثناء اختيار ملف نوع وحدة المعالجة المركزية سيجدول الأمور بشكل مناسب لذلك
شريحة معينة ، لن يقوم المترجم بإنشاء أي كود لا يعمل على
نوع الجهاز الافتراضي بدون ملف - مسيرة =نوع وحدة المعالجة المركزية الخيار قيد الاستخدام. على سبيل المثال ، إذا
تم تكوين GCC لـ i686-pc-linux-gnu بعد ذلك -mtune = بنتيوم 4 سوف تولد رمز ذلك
تم ضبطه من أجل Pentium4 ولكنه لا يزال يعمل على أجهزة i686.

- مسيرة =نوع وحدة المعالجة المركزية
قم بإنشاء تعليمات لنوع الماكينة نوع وحدة المعالجة المركزية. اختيارات نوع وحدة المعالجة المركزية هي
نفس الشيء بالنسبة ل -متوني. علاوة على ذلك ، تحديد - مسيرة =نوع وحدة المعالجة المركزية يدل -mtune =نوع وحدة المعالجة المركزية.

-mcpu =نوع وحدة المعالجة المركزية
مرادف مهمل ل -متوني.

-mfpmath =وحدة
إنشاء حساب الفاصلة العائمة للوحدة المحددة وحدة. اختيارات وحدة هي:

387 استخدم المعالجات القياسية ذات الفاصلة العائمة 387 الموجودة في غالبية الرقائق
ويقلد بطريقة أخرى. الكود المترجم مع هذا الخيار يعمل في كل مكان تقريبًا.
يتم حساب النتائج المؤقتة بدقة 80 بت بدلاً من الدقة
المحدد بالنوع ، مما يؤدي إلى نتائج مختلفة قليلاً مقارنة بمعظم
رقائق أخرى. ارى -متجر طائر للحصول على وصف أكثر تفصيلاً.

هذا هو الخيار الافتراضي لمترجم i386.

SSE استخدم تعليمات الفاصلة العائمة العددية الموجودة في مجموعة تعليمات SSE. هذه
يتم دعم مجموعة التعليمات بواسطة Pentium3 والرقائق الأحدث ، في سطر AMD بواسطة
رقائق Athlon-4 و Athlon-xp و Athlon-MP. الإصدار السابق من تعليمات SSE
تدعم المجموعة فقط الحساب أحادي الدقة ، وبالتالي فإن
لا تزال العمليات الحسابية الدقيقة تتم باستخدام 387. إصدار لاحق ، موجود فقط في
يدعم Pentium4 وشرائح AMD x86-64 المستقبلية العمليات الحسابية ذات الدقة المزدوجة
أيضا.

للمترجم i386 ، تحتاج إلى استخدام - مسيرة =نوع وحدة المعالجة المركزية, مس or - msse2 مفاتيح
لتمكين امتدادات SSE وجعل هذا الخيار فعالاً. للمترجم x86-64 ،
يتم تمكين هذه الملحقات بشكل افتراضي.

يجب أن يكون الرمز الناتج أسرع بشكل كبير في معظم الحالات و
تجنب مشاكل عدم الاستقرار العددي في كود 387 ، ولكن قد يؤدي إلى كسر بعض المشاكل الموجودة
رمز يتوقع أن تكون الفترات الزمنية 80 بت.

هذا هو الخيار الافتراضي لمترجم x86-64.

SS ، 387
sse + 387
على حد سواء
حاول استخدام مجموعتي التعليمات في وقت واحد. هذا يضاعف بشكل فعال
كمية السجلات المتاحة وعلى الرقائق بوحدات تنفيذ منفصلة لـ 387
و SSE موارد التنفيذ أيضًا. استخدم هذا الخيار بعناية ، لأنه لا يزال
تجريبي ، لأن مخصِّص سجل دول مجلس التعاون الخليجي لا يمثل نموذجاً منفصلاً
تؤدي الوحدات الوظيفية بشكل جيد إلى أداء غير مستقر.

-الماس =لهجة
تعليمات الإخراج 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. حدد هذا الخيار لتجنب توليد تلك التعليمات. هذا الخيار هو
افتراضي على FreeBSD و OpenBSD و NetBSD. يتم تجاوز هذا الخيار عندما -مارس
يشير إلى أن وحدة المعالجة المركزية المستهدفة ستحتوي دائمًا على FPU وبالتالي لن تكون التعليمات
تحتاج مضاهاة. اعتبارًا من المراجعة 2.6.1 ، لا يتم إنشاء هذه التعليمات إلا إذا قمت بذلك
أيضا استخدام -ممتعة-الرياضيات-التحسينات التبديل.

-مزاوجة مزدوجة
-منو- محاذاة مزدوجة
التحكم في ما إذا كان GCC يعمل على محاذاة المتغيرات "المزدوجة" و "الطويلة المزدوجة" و "الطويلة" على أ
حد من كلمتين أو حد من كلمة واحدة. محاذاة المتغيرات "المزدوجة" في كلمتين
تنتج الحدود رمزًا يتم تشغيله بشكل أسرع إلى حد ما على ملف بنتيوم على حساب المزيد
ذاكرة.

في x86-64 ، -مزاوجة مزدوجة يتم تمكينه افتراضيًا.

: تحذير إذا كنت تستخدم -مزاوجة مزدوجة التبديل ، الهياكل التي تحتوي على الأنواع المذكورة أعلاه
ستتم محاذاة بشكل مختلف عن الواجهة الثنائية للتطبيق المنشورة
مواصفات 386 ولن تكون متوافقة مع الهياكل في الكود الثنائي
تم تجميعها بدون هذا المفتاح.

-م 96 بت- طويل- مزدوج
-م 128 بت- طويل- مزدوج
تتحكم مفاتيح التبديل هذه في حجم النوع "المزدوج الطويل". ثنائي التطبيق i386
واجهة تحدد الحجم ليكون 96 بت ، لذلك -م 96 بت- طويل- مزدوج هو الافتراضي في
وضع 32 بت.

تفضل الأبنية الحديثة (Pentium والإصدارات الأحدث) "long double" لتتماشى مع 8
أو حد 16 بايت. في المصفوفات أو الهياكل المطابقة لـ ABI ، هذا ليس كذلك
المستطاع. تحديد ذلك -م 128 بت- طويل- مزدوج محاذاة "مزدوج طويل" إلى 16 بايت
الحد عن طريق حشو "الازدواج الطويل" بصفر 32 بت إضافي.

في مترجم x86-64 ، -م 128 بت- طويل- مزدوج هو الخيار الافتراضي مثل ABI الخاص به
يحدد أن "مزدوج طويل" يجب محاذاته على حد 16 بايت.

لاحظ أن أيا من هذين الخيارين لا يتيح أي دقة إضافية فوق معيار x87
80 بت لـ "مزدوج طويل".

: تحذير إذا تجاوزت القيمة الافتراضية لـ ABI المستهدف ، فإن الهياكل و
المصفوفات التي تحتوي على متغيرات "طويلة مزدوجة" ستغير حجمها وكذلك وظيفتها
اصطلاح الاستدعاء للوظيفة التي تأخذ "long double" سيتم تعديلها. ومن ثم هم
لن يكون ثنائيًا متوافقًا مع المصفوفات أو الهياكل في التعليمات البرمجية المجمعة بدون ذلك
التبديل.

- عتبة البيانات الكبيرة =عدد
متى -mcmodel = متوسط البيانات أكبر من عتبة توضع بشكل كبير
قسم البيانات. يجب أن تكون هذه القيمة هي نفسها عبر كل الكائنات المرتبطة بالثنائي
والافتراضيات إلى 65535.

-مرتد
استخدم اصطلاحًا مختلفًا لاستدعاء الوظائف ، حيث تكون الدوال التي تتطلب إصلاحًا
عدد الحجج التي يتم إرجاعها باستخدام "ret" NUM التعليمات ، والتي تنبثق حججهم
أثناء العودة. هذا يحفظ تعليمة واحدة في المتصل لأنه ليست هناك حاجة لذلك
البوب ​​الحجج هناك.

يمكنك تحديد أنه يتم استدعاء وظيفة فردية باستخدام تسلسل الاستدعاء هذا
سمة الوظيفة STDCALL. يمكنك أيضًا تجاوز ملف -مرتد الخيار باستخدام
سمة الوظيفة cdecl.

: تحذير اتفاقية الاتصال هذه غير متوافقة مع تلك المستخدمة عادة على يونكس ،
لذلك لا يمكنك استخدامه إذا كنت بحاجة إلى استدعاء المكتبات المترجمة مع مترجم Unix.

أيضًا ، يجب عليك توفير نماذج أولية للوظائف لجميع الوظائف التي تأخذ متغيرًا
عدد الحجج (بما في ذلك "printf") ؛ وإلا سيتم إنشاء رمز غير صحيح
لإجراء مكالمات لتلك الوظائف.

بالإضافة إلى ذلك ، سوف ينتج رمز غير صحيح بشكل خطير إذا قمت باستدعاء وظيفة بها عدد كبير جدًا
الحجج. (عادة ، يتم تجاهل الحجج الإضافية بدون ضرر.)

-mregparm =NUM
التحكم في عدد السجلات المستخدمة لتمرير وسيطات عدد صحيح. بشكل افتراضي ، لا
تُستخدم السجلات لتمرير الوسائط ، ويمكن استخدام 3 سجلات على الأكثر. تستطيع
التحكم في هذا السلوك لوظيفة معينة باستخدام سمة الوظيفة regparm.

: تحذير إذا كنت تستخدم رمز التبديل هذا ، و NUM غير صفري ، إذًا يجب بناء جميع الوحدات
بنفس القيمة ، بما في ذلك أي مكتبات. وهذا يشمل مكتبات النظام و
وحدات بدء التشغيل.

-مسرقبارم
استخدم اصطلاحات تمرير تسجيل SSE للوسيطات العائمة والمزدوجة وقيم الإرجاع.
يمكنك التحكم في هذا السلوك لوظيفة معينة باستخدام سمة الوظيفة
com.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
أعد محاذاة المكدس عند الدخول. على معالج Intel x86 ، فإن ملف -Mstackrealign الخيار سوف تولد
مقدمة وخاتمة بديلة تعيد تنظيم كومة وقت التشغيل إذا لزم الأمر.
يدعم هذا المزج بين الأكواد القديمة التي تحافظ على تكديس 4 بايت متوافق مع الأكواد الحديثة
التي تحافظ على مكدس 16 بايت لتوافق SSE. انظر أيضا السمة
"force_align_arg_pointer" ، تنطبق على الوظائف الفردية.

-حدود المكدس المُفضَّلة =NUM
حاول إبقاء حدود المكدس محاذاة مع 2 مرفوعة إلى NUM حدود البايت. لو
- حدود المكدس - غير المفضلة غير محدد ، الافتراضي هو 4 (16 بايت أو 128 بت).

: تحذير عند إنشاء رمز لمعمارية x86-64 بامتدادات SSE
معاق، -حدود المكدس غير المفضلة = 3 يمكن استخدامها للحفاظ على محاذاة حدود المكدس
إلى حد 8 بايت. يجب عليك بناء جميع الوحدات مع -حدود المكدس غير المفضلة = 3,
بما في ذلك أي مكتبات. يتضمن ذلك مكتبات النظام ووحدات بدء التشغيل.

حدود المكدس الوشيكة =NUM
افترض أن المكدس الوارد محاذي للرقم 2 مرفوعًا إلى NUM حدود البايت. لو
-وشك-كومة-الحدود لم يتم تحديده ، الذي تم تحديده بواسطة
- حدود المكدس - غير المفضلة وسوف تستخدم.

في Pentium و PentiumPro ، يجب محاذاة القيم "المزدوجة" و "الطويلة المزدوجة" إلى
8 بايت حد (انظر -مزاوجة مزدوجة) أو تعاني من أداء وقت تشغيل كبير
ضربات الجزاء. في Pentium III ، قد يكون نوع بيانات امتداد SIMD المتدفق (SSE) "__m128"
لا تعمل بشكل صحيح إذا لم يتم محاذاة 16 بايت.

لضمان المحاذاة الصحيحة لهذه القيم على المكدس ، يجب أن تكون حدود المكدس كما
تتماشى مع تلك التي تتطلبها أي قيمة مخزنة في المكدس. علاوة على ذلك ، كل وظيفة
يجب أن يتم إنشاؤها بحيث تحافظ على محاذاة المكدس. وبالتالي استدعاء وظيفة
تم تجميعها باستخدام حد مكدس مفضل أعلى من دالة تم تجميعها باستخدام قيمة أقل
من المرجح أن تؤدي حدود المكدس المفضلة إلى عدم محاذاة المكدس. هذا موصى به
المكتبات التي تستخدم عمليات الاسترجاعات تستخدم دائمًا الإعداد الافتراضي.

تستهلك هذه المحاذاة الإضافية مساحة مكدس إضافية ، وتزيد بشكل عام من التعليمات البرمجية
بحجم. التعليمات البرمجية الحساسة لاستخدام مساحة المكدس ، مثل الأنظمة المضمنة و
نواة نظام التشغيل ، قد ترغب في تقليل المحاذاة المفضلة إلى
-حدود المكدس غير المفضلة = 2.

-ممممكس
-منو ممكس
مس
-منو- sse
- msse2
-رقم- sse2
- msse3
-رقم- sse3
-مسة 3
-منو- ssse3
- msse4.1
-رقم- sse4.1
- msse4.2
-رقم- sse4.2
- msse4
-رقم- sse4
-مافكس
-منو- AVX
-Mavx2
-mno- avx2
-مايس
-منو-إيس
-mpclmul
-منو- pclmul
-mfsgsbase
-mno-fsgsbase
-مرردند
-منو- rdrnd
-mf16c
-منو- f16c
-مفما
-منو-فما
- msse4a
-منو- sse4a
-mfma4
-منو- fma4
-mxop
-منو إكسوب
-mlwp
-منو- lwp
-m3dnow
-منو-3dnow
-mpopcnt
-منو-بوبكنت
-مبم
-منو-أبم
-MBMI
-mbmi2
-منو- BMI
-منو- bmi2
-mlzcnt
-منو- lzcnt
-mtbm
-منو- tbm
تعمل هذه المفاتيح على تمكين أو تعطيل استخدام الإرشادات في MMX و SSE و SSE2 و SSE3 و
SSSE3 ، SSE4.1 ، AVX ، AVX2 ، AES ، PCLMUL ، FSGSBASE ، RDRND ، F16C ، FMA ، SSE4A ، FMA4 ، XOP ،
LWP أو ABM أو BMI أو BMI2 أو LZCNT أو 3DNow!
مجموعات التعليمات الممتدة. هذه الإضافات متوفرة أيضًا كمدمجة
الوظائف: انظر X86 مدمج وظائف، للحصول على تفاصيل الوظائف الممكنة و
تم تعطيله بواسطة هذه المفاتيح.

للحصول على تعليمات SSE / SSE2 يتم إنشاؤها تلقائيًا من رمز النقطة العائمة (مثل
ضد 387 تعليمات) ، انظر -mfpmath = sse.

يقوم مجلس التعاون الخليجي بإلغاء تعليمات SSEx عندما -مافكس يستخدم. بدلاً من ذلك ، فإنه يولد AVX جديدًا
تعليمات أو معادلة AVX لجميع تعليمات SSEx عند الحاجة.

ستمكّن هذه الخيارات GCC من استخدام هذه التعليمات الموسعة في التعليمات البرمجية التي تم إنشاؤها ،
حتى بدون -mfpmath = sse. يجب أن تكون التطبيقات التي تقوم باكتشاف وحدة المعالجة المركزية في وقت التشغيل
تجميع ملفات منفصلة لكل معمارية مدعومة ، باستخدام العلامات المناسبة.
على وجه الخصوص ، يجب تجميع الملف الذي يحتوي على رمز اكتشاف وحدة المعالجة المركزية بدون
هذه الخيارات.

-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 بت
أنواع. هذا مفيد للعدادات عالية الدقة التي يمكن تحديثها بواسطة عدة
المعالجات (أو النوى). يتم إنشاء هذه التعليمات كجزء من الذري المدمج
الوظائف: انظر __sync البنايات or __الذري البنايات للتفاصيل.

-مصاحف
سيمكن هذا الخيار GCC من استخدام تعليمات SAHF في رمز 64 بت الذي تم إنشاؤه. مبكرا
تفتقر وحدات المعالجة المركزية Intel مع Intel 64 إلى تعليمات LAHF و SAHF المدعومة من AMD64 حتى
تقديم خطوة بنتيوم 4 G1 في ديسمبر 2005. يتم تحميل وتخزين LAHF و SAHF
التعليمات ، على التوالي ، لبعض أعلام الحالة. في وضع 64 بت ، SAHF
يتم استخدام التعليمات لتحسين الوظائف المضمنة "fmod" أو "drem" أو "المتبقية": see
أخرى البنايات للتفاصيل.

-مموفبي
سيمكن هذا الخيار GCC من استخدام تعليمات movbe لتنفيذ "__builtin_bswap32"
و "__builtin_bswap64".

-mrc32
سيمكن هذا الخيار الوظائف المضمنة ، "__builtin_ia32_crc32qi" ،
"__builtin_ia32_crc32hi". "__builtin_ia32_crc32si" و "__builtin_ia32_crc32di" إلى
توليد تعليمات آلة crc32.

- رثاء
سيمكن هذا الخيار GCC من استخدام تعليمات RCPSS و RSQRTSS (وتعليمات
المتغيرات الموجهة RCPPS و RSQRTPS) مع خطوة نيوتن رافسون إضافية إلى
زيادة الدقة بدلاً من DIVSS و SQRTSS (ومتغيراتها الموجهة) لـ
وسيطات الفاصلة العائمة أحادية الدقة. يتم إنشاء هذه التعليمات فقط عندما
-ممتعة-الرياضيات-التحسينات مع -الرياضيات- فقط و
- الرياضيات. لاحظ أنه في حين أن إنتاجية التسلسل أعلى من
من خلال تعليمات غير متبادلة ، يمكن أن تكون دقة التسلسل
انخفض بما يصل إلى 2 ulp (أي أن معكوس 1.0 يساوي 0.99999994).

لاحظ أن GCC يطبق "1.0f / sqrtf (خ) " من حيث RSQRTSS (أو RSQRTPS) بالفعل مع
-فاست-الرياضيات (أو تركيبة الخيار أعلاه) ، ولا تحتاج - رثاء.

لاحظ أيضًا أن دول مجلس التعاون الخليجي تصدر التسلسل أعلاه مع خطوة نيوتن رافسون الإضافية لـ
قسم عائم واحد متجه ومتجه "sqrtf (خ) " بالفعل مع -فاست-الرياضيات
(أو تركيبة الخيار أعلاه) ، ولا تحتاج - رثاء.

-mrecip =اختار
يسمح هذا الخيار بالتحكم في إرشادات التقدير المتبادل التي يمكن استخدامها. اختار
هي قائمة من الخيارات مفصولة بفواصل ، والتي قد يسبقها "!" لعكس
option: "all": قم بتمكين كل تعليمات التقدير ، "افتراضي": قم بتمكين الافتراضي
التعليمات ، أي ما يعادل - رثاء، "لا شيء": تعطيل كافة إرشادات التقدير ،
أي ما يعادل -منو- المتلقي، "div": تمكين التقريب للقسمة العددية ،
"vec-div": تمكين التقريب للقسمة الموجهة ، "sqrt": قم بتمكين
تقريب الجذر التربيعي العددي ، "vec-sqrt": تمكين التقريب لـ
متجه الجذر التربيعي.

على سبيل المثال ، -mrecip = الكل ،! sqrt من شأنه تمكين جميع عمليات التقريب المتبادلة ،
باستثناء الجذر التربيعي.

-mveclibabi =نوع
يحدد نوع ABI لاستخدامه في توجيه العناصر المضمنة باستخدام مكتبة خارجية.
الأنواع المدعومة هي "svml" لمكتبة Intel للرياضيات القصيرة و "acml" لمكتبة
أسلوب مكتبة AMD الرياضيات الأساسية للتفاعل. سوف يرسل 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 يستخدم و "__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 يستخدم. على حد سواء -ftree-vectorize و -ممتعة-الرياضيات-التحسينات لديك
ليتم تمكينها. يجب تحديد مكتبة متوافقة مع SVML أو ACML ABI على الرابط
مرة.

-مابي =الاسم
توليد التعليمات البرمجية لاتفاقية الاستدعاء المحددة. القيم المسموح بها هي: sysv For
ABI المستخدم في GNU / Linux وأنظمة أخرى و ms لـ Microsoft ABI. الافتراضي
هو استخدام Microsoft ABI عند استهداف Windows. على جميع الأنظمة الأخرى ، الافتراضي
هو SYSV ABI. يمكنك التحكم في هذا السلوك لوظيفة معينة باستخدام
سمة الوظيفة ms_abi/sysv_abi.

-mtls- اللهجة =نوع
قم بإنشاء رمز للوصول إلى التخزين المحلي لمؤشر الترابط باستخدام ملف النو ثيتل افريقي or غنو 2 الاتفاقيات. النو ثيتل افريقي
هو التقصير المحافظ ؛ غنو 2 أكثر كفاءة ، ولكنه قد يضيف ترجمة وتشغيل
متطلبات الوقت التي لا يمكن تلبيتها في جميع الأنظمة.

-فرج-أرجس
-منو-دفع-أرجس
استخدم عمليات PUSH لتخزين المعلمات الصادرة. هذه الطريقة أقصر وعادة
بنفس السرعة مثل الطريقة التي تستخدم عمليات SUB / MOV ويتم تمكينها افتراضيًا. في بعض
قد تؤدي حالات تعطيله إلى تحسين الأداء بسبب الجدولة المحسنة والتقليل
التبعيات.

-تراكم-أرغس الصادرة
في حالة التمكين ، سيكون الحد الأقصى من المساحة المطلوبة للوسيطات الصادرة
محسوبة في مقدمة الوظيفة. هذا أسرع في معظم وحدات المعالجة المركزية الحديثة بسبب
تقليل التبعيات وتحسين الجدولة وتقليل استخدام المكدس عند استخدام المكدس المفضل
الحد لا يساوي 2. العيب هو زيادة ملحوظة في حجم الكود. هذه
التبديل يعني -منو-دفع-أرجس.

-ميثريدس
دعم التعامل مع استثناء مؤشر الترابط الآمن مينغو 32. الكود الذي يعتمد على موضوع آمن
يجب أن تقوم معالجة الاستثناءات بترجمة وربط كافة التعليمات البرمجية بامتداد -ميثريدس اختيار. متي
تجميع -ميثريدس يحدد -D_MT؛ عند الربط ، فإنه يربط في مساعد مؤشر ترابط خاص
مكتبة - مينغوثرد الذي ينظف كل استثناء معالجة البيانات.

-منو-محاذاة-الأوتار
لا تقم بمحاذاة وجهة عمليات السلسلة المضمنة. هذا التبديل يقلل من حجم الرمز
ويحسن الأداء في حالة تم محاذاة الوجهة بالفعل ، ولكن دول مجلس التعاون الخليجي ليست كذلك
اعرف عنها.

-minline-all-stringops
بشكل افتراضي ، يتضمن GCC عمليات سلسلة فقط عندما تكون الوجهة معروفة
محاذاة إلى حد 4 بايت على الأقل. يتيح ذلك مزيدًا من التضمين وزيادة حجم الكود ،
ولكن قد يحسن أداء الكود الذي يعتمد على memcpy و strlen و memset السريعة
أطوال قصيرة.

-minline- سترينجوبس-ديناميكي
بالنسبة لعمليات السلسلة ذات الحجم غير المعروف ، استخدم فحوصات وقت التشغيل مع التعليمات البرمجية المضمنة للصغير
كتل ومكتبة دعوة للكتل الكبيرة.

-استراتيجية -mstringop =ALG
الكتابة فوق استدلال القرار الداخلي حول خوارزمية معينة إلى سلسلة مضمنة
عملية مع. القيم المسموح بها هي "rep_byte" و "rep_4byte" و "rep_8byte" لـ
التوسع باستخدام بادئة i386 "rep" بالحجم المحدد ، "byte_loop" ، "loop" ،
"unrolled_loop" لتوسيع حلقة مضمنة ، "libcall" لتوسيع المكتبة دائمًا
مكالمة.

-موميت-أوراق-إطار-مؤشر
لا تحتفظ بمؤشر الإطار في سجل لوظائف طرفية. هذا يتجنب
تعليمات لحفظ مؤشرات الإطارات وإعدادها واستعادتها وإنشاء تسجيل إضافي
متوفر في وظائف الأوراق. الخيار - مؤشر الإطار يزيل الإطار
مؤشر لجميع الوظائف ، مما قد يجعل تصحيح الأخطاء أكثر صعوبة.

-mtls- مباشرة-seg-refs
-رقم- TLS- المباشر- SEG- المراجع
يتحكم في إمكانية الوصول إلى متغيرات TLS باستخدام إزاحات من مقطع TLS
التسجيل (٪ gs لـ 32 بت ،٪ fs لـ 64 بت) ، أو ما إذا كان يجب أن يكون مؤشر قاعدة مؤشر الترابط
مضاف. يعتمد ما إذا كان هذا قانونيًا أم لا على نظام التشغيل ، وما إذا كان
تعيين المقطع لتغطية منطقة TLS بأكملها.

بالنسبة للأنظمة التي تستخدم GNU libc ، يكون الإعداد الافتراضي هو التشغيل.

-msse2avx
-منو- sse2avx
حدد أن المجمع يجب أن يقوم بتشفير تعليمات SSE ببادئة VEX. الخيار
-مافكس يتحول هذا بشكل افتراضي.

-بنتري
-منو- السيجارة
إذا كان التنميط نشطًا ضع استدعاء عداد التنميط قبل المقدمة. ملاحظة على
x86 يصمم السمة "ms_hook_prologue" غير ممكنة في الوقت الحالي لـ
-بنتري و .

-m8bit- idiv
-mno-8bit- idiv
في بعض المعالجات ، مثل Intel Atom ، يكون تقسيم الأعداد الصحيحة بدون إشارة 8 بت أسرع بكثير من
قسمة عدد صحيح 32 بت / 64 بت. ينشئ هذا الخيار فحص وقت التشغيل. إذا كان كل من
المقسوم والمقسوم عليهما في نطاق من 0 إلى 255 ، وقسمة عدد صحيح غير إشارة 8 بت هي
تستخدم بدلاً من تقسيم عدد صحيح 32 بت / 64 بت.

-mavx256- تحميل الانقسام غير المحاذاة
-mavx256-Split-unal -igned-store
تقسيم تحميل وتخزين AVX 32 بايت بدون محاذاة.

تشبه -m يتم دعم المفاتيح بالإضافة إلى ما سبق في معالجات AMD x86-64 في
بيئات 64 بت.

م 32
م 64
-mx32
إنشاء رمز لبيئة 32 بت أو 64 بت. ال م 32 مجموعات الخيارات كثافة العمليات وطويلة و
المؤشر إلى 32 بت ويقوم بإنشاء رمز يعمل على أي نظام i386. ال م 64 خيار
يحدد int إلى 32 بت وطويل ومؤشر إلى 64 بت ويولد رمزًا لـ AMD
x86-64 العمارة. ال -mx32 تعيين الخيار int و long ومؤشر إلى 32 بت و
يولد رمزًا لمعمارية AMD x86-64. لداروين فقط م 64 يتحول الخيار
قبالة -fno- الموافقة المسبقة عن علم و -mdynamic-no-pic خيارات.

-من-المنطقة الحمراء
لا تستخدم ما يسمى بالمنطقة الحمراء لرمز 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.

i386 و x86-64 Windows مزيد من الخيارات

تتوفر هذه الخيارات الإضافية لأهداف Windows:

- وحدة التحكم
هذا الخيار متاح لأهداف Cygwin و MinGW. تحدد أن وحدة التحكم
سيتم إنشاء التطبيق ، عن طريق توجيه الرابط لتعيين رأس PE
نوع النظام الفرعي المطلوب لتطبيقات وحدة التحكم. هذا هو السلوك الافتراضي لـ
أهداف Cygwin و MinGW.

-mdll
هذا الخيار متاح لأهداف Cygwin و MinGW. وهي تحدد أن ملف DLL - a
مكتبة الارتباط الديناميكي - يتم إنشاؤها ، مما يتيح اختيار الملفات المطلوبة
وقت بدء التشغيل ونقطة الدخول.

-منوب-متعة- dllimport
هذا الخيار متاح لأهداف Cygwin و MinGW. تحدد أن ملف
يجب تجاهل سمة dllimport.

- الخيط
هذا الخيار متاح لأهداف MinGW. وهي تحدد أن مؤشر الترابط الخاص بـ MinGW
الدعم لاستخدامه.

-مونيكود
هذا الخيار متاح لأهداف mingw-w64. تحدد أن الماكرو UNICODE
يتم تعريفه مسبقًا واختيار رمز بدء التشغيل القادر على unicode.

موين 32
هذا الخيار متاح لأهداف Cygwin و MinGW. تحدد أن النموذجي
يجب تعيين وحدات ماكرو Windows المحددة مسبقًا في المعالج المسبق ، ولكنها لا تؤثر
اختيار مكتبة وقت التشغيل / كود بدء التشغيل.

-النوافذ
هذا الخيار متاح لأهداف Cygwin و MinGW. تحدد أن واجهة المستخدم الرسومية
يتم إنشاء التطبيق عن طريق إصدار تعليمات للرابط لتعيين رأس PE
نوع النظام الفرعي بشكل مناسب.

-fno- مجموعة- مكدس قابل للتنفيذ
هذا الخيار متاح لأهداف MinGW. تحدد أن العلامة القابلة للتنفيذ لـ
لم يتم تعيين المكدس الذي تستخدمه الوظائف المتداخلة. هذا ضروري للثنائيات التي تعمل في
وضع kernel في Windows ، حيث توجد واجهة برمجة تطبيقات user32 ، والتي تُستخدم لتعيين الملف القابل للتنفيذ
الامتيازات ، غير متوفر.

-mpe-الانحياز-commons
هذا الخيار متاح لأهداف Cygwin و MinGW. إنها تحدد أن غنو
إلى تنسيق ملف PE الذي يسمح بالمحاذاة الصحيحة للمتغيرات الشائعة
يجب استخدامها عند إنشاء رمز. سيتم تمكينه بشكل افتراضي إذا اكتشف مجلس التعاون الخليجي
أن المجمع الهدف الذي وجده أثناء التكوين يدعم الميزة.

انظر أيضا تحت i386 و x86-64 مزيد من الخيارات للخيارات القياسية.

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
لا (أو تفعل) إنشاء رمز المجمع لمعلومات تصحيح رقم سطر DWARF2. هذه
قد يكون مفيدًا عند عدم استخدام مُجمّع جنو.

-مبكرا-توقف-بت
-Mno-early-stop-bits
السماح بوضع وحدات بت التوقف في وقت أبكر من السابقة مباشرة للتعليمات التي
أثار بت التوقف. يمكن أن يؤدي ذلك إلى تحسين جدولة التعليمات ، ولكن ليس دائمًا
القيام بذلك.

- المدى الثابت =نطاق التسجيل
إنشاء رمز يعامل نطاق السجل المحدد كسجلات ثابتة. سجل ثابت
هو الذي لا يمكن لمخصص السجل استخدامه. هذا مفيد عند تجميع النواة
الشفرة. يتم تحديد نطاق التسجيل كسجلين مفصولة بشرطة. عديد
يمكن تحديد نطاقات التسجيل مفصولة بفاصلة.

-mtls-size =حجم tls
حدد حجم البت لإزاحات TLS الفورية. القيم الصالحة هي 14 و 22 و 64.

-mtune =نوع وحدة المعالجة المركزية
قم بضبط جدولة التعليمات لوحدة معالجة مركزية معينة ، والقيم الصالحة هي itanium ،
itanium1 و merced و itanium2 و mckinley.

-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" في مجموعة التعليمات. خلاف ذلك ، حد
هو "ضعيف" بمعنى أننا نفضل العمليات غير المتعلقة بالذاكرة عند بلوغ الحد ولكن
قد يستمر في جدولة عمليات الذاكرة.

IA-64 / VMS مزيد من الخيارات

تشبه -m يتم تحديد الخيارات لتطبيقات IA-64 / VMS:

رموز العودة mvms
إرجاع رموز الحالة VMS من main. الافتراضي هو إرجاع شرط نمط POSIX
(مثل خطأ) رموز.

-mdebug-main =بادئة
ضع علامة على الإجراء الأول الذي يبدأ اسمه بـ بادئة كإجراء روتيني رئيسي لـ
المصحح.

-مملوك 64
افتراضي إلى إجراءات تخصيص الذاكرة 64 بت.

LM32 مزيد من الخيارات

تشبه -m يتم تحديد الخيارات لبنية Lattice Mico32:

-يمكن تحويل برميل
تفعيل تعليمات تحويل البرميل.

تمكين -mdivide
تفعيل تعليمات القسمة والمعامل.

-ممكن مضاعفة
تفعيل تعليمات الضرب.

-تمكين التمديد
تفعيل تعليمات تمديد التوقيع.

- تمكين المستخدم
تمكين التعليمات المعرفة من قبل المستخدم.

M32C مزيد من الخيارات

-mcpu =الاسم
حدد وحدة المعالجة المركزية التي تم إنشاء الرمز لها. الاسم قد تكون واحدة من r8c لـ R8C / Tiny
سلسلة، m16c لسلسلة M16C (حتى / 60) ، م 32 سم لسلسلة M16C / 80 ، أو m32c
لسلسلة M32C / 80.

-مسيم
يحدد أن البرنامج سيتم تشغيله على جهاز المحاكاة. هذا يسبب بديل
مكتبة وقت التشغيل المراد ربطها والتي تدعم ، على سبيل المثال ، ملف الإدخال / الإخراج. لا يجب عليك
استخدم هذا الخيار عند إنشاء برامج تعمل على أجهزة حقيقية ؛ يجب عليك أن
توفير مكتبة وقت التشغيل الخاصة بك لأي وظائف I / O مطلوبة.

ميمريغس =عدد
يحدد عدد المسجلات الزائفة المستندة إلى الذاكرة والتي سيستخدمها مجلس التعاون الخليجي أثناء التعليمات البرمجية
توليد. سيتم استخدام هذه السجلات الزائفة مثل السجلات الحقيقية ، لذلك هناك ملف
المفاضلة بين قدرة دول مجلس التعاون الخليجي على ملاءمة الرمز في السجلات المتاحة ، و
عقوبة الأداء لاستخدام الذاكرة بدلاً من السجلات. لاحظ أن جميع الوحدات في ملف
يجب تجميع البرنامج بنفس القيمة لهذا الخيار. بسبب ذلك ، أنت
يجب عدم استخدام هذا الخيار مع مكتبات وقت التشغيل الافتراضية التي ينشئها مجلس التعاون الخليجي.

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 (ما لم يتم تحديد سمة "القسم"). هذا هو الافتراضي.

تتكون منطقة البيانات الصغيرة من أقسام .sdata و .sbss. قد تكون الكائنات صراحة
ضع في منطقة البيانات الصغيرة مع سمة "section" باستخدام أحد هذه الأقسام.

-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 =الاسم
يحدد اسم وظيفة نظام التشغيل لاستدعاء لمسح ذاكرة التخزين المؤقت. ال
الافتراضي هو _مخبأ دافق، ولكن لن يتم استخدام استدعاء الوظيفة إلا إذا لم يتم استخدام trap
متاح.

-منو-دافق- func
يشير إلى عدم وجود وظيفة نظام تشغيل لمسح ذاكرة التخزين المؤقت.

M680x0 مزيد من الخيارات

هذه هي -m خيارات محددة لمعالجات M680x0 و ColdFire. الإعدادات الافتراضية
تعتمد على العمارة التي تم اختيارها عند تكوين المترجم ؛ الافتراضات
فيما يلي الخيارات الأكثر شيوعًا.

- مسيرة =قوس
قم بإنشاء رمز خاص بهندسة مجموعة تعليمات M680x0 أو ColdFire محددة.
القيم المسموح بها لـ قوس للهياكل M680x0 هي: 68000, 68010, 68020, 68030,
68040, 68060 و cpu32. يتم اختيار بنى ColdFire وفقًا لـ Freescale
تصنيف ISA والقيم المسموح بها هي: عيسى, com.isaaplus, إيزاب و إسحاق.

تحدد دول مجلس التعاون الخليجي الماكرو __مكفقوس__ عندما يتم إنشاء رمز لهدف ColdFire.
قوس في هذا الماكرو هو واحد من -مارس الحجج المذكورة أعلاه.

عند استخدامها معًا ، -مارس و -متوني حدد رمزًا يعمل على عائلة مماثلة
المعالجات ولكن هذا هو الأمثل لهندسة معمارية دقيقة معينة.

-mcpu =وحدة المعالجة المركزية
أنشئ رمزًا لمعالج M680x0 أو ColdFire محددًا. ال M680x0 وحدة المعالجة المركزيةق هي:
68000, 68010, 68020, 68030, 68040, 68060, 68302, 68332 و cpu32. كولد فاير وحدة المعالجة المركزيةs
من خلال الجدول أدناه ، والذي يصنف أيضًا وحدات المعالجة المركزية إلى عائلات:

أسرة : - وحدة المعالجة المركزية الحجج
51 : 51 51ac 51 سي 51em 51qe
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 قوس متوافق مع وحدة المعالجة المركزية. مجموعات أخرى من
- وحدة المعالجة المركزية و -مارس مرفوضة.

يحدد مجلس التعاون الخليجي الماكرو __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
على التوالي.

يحدد مجلس التعاون الخليجي وحدات الماكرو __ مولوديةقوس و __ مولوديةقوس__ عند ضبط العمارة 680x0
قوس. يعرّف أيضًا mcقوس ما لم يكن أي منهما -انسى أو غير جنو -الأمراض المنقولة جنسيا يستخدم الخيار.
إذا كان مجلس التعاون الخليجي يضبط نطاقًا من البنى ، على النحو المحدد بواسطة - mtune = 68020-40 or
- mtune = 68020-60، فهو يحدد وحدات الماكرو لكل بنية في النطاق.

تحدد دول مجلس التعاون الخليجي أيضًا الماكرو __ مأوارش__ عند ضبط معمارية 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. يحدد الماكرو __هاف_68881__ على M680x0
الأهداف و __مكفبو__ على أهداف ColdFire.

-مسنة- تعويم
لا تقم بإنشاء تعليمات الفاصلة العائمة ؛ استخدم مكالمات المكتبة بدلاً من ذلك. هذا ال
افتراضي للأهداف 68000 و 68010 و 68832. وهو أيضًا الإعداد الافتراضي لـ ColdFire
الأجهزة التي لا تحتوي على FPU.

-مديف
-منو- div
قم بإنشاء (عدم إنشاء) تعليمات تقسيم أجهزة ColdFire والباقي. لو
-مارس يستخدم بدون - وحدة المعالجة المركزية، الإعداد الافتراضي هو "تشغيل" لبنى ColdFire و "إيقاف"
لأبنية M680x0. خلاف ذلك ، يتم أخذ القيمة الافتراضية من وحدة المعالجة المركزية المستهدفة (إما
وحدة المعالجة المركزية الافتراضية ، أو المحددة بواسطة - وحدة المعالجة المركزية). على سبيل المثال ، الإعداد الافتراضي هو "إيقاف التشغيل"
For - وحدة المعالجة المركزية = 5206 و "تشغيل" لـ - وحدة المعالجة المركزية = 5206 هـ.

يحدد مجلس التعاون الخليجي الماكرو __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
-حقول بت واسعة النطاق
تعامل دائمًا مع حقول البت على أنها صغيرة الحجم.

وظائف -m4 بايت
وظائف -mno-4 بايت
إجبار جميع الوظائف على المحاذاة مع حد 4 بايت.

- بيانات الخط
- بيانات الخط
انبعث معلومات الخط.

-مبطء بايت
-mno- بطيئة-بايت
يفضل الوصول إلى الكلمات عند قراءة كميات البايت.

-ملل-endian
-mbig-endian
قم بإنشاء رمز لهدف صغير.

م 210
م 340
توليد رمز للمعالج 210.

-منو-لسيم
افترض أن دعم وقت التشغيل قد تم توفيره ، لذا احذف مكتبة المحاكاة
(ليبسيم.أ) من سطر الأوامر رابط.

-زيادة مكدس =المقاسات
قم بتعيين الحد الأقصى لمقدار عملية زيادة مكدس واحدة. يمكن للقيم الكبيرة
زيادة سرعة البرامج التي تحتوي على وظائف تحتاج إلى كمية كبيرة من
مساحة المكدس ، لكن يمكنهم أيضًا تشغيل خطأ تجزئة إذا تم تمديد المكدس
كثير جدا. القيمة الافتراضية هي 0x1000.

MeP مزيد من الخيارات

-معبسديف
يُمكّن تعليمة "abs" ، وهي الفرق المطلق بين سجلين.

- خيارات صغيرة
تمكن جميع التعليمات الاختيارية - عمليات المتوسط ​​، الضرب ، القسمة ، البت ،
الصفر البادئ ، والفرق المطلق ، والحد الأدنى / الحد الأقصى ، والمقطع ، والتشبع.

- متوسط
يُمكّن تعليمات "ave" ، التي تحسب متوسط ​​سجلين.

-مستند =n
متغيرات الحجم n سيتم وضع بايت أو أصغر في قسم ".based" حسب
إفتراضي. تستخدم المتغيرات القائمة على السجل $ tp كسجل أساسي ، وهناك ملف
128 بايت كحد أقصى لقسم ". المستندة إلى".

-مبيتوبس
لتمكين تعليمات تشغيل البت - اختبار البت ("btstm") ، تعيين ("bsetm") ، مسح
("bclrm") ، و invert ("bnotm") ، و test-and-set ("tas").

-مك =الاسم
يختار القسم الذي سيتم وضع البيانات الثابتة فيه. الاسم قد تكون "صغيرة" أو "قريبة" أو
"بعيد".

-مقطع
لتمكين تعليمات "القصاصة". لاحظ أن "-mclip" ليس مفيدًا إلا إذا كنت أنت أيضًا
توفر "-mminmax".

-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".

-خلمة
تمكن تعليمات الضرب والمضاعفة.

-لا خيارات
تعطيل جميع التعليمات الاختيارية التي تم تمكينها بواسطة "-mall-opts".

- كرر
لتمكين تعليمات "التكرار" و "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 هو التوافق
الشفرة. قيم المثال هي الإصدار 3.00, الإصدار 4.00 ب, الإصدار 5.00, الإصدار 5.00 ب, الإصدار 5.00 ب, الإصدار 6.00.

-mxl- لينة مول
استخدام برنامج محاكاة مضاعفة (افتراضي).

-mxl-soft-div
استخدم برنامج محاكاة التقسيمات (افتراضي).

-mxl- برميل-التحول
استخدم شيفتر برميل الجهاز.

-mxl- مقارنة النمط
استخدم تعليمات مقارنة الأنماط.

-msmall- يقسم
استخدم البحث عن الجدول الأمثل لأقسام الأعداد الصحيحة الصغيرة.

-mxl- مكدس الاختيار
تم إهمال هذا الخيار. استخدم -fstack-check بدلاً من ذلك.

-مكسل-GP-الاختيار
استخدم أقسام sdata / sbss النسبية لـ GP.

-mxl- الضرب العالي
استخدم تعليمات الضرب العالية للجزء العالي من 32x32 اضرب.

-mxl- تعويم- تحويل
استخدم تعليمات الأجهزة الخاصة بتحويل النقطة العائمة.

-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, mips64 و mips64r2. أسماء المعالجات هي: 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, 74kc, 74 كف 2_1, 74 كف 1_1, 74 كف 3_2, 1004kc, 1004 كف 2_1,
1004 كف 1_1, com.loongson2e, com.loongson2f, com.loongson3a, M4K, octeon, octeon +, octeon2, أوريون,
r2000, r3000, r3900, r4000, r4400, r4600, r4650, r6000, r8000, rm7000, rm9000, r10000,
r12000, r14000, r16000, sb1, sr71000, vr4100, vr4111, vr4120, vr4130, vr4300, vr5000,
vr5400, vr5500 و XLR. القيمة الخاصة من أبي يختار الأكثر توافقًا
العمارة لـ ABI المحدد (أي ، mips1 لـ 32 بت ABIs و mips3 لـ 64 بت
واجهات برمجة التطبيقات).

تدعم سلاسل أدوات Linux / GNU و IRIX الأصلية القيمة أيضًا محلي، والذي يحدد ملف
أفضل خيار معماري للمعالج المضيف. -مارش = أصلي ليس له أي تأثير إذا دول مجلس التعاون الخليجي
لا يتعرف على المعالج.

في أسماء المعالجات ، نهائي 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" or "mips3"). الأسماء
العمارة الافتراضية عندما لا -مارس يتم إعطاء الخيار.

-mtune =قوس
تحسين ل قوس. من بين أشياء أخرى ، يتحكم هذا الخيار في طريقة التعليمات
مجدولة ، والتكلفة المتصورة للعمليات الحسابية. القائمة ل قوس القيم
هو نفسه ل -مارس.

عند عدم استخدام هذا الخيار ، سيتم تحسين GCC للمعالج المحدد بواسطة -مارس.
باستخدام -مارس و -متوني معًا ، من الممكن إنشاء رمز يعمل على
عائلة من المعالجات ، ولكن قم بتحسين الكود لعضو معين من ذلك
أسرة.

-متوني يحدد وحدات الماكرو _mips_tune و _MIPS_TUNE_فو، والتي تعمل بنفس طريقة عمل
ال -مارس المذكورة أعلاه.

-الرسمات 1
أي ما يعادل -مارش = mips1.

-الرسمات 2
أي ما يعادل -مارش = mips2.

-الرسمات 3
أي ما يعادل -مارش = mips3.

-الرسمات 4
أي ما يعادل -مارش = mips4.

-الرسمات 32
أي ما يعادل -مارش = mips32.

-mips32r2
أي ما يعادل - مسيرة = mips32r2.

-الرسمات 64
أي ما يعادل -مارش = mips64.

-mips64r2
أي ما يعادل - مسيرة = mips64r2.

-الرسمات 16
-منو- mips16
إنشاء (عدم إنشاء) رمز MIPS16. إذا كان GCC يستهدف MIPS32 أو MIPS64
الهندسة المعمارية ، وسوف تستفيد من MIPS16e ASE.

يمكن أيضًا التحكم في إنشاء كود MIPS16 على أساس كل وظيفة عن طريق
سمات "mips16" و "nomips16".

-مفليب- mips16
إنشاء رمز MIPS16 على وظائف بديلة. يتم توفير هذا الخيار للانحدار
اختبار إنشاء كود MIPS16 / non-MIPS16 المختلط ، وهو غير مخصص للعادي
استخدامها في تجميع رمز المستخدم.

-مينترلينك- mips16
-mno- الربط- mips16
طلب (لا تتطلب) أن يكون الرمز غير MIPS16 متوافقًا مع رمز MIPS16.

على سبيل المثال ، رمز غير MIPS16 لا يمكن الانتقال مباشرة إلى رمز MIPS16؛ يجب أن تستخدم إما
دعوة أو قفزة غير مباشرة. -مينترلينك- mips16 لذلك يعطل القفزات المباشرة ما لم
يعرف مجلس التعاون الخليجي أن الهدف من القفزة ليس MIPS16.

-مابي = 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.

تظل تعيينات السجل للوسيطات وقيم الإرجاع كما هي ، لكن كل واحدة
يتم تمرير القيمة العددية في تسجيل واحد 64 بت بدلاً من زوج من 32 بت
السجلات. على سبيل المثال ، يتم إرجاع قيم الفاصلة العائمة العددية بتنسيق f0 دولار فقط ، ليس أ
f0 دولار/f1 دولار زوج. تظل مجموعة سجلات المكالمات المحفوظة كما هي ، ولكن كل 64 بت
يتم حفظها.

-مبيكلز
-منو- 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 بت.

-مشدد-تعويم
استخدم تعليمات المعالج المساعد للفاصلة العائمة.

-مسنة- تعويم
لا تستخدم تعليمات المعالج المساعد الفاصلة العائمة. تنفيذ الفاصلة العائمة
الحسابات باستخدام مكالمات المكتبة بدلاً من ذلك.

- تعويم واحد
افترض أن معالج الفاصلة العائمة يدعم فقط العمليات أحادية الدقة.

- تعويم مزدوج
افترض أن معالج الفاصلة العائمة يدعم عمليات الدقة المزدوجة. هذه
هو الافتراضي.

-مللسك
-منو- ذ
استخدم (لا تستخدم) 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- طن متري
استخدم (لا تستخدم) تعليمات MT Multithreading.

-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 For
تفاصيل.

الافتراضي -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 ()" لتحركات الكتلة غير التافهة. الافتراضي
is -منو- memcpy، والذي يسمح لـ GCC بتضمين معظم النسخ ذات الحجم الثابت.

- مكالمات طويلة
- مكالمات طويلة
تعطيل (لا تقم بتعطيل) استخدام تعليمات "jal". وظائف الاتصال باستخدام "jal"
أكثر كفاءة ولكنه يتطلب أن يكون المتصل والمستدعى بنفس سعة 256 ميجابايت
قطعة.

هذا الخيار ليس له أي تأثير على رمز طلب الشراء. الافتراضي هو - مكالمات طويلة.

-حمد
-منو-جنون
تمكين (تعطيل) استخدام تعليمات "mad" و "madu" و "mul" ، على النحو المنصوص عليه في
R4650 عيسى.

-مفوس-ماد
-منو-تنصهر-ماد
تمكين (تعطيل) استخدام تعليمات مضاعفة وتراكم الفاصلة العائمة ، عندما تكون
تتوفر. الافتراضي هو -مفوس-ماد.

عند استخدام تعليمات الضرب والتراكم ، يتم حساب المنتج الوسيط
لدقة لا نهائية ولا يخضع لـ FCSR Flush to Zero bit. هذا قد يكون
غير مرغوب فيه في بعض الظروف.

-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
هو الافتراضي خلاف ذلك.

- الإصلاح- 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 or __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 will
قم بمحاذاة أزواج من التعليمات التي يعتقد أنه يجب تنفيذها بالتوازي.

هذا الخيار له تأثير فقط عند تحسين VR4130. عادة ما يصنع الكود
أسرع ، ولكن على حساب تكبيرها. يتم تمكينه افتراضيًا في
مستوى التحسين -O3.

-مسينسي
-منو- synci
تمكين (تعطيل) إنشاء إرشادات "synci" حول البنى التي تدعمها.
سيتم إنشاء تعليمات "synci" (إذا تم تمكينها) عندما
يتم تجميع "__builtin ___ clear_cache ()".

يتم تعيين هذا الخيار افتراضيًا على "-mno-synci" ، ولكن يمكن تجاوز الإعداد الافتراضي عن طريق التكوين
مع "- with-synci".

عند تجميع التعليمات البرمجية لأنظمة معالج واحد ، من الآمن بشكل عام استخدام "synci".
ومع ذلك ، في العديد من الأنظمة متعددة النواة (SMP) ، لن يؤدي ذلك إلى إبطال التعليمات
مخبأ في جميع النوى وقد يؤدي إلى سلوك غير محدد.

- مكالمات -mrelax-pic
-منو-الاسترخاء- مكالمات الموافقة المسبقة عن علم
حاول تحويل مكالمات PIC التي يتم إرسالها عادةً عبر تسجيل 25 دولارًا إلى مكالمات مباشرة.
هذا ممكن فقط إذا كان الرابط يمكنه حل الوجهة في وقت الارتباط وإذا
أن تكون الوجهة ضمن النطاق لإجراء مكالمة مباشرة.

- مكالمات -mrelax-pic هو الإعداد الافتراضي إذا تم تكوين GCC لاستخدام مُجمّع وملف
linker الذي يدعم توجيه التجميع ".reloc" و "-mexplicit-relocs" موجود في
تأثير. باستخدام "-mno-loose-relocs" ، يمكن إجراء هذا التحسين بواسطة
المجمع والرابط وحده دون مساعدة من المترجم.

-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 or LCC تعليمات. يحدد هذا الخيار
الماكرو المعالج __no_setlb__.

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.

IBM RS / 6000 و باور مزيد من الخيارات

تشبه -m يتم تحديد الخيارات لـ IBM RS / 6000 و PowerPC:

- القوة
-منو-السلطة
-قوة 2
-منو-السلطة 2
-مباويرب
-منو-بوويرب
-مباويربك- gpopt
-mno-powerpc-gpopt
-مباويربك- gfxopt
-mno-powerpc-gfxopt
-محطة
-منو- powerpc64
-مفكرف
-منو- مفكرف
-mpopcntb
-منو- popcntb
-mpopcntd
-mno-popcntd
-مفبرند
-منو- فبرند
-مكمب
-منو- cmpb
-mmfpgpr
-منو- mfpgpr
-محارد- dfp
-من الصعب-dfp
يدعم GCC اثنين من هياكل مجموعة التعليمات ذات الصلة لـ RS / 6000 و PowerPC.
كهرباء مجموعة التعليمات هي تلك التعليمات التي يدعمها الأنهار مجموعة الشرائح المستخدمة
في أنظمة RS / 6000 الأصلية و باور مجموعة التعليمات هي بنية
المعالجات الدقيقة Freescale MPC5xx و MPC6xx و MPC8xx و IBM 4xx و 6xx و
متابعة المعالجات الدقيقة.

لا تعتبر أي من العمارة مجموعة فرعية من الأخرى. ومع ذلك ، هناك مجموعة فرعية مشتركة كبيرة
من التعليمات التي يدعمها كلاهما. يتم تضمين سجل MQ في المعالجات
دعم هندسة الطاقة.

يمكنك استخدام هذه الخيارات لتحديد التعليمات المتوفرة على المعالج
يستخدمون. يتم تحديد القيمة الافتراضية لهذه الخيارات عند تكوين GCC.
تحديد -mcpu =نوع_ وحدة المعالجة المركزية يتجاوز مواصفات هذه الخيارات. نحن
أوصيك باستخدام -mcpu =نوع_ وحدة المعالجة المركزية بدلاً من الخيارات المذكورة أعلاه.

- القوة يسمح الخيار لـ GCC بإنشاء تعليمات موجودة فقط في ملف
هندسة الطاقة واستخدام سجل MQ. التحديد -قوة 2 يدل الطاقة و
يسمح أيضًا لـ GCC بإنشاء تعليمات موجودة في بنية POWER2
ولكن ليس تصميم POWER الأصلي.

-مباويرب يسمح الخيار لـ GCC بإنشاء تعليمات موجودة فقط في ملف
مجموعة فرعية 32 بت من هندسة PowerPC. التحديد -مباويربك- 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.

إذا قمت بتحديد كليهما -منو-السلطة و -منو-بوويرب، سيستخدم GCC فقط التعليمات الموجودة في
المجموعة الفرعية المشتركة لكل من البنيتين بالإضافة إلى بعض استدعاءات الوضع المشترك الخاصة بـ AIX ، و
لن تستخدم تسجيل MQ. تحديد كليهما - القوة و -مباويرب تصاريح دول مجلس التعاون الخليجي
استخدام أي تعليمات من أي من العمارة والسماح باستخدام سجل MQ ؛
حدد هذا لـ Motorola MPC601.

-جديد-فن الإستذكار
- فن الإستذكار
حدد فن الإستذكار المراد استخدامه في كود المجمع الذي تم إنشاؤه. مع -جديد-فن الإستذكار,
يستخدم مجلس التعاون الخليجي فن الإستذكار للمجمع المحدد لهندسة PowerPC. مع
- فن الإستذكار يستخدم التجميع فن الإستذكار المحدد لهندسة الطاقة.
التعليمات المحددة في بنية واحدة فقط لها ذاكرة واحدة فقط ؛ يستخدم دول مجلس التعاون الخليجي ذلك
ذاكري بغض النظر عن أي من هذه الخيارات محدد.

افتراضية دول مجلس التعاون الخليجي إلى فن الإستذكار المناسب للهندسة المستخدمة. التحديد
-mcpu =نوع_ وحدة المعالجة المركزية في بعض الأحيان يتجاوز قيمة هذا الخيار. إلا إذا كنت تقوم بالبناء
مترجم متقاطع ، يجب عادة عدم تحديد أي منهما -جديد-فن الإستذكار or
- فن الإستذكار، ولكن يجب بدلاً من ذلك قبول الافتراضي.

-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, ec603e, G3, G4, G5, عملاق, قوة, power2, power3, power4, power5,
قوة 5 +, power6, القوة 6x, power7, مشترك, بوويرب, powerpc64, الأنهار, ريوس 1, ريوس 2, RSC,
و rs64.

-mcpu = مشترك يختار معالجًا عامًا تمامًا. تم إنشاء رمز تحت هذا الخيار
سيعمل على أي معالج POWER أو PowerPC. سيستخدم GCC فقط التعليمات الواردة في ملف
مجموعة فرعية مشتركة من كلا البنيتين ، ولن تستخدم سجل MQ. يفترض دول مجلس التعاون الخليجي أ
نموذج المعالج العام لأغراض الجدولة.

-mcpu = الطاقة, -mcpu = power2, -mcpu = powerpcو -mcpu = powerpc64 تحديد القوة العامة ،
POWER2 ، PowerPC 32 بت نقي (أي ليس MPC601) ، وبنية PowerPC 64 بت
أنواع الماكينات ، مع نموذج معالج عام مناسب مفترض للجدولة
الأغراض.

تحدد الخيارات الأخرى معالجًا معينًا. تم إنشاء رمز في ظل هذه الخيارات
سيعمل بشكل أفضل على هذا المعالج ، وقد لا يعمل على الإطلاق على المعالجات الأخرى.

- وحدة المعالجة المركزية تعمل الخيارات تلقائيًا على تمكين أو تعطيل الخيارات التالية:

-مالتيفيك -مفبرند -مشدد-تعويم -مفكرف - متعدد -جديد-فن الإستذكار -mpopcntb
-mpopcntd - القوة -قوة 2 -محطة -مباويربك- gpopt -مباويربك- gfxopt
- تعويم واحد - تعويم مزدوج -بسيط- fpu - الخيط -ممولهو -مدلمذب -mmfpgpr -مفسكس

تختلف الخيارات المحددة لأي وحدة معالجة مركزية معينة بين إصدارات المترجم ،
اعتمادًا على الإعداد الذي يبدو أنه ينتج الرمز الأمثل لوحدة المعالجة المركزية تلك ؛ لا
تعكس بالضرورة قدرات الأجهزة الفعلية. إذا كنت ترغب في تعيين ملف
خيار فردي لقيمة معينة ، يمكنك تحديده بعد - وحدة المعالجة المركزية اختيار،
مثل - وحدة المعالجة المركزية = 970 -منو-التيفيك.

في AIX ، يعد ملف -مالتيفيك و -محطة لم يتم تمكين الخيارات أو تعطيلها بواسطة - وحدة المعالجة المركزية
الخيار في الوقت الحاضر لأن AIX ليس لديه دعم كامل لهذه الخيارات. يمكنك
لا يزال بإمكانك تمكينها أو تعطيلها بشكل فردي إذا كنت متأكدًا من أنها ستعمل في ملف
بيئة.

-mtune =نوع_ وحدة المعالجة المركزية
قم بتعيين معلمات جدولة التعليمات لنوع الجهاز نوع_ وحدة المعالجة المركزية، ولكن لا تحدد
نوع العمارة ، تسجيل الاستخدام ، أو اختيار فن الإستذكار ، مثل -mcpu =نوع_ وحدة المعالجة المركزية
سيكون. نفس القيم ل نوع_ وحدة المعالجة المركزية تستخدم ل -متوني أما بالنسبة لل - وحدة المعالجة المركزية. إذا كان كلاهما
المحدد ، فإن الكود الذي تم إنشاؤه سيستخدم مجموعة الهندسة ، والسجلات ، ومجموعة فن الإستذكار
by - وحدة المعالجة المركزية، ولكن تم تعيين معلمات الجدولة بواسطة -متوني.

-mcmodel = صغير
إنشاء رمز PowerPC64 للنموذج الصغير: جدول المحتويات مقتصر على 64 كيلو.

-mcmodel = متوسط
إنشاء رمز PowerPC64 للطراز المتوسط: قد يكون جدول المحتويات والبيانات الثابتة الأخرى قيد التشغيل
إلى ما مجموعه 4G في الحجم.

-mcmodel = كبير
قم بإنشاء رمز PowerPC64 للطراز الكبير: قد يصل حجم TOC إلى 4G. آخر
البيانات والتعليمات البرمجية محدودة فقط بمساحة العنوان 64 بت.

-مالتيفيك
-منو-التيفيك
قم بإنشاء رمز يستخدم (لا يستخدم) تعليمات AltiVec ، وقم أيضًا بتمكين الاستخدام
من الوظائف المدمجة التي تسمح بالوصول المباشر بشكل أكبر إلى مجموعة تعليمات AltiVec.
قد تحتاج أيضًا إلى ضبط -مابي = التيفيك لضبط ABI الحالي باستخدام AltiVec ABI
التحسينات.

-mvrsave
-منو- فرسافي
قم بإنشاء تعليمات VRSAVE عند إنشاء كود AltiVec.

-mgen- الخلية- الرمز الصغير
إنشاء تعليمات الرمز الصغير للخلية

-الرمز الصغير للخلية المحذرة
تحذير عندما يتم إرسال تعليمات الرمز الصغير للخلية. مثال على الخلية
تعليمات الرمز الصغير هي تحول متغير.

-msecure- PLT
قم بإنشاء رمز يسمح لـ ld و ld.so بإنشاء ملفات تنفيذية ومكتبات مشتركة باستخدام
أقسام non-exec .plt و .got. هذا هو خيار PowerPC SYSV ABI 32 بت.

-mbss- PLT
أنشئ تعليمة برمجية تستخدم قسم BSS .plt يملأ ld.so ويتطلب plt و
أقسام .got قابلة للكتابة وقابلة للتنفيذ. هذا هو PowerPC SYSV 32 بت
خيار ABI.

-مزيل
-منو-ايزيل
يمكّن رمز التبديل هذا أو يعطل إنشاء تعليمات ISEL.

-مزيل =نعم لا
تم إهمال رمز التبديل هذا. يستخدم -مزيل و -منو-ايزيل بدلا من ذلك.

-مسب
-منو- spe
يتيح رمز التبديل هذا إنشاء تعليمات SPE simd أو يعطلها.

- معطلة
-رقم الاقتران
يمكّن هذا المفتاح أو يعطل إنشاء تعليمات simd PAIRED.

-mspe =نعم لا
تم إهمال هذا الخيار. يستخدم -مسب و -منو- spe بدلا من ذلك.

-مفسكس
-منو- vsx
قم بإنشاء رمز يستخدم (لا يستخدم) تعليمات المتجه / العددية (VSX) ، وأيضًا
تمكين استخدام الوظائف المضمنة التي تتيح وصولاً مباشرًا إلى VSX
مجموعة التعليمات.

-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 رمزًا أبطأ و
أكبر ولكنه يستخدم مساحة صغيرة جدًا من TOC. قد ترغب في استخدام هذا الخيار
فقط على الملفات التي تحتوي على تعليمات برمجية يتم تنفيذها بشكل أقل تكرارًا.

-مايكس 64
-مايكس 32
تمكين AIX ABI 64 بت واصطلاح الاستدعاء: مؤشرات 64 بت ونوع "طويل" 64 بت و
البنية التحتية اللازمة لدعمهم. التحديد -مايكس 64 يدل -محطة و
-مباويرب، في حين -مايكس 32 يعطل 64 بت ABI ويشير إلى -منو- powerpc64. مجلس التعاون الخليجي
التخلف عن -مايكس 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 لوحدة الفاصلة العائمة للأجهزة.

-مفبو
حدد نوع وحدة الفاصلة العائمة. القيم الصالحة هي sp_lite (أي ما يعادل
- تعويم واحد - بسيط - fpu) ، dp_lite (ما يعادل -mdouble-float -msimple-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 حسب الحاجة إلى القوة
إلى مجموعة جديدة ، وفقًا لتجميع المعالج المقدر. عدد: إدراج
nops لفرض الإدخالات التابعة المكلفة في مجموعات منفصلة. إدراج عدد نوب ل
إجبار شخص على مجموعة جديدة.

-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.

-مابي = spe
قم بتوسيع ABI الحالي بامتدادات SPE ABI. هذا لا يغير ABI الافتراضي ،
بدلاً من ذلك يضيف ملحقات SPE ABI إلى ABI الحالي.

-مابي = لا spe
تعطيل ملحقات Booke SPE ABI لـ ABI الحالي.

-mabi = ibmlongdouble
قم بتغيير ABI الحالي لاستخدام مضاعفة طويلة ذات دقة ممتدة من IBM. هذا هو PowerPC
خيار SYSV ABI 32 بت.

-مابي = ieeelongdouble
قم بتغيير ABI الحالي لاستخدام IEEE ذو الدقة الطويلة المزدوجة. هذا هو PowerPC
خيار Linux ABI 32 بت.

-مبروتوب
-النموذج الأولي
في النظام 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 المضمنة ، قم بتعيين قدرة شرائية_EMB بت في رأس أعلام ELF للإشارة
أن إبي يتم استخدام عمليات الترحيل الممتدة.

-ميبي
-منو ايبي
في النظام V.4 وأنظمة PowerPC المضمنة ، (لا) تلتزم بـ Embedded
واجهة التطبيقات الثنائية (eabi) وهي عبارة عن مجموعة من التعديلات على النظام V.4
تحديد. التحديد -ميبي يعني أن المكدس يتم محاذاته إلى 8 بايت
حد ، يتم استدعاء الوظيفة "__eabi" من "main" لإعداد بيئة eabi ،
و -msdata يمكن أن يستخدم الخيار كلاً من "r2" و "r13" للإشارة إلى بيانات صغيرة منفصلة
المناطق. اختيار -منو ايبي يعني أن المكدس محاذي لحد 16 بايت ، افعل
لا تستدعي وظيفة التهيئة من "الرئيسي" ، و -msdata الخيار سيستخدم فقط
"r13" للإشارة إلى منطقة بيانات صغيرة واحدة. ال -ميبي الخيار قيد التشغيل افتراضيًا إذا كنت
تكوين GCC باستخدام واحد من powerpc * - * - eabi * خيارات.

-msdata = eabi
في النظام V.4 وأنظمة PowerPC المضمنة ، ضع "const" العالمية الصغيرة و
بيانات ثابتة في .sdata2 القسم الذي يشار إليه بالسجل "r2". ضع صغيرا
تهيئة البيانات العمومية والثابتة غير "الثابتة" في .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" مع إعادة تحديد مكان الوظيفة
جدال. يسمح النقل لـ ld بربط استدعاء الوظيفة بالوسيطة بشكل موثوق
تعليمات الإعداد لتحسين TLS ، والتي بدورها تسمح لدول مجلس التعاون الخليجي بجدولة أفضل
الترتيب.

-الخطأ
يضيف دعمًا لتعدد مؤشرات الترابط باستخدام امتداد pthreads مكتبة. يحدد هذا الخيار علامات لـ
كل من المعالج والرابط.

- رثاء
-منو- المتلقي
سيمكن هذا الخيار GCC من استخدام التقدير المتبادل والجذر التربيعي المتبادل
تقدير التعليمات بخطوات نيوتن رافسون الإضافية لزيادة الدقة
بدلاً من إجراء القسمة أو الجذر التربيعي والقسمة على وسيطات الفاصلة العائمة. أنت
يجب استخدام -فاست-الرياضيات الخيار عند استخدام - رثاء (أو على الأقل
-ممتعة-الرياضيات-التحسينات, -الرياضيات- فقط, الرياضيات المتبادلة و
- الرياضيات). لاحظ أنه في حين أن إنتاجية التسلسل بشكل عام
أعلى من إنتاجية التعليمات غير المتبادلة ، دقة
يمكن إنقاص التسلسل بما يصل إلى 2 ulp (أي أن معكوس 1.0 يساوي 0.99999994)
للجذور التربيعية المتبادلة.

-mrecip =اختار
يسمح هذا الخيار بالتحكم في إرشادات التقدير المتبادل التي يمكن استخدامها. اختار
هي قائمة من الخيارات مفصولة بفواصل ، والتي قد يسبقها "!" لعكس
option: "all": قم بتمكين كل تعليمات التقدير ، "افتراضي": قم بتمكين الافتراضي
التعليمات ، أي ما يعادل - رثاء، "لا شيء": تعطيل كافة إرشادات التقدير ،
أي ما يعادل -منو- المتلقي؛ "div": تمكين تعليمات التقريب المتبادلة لـ
كل من الدقة الفردية والمزدوجة ؛ "divf": تمكين المعاملة بالمثل أحادية الدقة
تعليمات التقريب "divd": تمكين مزدوج الدقة متبادل
تعليمات التقريب "rsqrt": تمكين تقريب الجذر التربيعي
تعليمات لكل من الدقة الفردية والمزدوجة ؛ "rsqrtf": تمكين المفرد
تعليمات دقيقة لتقريب الجذر التربيعي المتبادل ؛ "rsqrtd": قم بتمكين
تعليمات تقريب الجذر التربيعي ذات الدقة المزدوجة ؛

على سبيل المثال ، -mrecip = الكل ،! rsqrtd من شأنه تمكين كل التقدير المتبادل
التعليمات ، باستثناء إرشادات "FRSQRTE" و "XSRSQRTEDP" و "XVRSQRTEDP"
التي تتعامل مع حسابات الجذر التربيعي المقلوب ذات الدقة المزدوجة.

- الدقة
-منو- المتلقي الدقة
افترض (لا تفترض) أن إرشادات التقدير المتبادل توفر أعلى -
تقديرات الدقة مما هو مطلوب بواسطة PowerPC ABI. اختيار -mcpu = power6 or
-mcpu = power7 يختار تلقائيا - الدقة. مربع الدقة المزدوجة
لا يتم إنشاء تعليمات تقدير الجذر افتراضيًا على الأجهزة منخفضة الدقة ،
لأنها لا تقدم تقديرًا يتقارب بعد ثلاث خطوات.

-mveclibabi =نوع
يحدد نوع ABI لاستخدامه في توجيه العناصر المضمنة باستخدام مكتبة خارجية.
النوع الوحيد المدعوم حاليًا هو "الكتلة" ، والذي يحدد استخدام أنظمة IBM
مكتبات النظام الفرعي للتسريع الرياضي (MASS) لتوجيه الجوهرات باستخدام
مكتبات خارجية. سيصدر GCC حاليًا المكالمات إلى "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 بت
أنظمة لينوكس. إذا لم يتم حفظ قيمة جدول المحتويات في المقدمة ، فسيتم حفظها قبل ذلك مباشرة
المكالمة من خلال المؤشر. ال -من-حفظ-توك-غير مباشر الخيار هو الافتراضي.

RX مزيد من الخيارات

تم تحديد خيارات سطر الأوامر هذه لأهداف RX:

-m64bit- يتضاعف
-m32bit- يتضاعف
اجعل نوع البيانات "مزدوج" 64 بت (-m64bit- يتضاعف) أو 32 بت (-m32bit- يتضاعف)
في الحجم. الافتراضي هو -m32bit- يتضاعف. ملاحظات تعمل أجهزة الفاصلة العائمة RX فقط
على قيم 32 بت ، وهذا هو السبب الافتراضي -m32bit- يتضاعف.

-fpu
-نوفبو
تمكن (-fpu) أو يعطل (-نوفبو) استخدام أجهزة النقطة العائمة RX. ال
الافتراضي ممكّن لـ RX600 سلسلة والمعوقين RX200 سلسلة.

سيتم إنشاء إرشادات الفاصلة العائمة فقط لقيم الفاصلة العائمة ذات 32 بت
ومع ذلك ، إذا كان -m64bit- يتضاعف الخيار قيد الاستخدام ، فلن تكون أجهزة FPU كذلك
تستخدم للزوجي.

ملاحظات إذا كان -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 أنه يستخدم فقط ملف
يسجل "r10" و "r11" و "r12" و / أو "r13" وشريطة أن يكون الاستخدام العادي لـ
تم تقييد السجلات المقابلة عبر -مثبت-ريج or -النعناع-التسجيل
خيارات سطر الأوامر.

S / 390 و zSeries مزيد من الخيارات

هذه هي -m خيارات محددة لمعمارية S / 390 و zSeries.

-مشدد-تعويم
-مسنة- تعويم
استخدم (لا تستخدم) إرشادات وتسجيلات الفاصلة العائمة للأجهزة من أجل العائمة-
عمليات النقطة. متي -مسنة- تعويم محدد ، وظائف في libgcc.a سوف يستخدم
لإجراء عمليات الفاصلة العائمة. متي -مشدد-تعويم المحدد ، المترجم
يولد تعليمات الفاصلة العائمة IEEE. هذا هو الافتراضي.

-محارد- dfp
-من الصعب-dfp
استخدم (لا تستخدم) تعليمات الفاصلة العشرية للأجهزة للعشرية-
عمليات الفاصلة العائمة. متي -من الصعب-dfp محدد ، وظائف في libgcc.a
ستُستخدم لإجراء عمليات الفاصلة العائمة. متي -محارد- dfp is
المحدد ، يقوم المحول البرمجي بإنشاء تعليمات الأجهزة ذات الفاصلة العشرية. هذه
هو الافتراضي ل -مارش = 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. عند إنشاء رمز باستخدام التعليمات المتوفرة في
ض / العمارة ، الافتراضي هو - مسيرة = z900. خلاف ذلك ، الافتراضي هو - مسيرة = g5.

-mtune =نوع وحدة المعالجة المركزية
ضبط ل نوع وحدة المعالجة المركزية كل ما ينطبق على الكود الذي تم إنشاؤه ، باستثناء ABI
ومجموعة التعليمات المتاحة. القائمة ل نوع وحدة المعالجة المركزية القيم هي نفسها ل
-مارس. القيمة الافتراضية هي القيمة المستخدمة من أجل -مارس.

-mtpf- تتبع
-mno-tpf- تتبع
قم بإنشاء التعليمات البرمجية التي تضيف (لا تضيف) في الفروع المحددة لنظام التشغيل TPF لتتبع الإجراءات
في نظام التشغيل. يتم إيقاف تشغيل هذا الخيار افتراضيًا ، حتى عند التحويل البرمجي لملف
نظام تشغيل TPF.

-مفوس-ماد
-منو-تنصهر-ماد
قم بإنشاء رمز يستخدم (لا يستخدم) الفاصلة العائمة في الضرب والتراكم
تعليمات. يتم إنشاء هذه التعليمات بشكل افتراضي إذا كانت النقطة العائمة للأجهزة
.

-حجم الإطارات المحذرة =حجم الاطار
أرسل تحذيرًا إذا تجاوزت الوظيفة الحالية حجم الإطار المحدد. لأن هذا هو
التحقق من وقت الترجمة لا يحتاج إلى أن يكون مشكلة حقيقية عند تشغيل البرنامج. هو - هي
الغرض منه هو تحديد الوظائف التي من المحتمل أن تتسبب في تجاوز سعة مكدس. إنها
مفيد للاستخدام في بيئة ذات حجم مكدس محدود مثل نواة لينكس.

- ديناميكي حذر
أرسل تحذيرًا إذا كانت الوظيفة تستدعي تخصيص أو تستخدم مصفوفات ذات حجم ديناميكي. هذا هو
بشكل عام فكرة سيئة مع حجم مكدس محدود.

-mstack-guard =حارس المكدس
-حجم المكدس =حجم كومة
إذا تم توفير هذه الخيارات ، ترسل الواجهة الخلفية s390 إرشادات إضافية في ملف
مقدمة الوظيفة التي تؤدي إلى تشغيل مصيدة إذا كان حجم المكدس هو حارس المكدس بايت أعلاه
ال حجم كومة (تذكر أن المكدس الموجود في s390 ينمو إلى أسفل). إذا كان حارس المكدس
يتم حذف الخيار أصغر قوة 2 أكبر من حجم الإطار المترجم
تم اختيار الوظيفة. تهدف هذه الخيارات إلى استخدامها للمساعدة في تصحيح أخطاء المكدس
مشاكل الفائض. بالإضافة إلى ذلك ، فإن الكود المنبعث يسبب القليل من النفقات العامة و
وبالتالي يمكن استخدامها أيضًا في الإنتاج مثل الأنظمة دون أداء أفضل
انحلال. يجب أن تكون القيم المعطاة قوى بالضبط لـ 2 و حجم كومة يجب أن يكون
أكبر من حارس المكدس دون تجاوز 64 كيلو بايت. من أجل أن تكون أكثر كفاءة
يقوم الكود بافتراض أن المكدس يبدأ من عنوان محاذ للقيمة
معطى بواسطة حجم كومة. حارس المكدس يمكن استخدام الخيار فقط جنبًا إلى جنب مع
حجم كومة.

العلامة مزيد من الخيارات

تم تحديد هذه الخيارات لتطبيقات الدرجة:

-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.

-m4a- nofpu
قم بإنشاء رمز لـ SH4al-dsp ، أو لـ SH4a بطريقة تجعل النقطة العائمة
لا يتم استخدام الوحدة.

-m4a- مفرد فقط
قم بإنشاء رمز لـ SH4a ، بطريقة لا تحتوي على نقطة عائمة مزدوجة الدقة
يتم استخدام العمليات.

-m4a- واحد
قم بإنشاء رمز لـ SH4a بافتراض أن وحدة الفاصلة العائمة بدقة مفردة
الوضع افتراضيًا.

-m4a
قم بإنشاء رمز لـ SH4a.

-m4al
مثل -m4a- nofpu، إلا أنه يمر ضمنيًا -dsp للمجمع. مجلس التعاون الخليجي
لا يُنشئ أي تعليمات DSP في الوقت الحالي.

-مب قم بتجميع التعليمات البرمجية للمعالج في الوضع الكبير.

-مل قم بتجميع التعليمات البرمجية للمعالج في الوضع الصغير.

-Mdalign
يتضاعف المحاذاة عند حدود 64 بت. لاحظ أن هذا يغير اصطلاحات الاستدعاء ،
وبالتالي لن تعمل بعض الوظائف من مكتبة C القياسية إلا إذا قمت بإعادة التحويل البرمجي
أولا مع -Mdalign.

-استراحة
تقصير بعض مراجع العنوان في وقت الارتباط ، عندما يكون ذلك ممكنًا ؛ يستخدم خيار الرابط
-الاسترخاء.

-مهم
استخدم إزاحات 32 بت في جداول "التبديل". الافتراضي هو استخدام إزاحات 16 بت.

-مبيتوبس
تفعيل استخدام تعليمات معالجة البت في SH2A.

-مفموفد
تفعيل استخدام التعليمات "fmovd". التحقق من -Mdalign لقيود المحاذاة.

-ميتاتشي
الامتثال لاتفاقيات الاستدعاء المحددة بواسطة Renesas.

-مرينا
الامتثال لاتفاقيات الاستدعاء المحددة بواسطة Renesas.

-منو-رينيساس
الامتثال لاتفاقيات الاستدعاء المحددة لـ GCC قبل اتفاقيات Renesas
كانت متاحة. هذا الخيار هو الخيار الافتراضي لجميع أهداف سلسلة أدوات SH.

-منوماكسيف
ضع علامة على سجل "MAC" على أنه clobbered ، حتى لو كان -ميتاتشي معطى.

-مييي
-منو-اييي
التحكم في امتثال IEEE لمقارنات النقطة العائمة ، مما يؤثر على المعالجة
الحالات التي تكون فيها نتيجة المقارنة غير مرتبة. بشكل افتراضي -مييي is
ممكّن ضمنيًا. لو - غير محدد - الرياضيات فقط يتم تمكين -منو-اييي تم تعيينه ضمنيًا ،
مما ينتج عنه مقارنات أسرع بالفاصلة العائمة أكبر مساواة وأقل مساواة. ال
يمكن تجاوز إعدادات implcit بتحديد إما -مييي or -منو-اييي.

-minline- ic_invalidate
التعليمات البرمجية المضمنة لإبطال إدخالات ذاكرة التخزين المؤقت للتعليمات بعد إعداد وظيفة متداخلة
الترامبولين. هذا الخيار ليس له أي تأثير إذا كان -musermode ساري المفعول وتم تحديده
لا يسمح خيار إنشاء الكود (على سبيل المثال -m4) باستخدام تعليمات icbi. لو
لا يسمح خيار إنشاء الكود المحدد باستخدام تعليمات icbi ،
و -musermode ليس ساري المفعول ، سوف يعالج الكود المضمن التعليمات
صفيف عنوان ذاكرة التخزين المؤقت مباشرة مع كتابة ترابطية. هذا لا يتطلب فقط
الوضع المميز ، ولكنه سيفشل أيضًا إذا تم تعيين خط ذاكرة التخزين المؤقت عبر TLB
وأصبحت غير مخططة.

-حجم
حجم التعليمات التفريغ والموقع في كود التجميع.

-مباديم
تم إهمال هذا الخيار. إنها تقوم بتدبيس الهياكل بمضاعفات 4 بايت ، وهو
غير متوافق مع SH ABI.

-msoft- الذرية
قم بتوليد تسلسلات ذرية لبرمجيات gUSA متوافقة مع GNU / Linux للمحتوى الذري المدمج
المهام. تتطلب التسلسلات الذرية المولدة دعمًا من المقاطعة /
رمز معالجة الاستثناء للنظام وهي مناسبة فقط للأنظمة أحادية النواة.
لن تعمل بشكل صحيح على الأنظمة متعددة النواة. يتم تمكين هذا الخيار بواسطة
الافتراضي عندما يكون الهدف هو "sh - * - linux *". للحصول على تفاصيل حول الذري المدمج
وظائف انظر __الذري البنايات.

-مساحة
التحسين للمساحة بدلاً من السرعة. التي تنطوي عليها -أوس.

-مبريفيرجوت
عند إنشاء رمز مستقل عن الموضع ، أرسل استدعاءات دالة باستخدام Global Offset
جدول بدلاً من جدول ربط الإجراءات.

-موسمود
لا تنشئ رمزًا لوضع الامتياز فقط ؛ يعني -mno-inline-ic_invalidate إذا كان
لن تعمل التعليمات البرمجية المضمنة في وضع المستخدم. هذا هو الإعداد الافتراضي عندما يكون الهدف
"sh - * - linux *".

-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 بت إلى الاسم. هذا
تؤثر فقط على الاسم المستخدم في الاتصال والدعوة: استراتيجيات تقسيم المكالمات ، و
سيظل المترجم يتوقع نفس مجموعات سجلات الإدخال / الإخراج / الضرب كما لو
هذا الخيار لم يكن موجودا.

- المدى الثابت =نطاق التسجيل
إنشاء رمز يعامل نطاق السجل المحدد كسجلات ثابتة. سجل ثابت
هو الذي لا يمكن لمخصص السجل استخدامه. هذا مفيد عند تجميع النواة
الشفرة. يتم تحديد نطاق التسجيل كسجلين مفصولة بشرطة. عديد
يمكن تحديد نطاقات التسجيل مفصولة بفاصلة.

-ماعد- فتح
فتح الخانق لتجنب سحق سجلات الهدف. هذا الخيار لديه فقط
التأثير إذا كانت قاعدة كود مجلس التعاون الخليجي تدعم الخطاف الهدف TARGET_ADJUST_UNROLL_MAX.

-مخاطبة-مخاطبة
تفعيل استخدام وضع العنونة المفهرس لـ SHmedia32 / SHcompact. هذا فقط
آمن إذا كان الجهاز و / أو نظام التشغيل يطبقان دلالات التفافية 32 بت للمفهرس
وضع العنونة. تسمح البنية بتنفيذ معالجات 64 بت
MMU ، والتي يمكن أن يستخدمها نظام التشغيل للحصول على عنونة 32 بت ، ولكن نظرًا لعدم وجود أجهزة حالية
يدعم التطبيق هذا أو أي طريقة أخرى لجعل وضع العنونة المفهرس آمنًا
لاستخدامه في 32 بت ABI ، الافتراضي هو -رقم-العنونة المفهرسة.

-mgettrcost =عدد
قم بتعيين التكلفة المفترضة لتعليمات gettr إلى عدد. الافتراضي هو 2 إذا
-مبت- ثابت سارية ، 100 خلاف ذلك.

-مبت- ثابت
افترض أن تعليمات pt * لن تصطاد. سيؤدي هذا بشكل عام إلى إنشاء جدول زمني أفضل
رمز ، لكنه غير آمن على الأجهزة الحالية. يقول تعريف العمارة الحالي
أن ptabs و ptrel trap عندما يكون الهدف و 3 هو 3. هذا يحتوي على
تأثير غير مقصود يجعل من غير الآمن جدولة ptabs / ptrel قبل الفرع ، أو
ارفعها للخروج من الحلقة. على سبيل المثال ، __do_global_ctor ، جزء من libgcc يتم تشغيله
المنشئات عند بدء تشغيل البرنامج ، تستدعي وظائف في قائمة محددة بـ -1.
باستخدام الخيار -mpt-Fix ، سيتم عمل ptabs قبل الاختبار مقابل -1. الذي - التي
يعني أنه سيتم تشغيل جميع المنشئات بشكل أسرع قليلاً ، ولكن عندما يتعلق الأمر بالحلقة
في نهاية القائمة ، يتعطل البرنامج لأن ptabs يقوم بتحميل -1 في الهدف
تسجيل. نظرًا لأن هذا الخيار غير آمن لأي جهاز يقوم بتنفيذ التيار
مواصفات العمارة ، الافتراضي هو -mno-pt- ثابت. ما لم يحدد المستخدم ملف
تكلفة محددة مع -mgettrcost، -mno-pt-fix يعني أيضًا -mgettrcost = 100. هذه
الرادع يسجل التخصيص باستخدام سجلات الهدف لتخزين الأعداد الصحيحة العادية.

-الرموز غير الصالحة
افترض أن الرموز قد تكون غير صالحة. رموز الوظيفة العادية التي تم إنشاؤها بواسطة المترجم
سيكون دائمًا صالحًا للتحميل باستخدام movi / shori / ptabs أو movi / shori / ptrel ، ولكن مع
الحيل المجمعة و / أو الرابط من الممكن إنشاء الرموز التي ستسبب
ptabs / ptrel إلى الفخ. يكون هذا الخيار ذا مغزى فقط عندما -منو- حزب العمال- ثابت في
تأثير. سوف يمنع بعد ذلك cse عبر الكتلة الأساسية ، والرفع ومعظم جدولة
تحميل الرمز. الافتراضي هو -رموز-غير صالحة.

- تكلفة الامتياز =NUM
افترض NUM لتكون تكلفة تعليمات الفرع. ستجعل الأرقام الأعلى
يحاول المترجم إنشاء المزيد من التعليمات البرمجية الخالية من الفروع إن أمكن. إذا لم يتم تحديد
يتم تحديد القيمة بناءً على نوع المعالج الذي يتم تجميعه من أجله.

-mcbranchdi
قم بتمكين نمط التعليمات "cbranchdi4".

-مكمبكدي
انبعث نمط التعليمات "cmpeqdi_t" حتى عندما -mcbranchdi ساري المفعول.

-مفوس-ماد
اسمح باستخدام تعليمة "fmac" (تتراكم النقطة العائمة) إذا كان
نوع المعالج يدعمها. قد يؤدي تمكين هذا الخيار إلى إنشاء رمز ينتج
نتائج فاصلة عائمة رقمية مختلفة مقارنةً بحسابات IEEE 754 الحسابية الصارمة.

- ترجمة - سموف
تفضل الفروع الشرطية ذات الإزاحة الصفرية لتعليمات الحركة الشرطية
أنماط - رسم. يمكن أن ينتج عن هذا رمز أسرع على معالج SH4.

سولاريس 2 مزيد من الخيارات

تشبه -m الخيارات مدعومة في Solaris 2:

-طبخ-النص
-طبخ-النصتستخدم بالإضافة إلى -مشاركةيخبر المترجم بعدم المرور -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 بايت. تحديد هذا الخيار يتجنب بعض نادرة
مشاكل التوافق مع التعليمات البرمجية التي تم إنشاؤها بواسطة المجمعين الآخرين. ليس هذا هو الافتراضي
لأنه ينتج عنه خسارة في الأداء ، خاصةً بالنسبة لرمز الفاصلة العائمة.

- أسرع - الهياكل
-أسرع الهياكل
بدافع -أسرع الهياكل، يفترض المترجم أن الهياكل يجب أن تحتوي على 8 بايت
انتقام. يتيح ذلك استخدام أزواج من التعليمات "ldd" و "الأمراض المنقولة جنسياً" للنسخ
في تعيين الهيكل ، بدلاً من ضعف عدد أزواج "ld" و "st". ومع ذلك ، فإن
استخدام هذا المحاذاة المتغيرة ينتهك بشكل مباشر SPARC ABI. وبالتالي ، فهو مقصود
فقط للاستخدام على الأهداف حيث يقر المطور بأن الكود الناتج عنها
لن يتماشى بشكل مباشر مع قواعد ABI.

-mcpu =نوع_ وحدة المعالجة المركزية
قم بتعيين مجموعة التعليمات ، وتسجيل مجموعة ، ومعلمات جدولة التعليمات لـ
نوع الجهاز نوع_ وحدة المعالجة المركزية. القيم المدعومة لـ نوع_ وحدة المعالجة المركزية . v7, شجر السرو, v8, com.supersparc,
هايبرسبارك, ليون, سباركلايت, f930, f934, سباركليت, سباركليت, TSC701, v9,
أولتراسبارك, Ultrasparc3, نياجرا, نياجرا 2, نياجرا 3و نياجرا 4.

تدعم سلاسل أدوات Native Solaris و GNU / Linux القيمة أيضًا محليالتي تختار
أفضل خيار معماري للمعالج المضيف. -mcpu = أصلي ليس له تأثير إذا
مجلس التعاون الخليجي لا يتعرف على المعالج.

تُستخدم معلمات جدولة التعليمات الافتراضية للقيم التي تحدد ملف
العمارة وليس التنفيذ. وهذه هي v7, v8, سباركلايت, سباركليت, v9.

فيما يلي قائمة بكل بنية مدعومة وعمليات تنفيذها المدعومة.

v7 السرو

الإصدار 8 من supersparc ، و hypersparc ، و leon

سباركلايت
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, هايبرسبارك, ليون, f930, f934, سباركليت, TSC701, أولتراسبارك,
Ultrasparc3, نياجرا, نياجرا 2, نياجرا 3 و نياجرا 4. مع مواطن سولاريس و
سلاسل أدوات جنو / لينكس ، محلي يمكن أن تستخدم أيضا.

-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 و -مفيس.

-mpopc
-منو-بوبك
بدافع -mpopc، ينشئ GCC رمزًا يستفيد من مجموعة UltraSPARC
عد التعليمات. الافتراضي هو -mpopc عند استهداف وحدة المعالجة المركزية التي تدعم مثل
التعليمات ، مثل Niagara-2 والإصدارات الأحدث.

-مفماف
-منو فماف
بدافع -مفماف، ينشئ GCC رمزًا يستفيد من UltraSPARC Fused Multiply-
أضف ملحقات الفاصلة العائمة. الافتراضي هو -مفماف عندما تستهدف وحدة المعالجة المركزية ذلك
يدعم هذه التعليمات ، مثل Niagara-3 والإصدارات الأحدث.

- إصلاح- at697f
قم بتمكين الحل البديل الموثق للخطأ الفردي لمعالج Atmel AT697F
(والذي يتوافق مع الخطأ رقم 13 الخاص بمعالج AT697E).

تشبه -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 لا يتعامل مع عمليات النقل الديناميكية. بشكل افتراضي ، سيعطي مجلس التعاون الخليجي علامة
خطأ عند إنشاء رمز يتطلب نقل ديناميكي. -رقم-خطأ-نقل
يعطل الخطأ ، -موارن-ريلوك سيولد تحذيرًا بدلاً من ذلك.

-المأمون- dma
-Munsafe- دما
يجب عدم إعادة ترتيب التعليمات التي تبدأ أو تختبر إكمال التحليل الميكانيكي الديناميكي (DMA) باستخدامها
فيما يتعلق بأحمال ومخازن الذاكرة التي يتم الوصول إليها. المستخدمين عادة
قم بمعالجة هذه المشكلة باستخدام الكلمة الأساسية المتغيرة ، ولكن يمكن أن يؤدي ذلك إلى رمز غير فعال
في الأماكن التي من المعروف أن الذاكرة لا تتغير فيها. بدلا من وضع علامة على الذاكرة
متقلب نتعامل مع تعليمات التحليل الميكانيكي الديناميكي (DMA) على أنها قد تؤثر على الذاكرة بالكامل. مع
-Munsafe- دما يجب على المستخدمين استخدام الكلمة الأساسية المتغيرة لحماية عمليات الوصول إلى الذاكرة.

- تلميحات فرع
بشكل افتراضي ، ستنشئ 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
بشكل افتراضي ، سيقوم GCC بإدراج nops لزيادة الإصدار المزدوج عندما يتوقع أن يزداد
أداء. n يمكن أن تكون القيمة من 0 إلى 10. أصغر n سيتم إدراج عدد أقل من nops. 10
هو الافتراضي ، 0 هو نفسه -رقم-ثنائي-نوبس. معاق مع -أوس.

-النعناع-ماكس-نوبس =n
الحد الأقصى لعدد nops لإدراجها في تلميح فرع. يجب أن يكون تلميح الفرع 8 على الأقل
تعليمات بعيدًا عن الفرع الذي يتم تنفيذه. سوف GCC إدراج ما يصل إلى n نوب ل
فرض هذا ، وإلا فلن ينتج عنه تلميح الفرع.

-نعمة-ماكس-مسافة =n
يحد تشفير تعليمات تلميح الفرع من أن يكون التلميح في حدود 256
تعليمات الفرع الذي يتم تنفيذه. بشكل افتراضي ، تتأكد دول مجلس التعاون الخليجي من وجودها في الداخل
125

- تلميحات
قم بالتغلب على خطأ في الجهاز يؤدي إلى توقف SPU إلى أجل غير مسمى. بشكل افتراضي ، GCC
سيقوم بإدخال تعليمات "hbrp" للتأكد من عدم حدوث هذا المماطلة.

مزيد من الخيارات For System V

تتوفر هذه الخيارات الإضافية في الإصدار 4 من النظام الخامس للتوافق مع الخيارات الأخرى
المجمعين على تلك الأنظمة:

-G إنشاء كائن مشترك. هذا موصى به -رمزي or -مشاركة يمكن استخدامها بدلا من ذلك.

-QY حدد إصدارات كل أداة يستخدمها المترجم ، في مُجمّع ".ident"
التوجيه في الإخراج.

-Qn الامتناع عن إضافة توجيهات ".ident" إلى ملف الإخراج (هذا هو الإعداد الافتراضي).

-YP ،تطبيق الاستعراض المفصل
ابحث في الدلائل تطبيق الاستعراض المفصل، وليس غيرها ، للمكتبات المحددة بـ -l.

نعم ،دير
ابحث في الدليل دير للعثور على المعالج M4. المجمع يستخدم هذا
الخيار.

بلاط Gx مزيد من الخيارات

تشبه -m الخيارات مدعومة على TILE-Gx:

-mcpu =الاسم
يحدد نوع وحدة المعالجة المركزية المراد استهدافها. حاليا النوع الوحيد المدعوم هو معرف com لهذا التطبيق هو com.tilegx.

م 32
م 64
قم بإنشاء رمز لبيئة 32 بت أو 64 بت. تحدد بيئة 32 بت int ،
طويل ، ومؤشر إلى 32 بت. تعيين بيئة 64 بت int إلى 32 بت وطويل و
المؤشر إلى 64 بت.

تيليبرو مزيد من الخيارات

تشبه -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.

-مفتاح كبير
إنشاء رمز مناسب لجداول التبديل الكبيرة. استخدم هذا الخيار فقط إذا كان
يشكو المجمع / الرابط من الفروع خارج النطاق داخل جدول التبديل.

-map-regs
سيؤدي هذا الخيار إلى استخدام r2 و r5 في الكود الذي تم إنشاؤه بواسطة المترجم.
هذا الإعداد الافتراضي.

-mno-app-regs
سيؤدي هذا الخيار إلى معاملة r2 و r5 كسجلات ثابتة.

-mv850e2v3
حدد أن المعالج الهدف هو V850E2V3. ثوابت المعالج
__v850e2v3__ سيتم تعريفه إذا تم استخدام هذا الخيار.

-mv850e2
حدد أن المعالج الهدف هو V850E2. ثوابت المعالج
__v850e2__ سيتم تعريفه إذا تم استخدام هذا الخيار.

-mv850e1
حدد أن المعالج الهدف هو V850E1. ثوابت المعالج
__v850e1__ و __v850e__ سيتم تعريفه إذا تم استخدام هذا الخيار.

-mv850es
حدد أن المعالج الهدف هو V850ES. هذا هو الاسم المستعار لـ -mv850e1
الخيار.

-mv850e
حدد أن المعالج الهدف هو V850E. ثابت المعالج __v850e__
سيتم تعريفه إذا تم استخدام هذا الخيار.

إذا لم يكن أي منهما -mv850 ولا -mv850e ولا -mv850e1 ولا -mv850e2 ولا -mv850e2v3 يتم تعريفها
ثم سيتم اختيار المعالج الهدف الافتراضي وذات الصلة __v850 * __ المعالج
سيتم تحديد ثابت.

ثوابت المعالج __v850 و __v851__ يتم تعريفها دائمًا ، بغض النظر عن ذلك
متغير المعالج هو الهدف.

-تعطيل- callt
سيؤدي هذا الخيار إلى منع إنشاء تعليمات CALLT الخاصة بـ v850e ، و v850e1 ،
نكهات v850e2 و v850e2v3 لمعمارية v850. الافتراضي هو
-رقم- تعطيل- callt مما يسمح باستخدام تعليمات CALLT.

VAX مزيد من الخيارات

تشبه -m تم تحديد الخيارات لـ VAX:

-مونيكس
لا تقم بإخراج تعليمات قفزة معينة ("aobleq" وما إلى ذلك) لمجمّع Unix
لأن VAX لا يمكنه التعامل مع نطاقات طويلة.

-مجنو
قم بإخراج تعليمات القفز هذه ، على افتراض أنك ستجمع مع الامتداد
مُجمِّع جنو.

-مغ كود الإخراج لأرقام الفاصلة العائمة بتنسيق G بدلاً من تنسيق D.

VxWorks مزيد من الخيارات

تم تحديد الخيارات في هذا القسم لجميع أهداف VxWorks. خيارات خاصة بـ
يتم سرد الأجهزة الهدف مع الخيارات الأخرى لهذا الهدف.

-Mrtp
يمكن لـ GCC إنشاء رمز لكل من نواة VxWorks وعمليات الوقت الفعلي (RTPs). هذه
الخيار يتحول من السابق إلى الأخير. كما أنها تحدد ماكرو المعالج المسبق
"__RTP__".

-غير ثابت
اربط ملف RTP قابل للتنفيذ بالمكتبات المشتركة بدلاً من المكتبات الثابتة. ال
الخيارات -ثابتة و -مشاركة يمكن استخدامها أيضًا في RTPs ؛ -ثابتة هو الافتراضي.

- ثابت
-ديناميكية
يتم تمرير هذه الخيارات إلى الرابط. يتم تعريفها للتوافق مع
دياب.

-Xbind-كسول
تفعيل الربط البطيء لاستدعاءات الوظائف. هذا الخيار يعادل -Wl ، -z ، الآن وغير
محددة للتوافق مع دياب.

-Xbind- الآن
تعطيل الربط البطيء لاستدعاءات الوظائف. هذا الخيار هو الخيار الافتراضي ويتم تحديده لـ
التوافق مع دياب.

x86-64 مزيد من الخيارات

تم سرد هذه تحت

اكس ستورمي 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" ، والتي سوف يحاذيها المجمّع دائمًا ، إما عن طريق التوسيع
تعليمات الكثافة أو بإدخال تعليمات no-op.

- مكالمات
-منو- مكالمات طويلة
عند تمكين هذا الخيار ، يوجه مجلس التعاون الخليجي المجمع لترجمة المكالمات المباشرة إليه
المكالمات غير المباشرة ما لم تتمكن من تحديد أن الهدف من المكالمة المباشرة في
النطاق المسموح به بواسطة تعليمات الاتصال. تحدث هذه الترجمة عادةً للمكالمات إلى
وظائف في ملفات المصدر الأخرى. على وجه التحديد ، يقوم المجمع بترجمة ملف
تعليمات "CALL" في "L32R" متبوعة بتعليمات "CALLX". الافتراضي هو
-منو- مكالمات طويلة. يجب استخدام هذا الخيار في البرامج حيث يمكن لهدف المكالمة
من المحتمل أن تكون خارج النطاق. يتم تنفيذ هذا الخيار في المجمع ، وليس في
المترجم ، لذلك سيظل رمز التجميع الذي تم إنشاؤه بواسطة GCC يظهر استدعاء مباشر
التعليمات --- انظر إلى كود الكائن المفكك لمعرفة التعليمات الفعلية.
لاحظ أن المجمّع سيستخدم استدعاء غير مباشر لكل استدعاء عبر الملفات ، وليس فقط
تلك التي ستكون خارج النطاق حقًا.

zSeries مزيد من الخيارات

تم سرد هذه تحت

مزيد من الخيارات For رمز جيل الاتفاقيات
تتحكم هذه الخيارات المستقلة عن الآلة في اصطلاحات الواجهة المستخدمة في الكود
توليد.

معظمهم لديهم أشكال إيجابية وسلبية ؛ الشكل السلبي لـ -ffoo سيكون
-فنو-فو. في الجدول أدناه ، تم إدراج نموذج واحد فقط --- النموذج الذي ليس ملف
إفتراضي. يمكنك معرفة الشكل الآخر عن طريق الإزالة الجوى أو إضافته.

- التحقق من القيود
بالنسبة للواجهات الأمامية التي تدعمها ، أنشئ رمزًا إضافيًا للتحقق من استخدام المؤشرات
مصفوفات الوصول ضمن النطاق المعلن. هذا مدعوم حاليًا فقط بواسطة
واجهات Java و Fortran الأمامية ، حيث يتم تعيين هذا الخيار افتراضيًا على صواب وخطأ
على التوالي.

-ftrapv
يُنشئ هذا الخيار اعتراضات للتجاوز الموقَّع عند الجمع والطرح
عمليات الضرب.

-فرابف
يرشد هذا الخيار المترجم إلى افتراض تجاوز التدفق الحسابي الموقّع لـ
الجمع والطرح والضرب يلتف حول استخدام مكمل ثنائي
التمثيل. تتيح هذه العلامة بعض التحسينات وتعطل البعض الآخر. هذه
يتم تمكين الخيار افتراضيًا لواجهة Java الأمامية ، كما هو مطلوب بواسطة لغة Java
تخصيص.

- الاستثناءات
تفعيل معالجة الاستثناءات. يولد كودًا إضافيًا مطلوبًا لنشر الاستثناءات. ل
بعض الأهداف ، وهذا يعني أن مجلس التعاون الخليجي سوف يولد معلومات فك الإطار للجميع
وظائف ، والتي يمكن أن تنتج حجم بيانات كبير الحجم ، على الرغم من أنها لا تفعل ذلك
تؤثر على التنفيذ. إذا لم تحدد هذا الخيار ، فسيقوم GCC بتمكينه افتراضيًا
للغات مثل C ++ التي تتطلب عادةً معالجة الاستثناءات ، وتعطيلها لـ
لغات مثل C التي لا تتطلب ذلك عادةً. ومع ذلك ، قد تحتاج إلى تمكين
هذا الخيار عند ترجمة كود C الذي يحتاج إلى التعامل بشكل صحيح مع استثناء
معالجات مكتوبة بلغة C ++. قد ترغب أيضًا في تعطيل هذا الخيار إذا كنت تريد ذلك
تجميع برامج C ++ الأقدم التي لا تستخدم معالجة الاستثناءات.

- عدم الاستثناءات
قم بإنشاء التعليمات البرمجية التي تسمح لإرشادات الملاءمة برمي الاستثناءات. لاحظ أن هذا
يتطلب دعم وقت تشغيل خاص بالنظام الأساسي غير موجود في كل مكان. وعلاوة على ذلك،
يسمح فقط محاصرة تعليمات لرمي الاستثناءات ، مثل مراجع الذاكرة أو
تعليمات الفاصلة العائمة. لا يسمح بإلقاء الاستثناءات من التعسفي
معالجات الإشارات مثل "SIGALRM".

طاولات ممتعة
على غرار - الاستثناءات، إلا أنه سيؤدي فقط إلى إنشاء أي بيانات ثابتة مطلوبة ، ولكن
لن يؤثر على الكود الذي تم إنشاؤه بأي طريقة أخرى. عادة لن تقوم بتمكين
هذا الخيار؛ بدلاً من ذلك ، فإن معالج اللغة الذي يحتاج إلى هذه المعالجة سيمكنه
بالنيابة عنك.

-غير متزامن-الاسترخاء-الجداول
قم بإنشاء جدول استرخاء بتنسيق dwarf2 ، إذا كان مدعومًا من الجهاز الهدف. الطاولة هي
دقيق عند حدود كل تعليمات ، لذلك يمكن استخدامه لفك المكدس
الأحداث غير المتزامنة (مثل مصحح الأخطاء أو جامع البيانات المهملة).

-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 أن تكون في صفقات غير موقعة مادبا بدلا من ال
الافتراضي للهدف. هذا الخيار مفيد لبناء برامج تعمل في ظل
خمر.

: تحذير ال -قصير- wchar يؤدي التبديل إلى GCC لإنشاء رمز غير ثنائي
متوافق مع الكود الذي تم إنشاؤه بدون هذا المفتاح. استخدمه ليتوافق مع غير-
الواجهة الثنائية للتطبيق الافتراضي.

-fno- مشترك
في كود C ، يتحكم في وضع المتغيرات العالمية غير المهيأة. مترجمي يونيكس سي
سمحت تقليديا بتعريفات متعددة لهذه المتغيرات في مختلف
وحدات التجميع عن طريق وضع المتغيرات في كتلة مشتركة. هذا هو السلوك
المحدد من قبل -مألوف، وهو الإعداد الافتراضي لدول مجلس التعاون الخليجي في معظم الأهداف. من ناحية أخرى،
هذا السلوك غير مطلوب من قبل ISO C ، وقد يحمل في بعض الأهداف سرعة أو رمزًا
حجم العقوبة على المراجع المتغيرة. ال -fno- مشترك يحدد الخيار أن ملف
يجب على المترجم وضع المتغيرات العالمية غير المهيأة في قسم البيانات للكائن
بدلاً من إنشائها ككتل مشتركة. هذا له تأثير أنه إذا كان
يتم التصريح عن نفس المتغير (بدون "خارجي") في مجموعتين مختلفتين ، ستفعل ذلك
الحصول على خطأ متعدد التعريفات عند ربطها. في هذه الحالة ، يجب عليك ترجمة
مع -مألوف في حين أن. تجميع مع -fno- مشترك مفيد في الأهداف التي من أجلها
يقدم أداء أفضل ، أو إذا كنت ترغب في التحقق من أن البرنامج سيعمل
الأنظمة الأخرى التي تعالج دائمًا إعلانات المتغيرات غير المهيأة بهذه الطريقة.

-fno-id
تجاهل # معرف التوجيه.

-حجم منع التوجيه
لا تقم بإخراج توجيه المجمّع ".size" ، أو أي شيء آخر قد يسبب مشكلة
إذا تم تقسيم الوظيفة في المنتصف ، وتم وضع النصفين في مواقع بعيدة
بصرف النظر عن الذاكرة. يستخدم هذا الخيار عند الترجمة crtstuff.c؛ لا تحتاج
لاستخدامه في أي شيء آخر.

-فطر- asm
ضع معلومات تعليق إضافية في كود التجميع الذي تم إنشاؤه لجعله أكثر
مقروء. هذا الخيار بشكل عام فقط للاستخدام لأولئك الذين يحتاجون بالفعل إلى قراءة
إنشاء كود التجميع (ربما أثناء تصحيح أخطاء المترجم نفسه).

-fno-مطول-asm، الافتراضي ، يؤدي إلى حذف المعلومات الإضافية وهو
مفيد عند مقارنة ملفي المجمع.

- مفاتيح دول مجلس التعاون الخليجي
يؤدي رمز التبديل هذا إلى سطر الأوامر الذي تم استخدامه لاستدعاء المترجم ليكون
تم تسجيله في ملف الكائن الذي يتم إنشاؤه. يتم تنفيذ هذا التبديل فقط
في بعض الأهداف ويكون التنسيق الدقيق للتسجيل هو تنسيق الملف الهدف والثنائي
تابع ، ولكنه يأخذ شكل قسم يحتوي على نص ASCII. هذه
التبديل مرتبط بـ -فطر- asm التبديل ، ولكن هذا التبديل فقط السجلات
المعلومات في ملف إخراج المجمع كتعليقات ، لذلك لا تصل إلى الكائن أبدًا
ملف. أنظر أيضا -جريكورد- مفاتيح دول مجلس التعاون الخليجي للحصول على طريقة أخرى لتخزين خيارات المترجم في ملفات
ملف الكائن.

-fpic
قم بإنشاء رمز مستقل عن الموضع (PIC) مناسب للاستخدام في مكتبة مشتركة ، إذا
مدعوم للجهاز الهدف. يصل هذا الرمز إلى جميع العناوين الثابتة من خلال a
جدول الإزاحة العالمية (GOT). يحل المُحمل الديناميكي إدخالات GOT عندما يكون ملف
يبدأ البرنامج (المحمل الديناميكي ليس جزءًا من دول مجلس التعاون الخليجي ؛ إنه جزء من التشغيل
النظام). إذا تجاوز حجم GOT للملف التنفيذي المرتبط الحد الأقصى الخاص بالجهاز
بحجم ، تحصل على رسالة خطأ من الرابط تشير إلى ذلك -fpic لا يعمل؛ في
في هذه الحالة ، قم بإعادة التحويل البرمجي باستخدام -fPIC في حين أن. (هذه الحدود القصوى هي 8 كيلو بايت على SPARC و 32 كيلو بايت
على m68k و RS / 6000. 386 ليس له مثل هذا الحد.)

تتطلب التعليمات البرمجية المستقلة عن الموضع دعمًا خاصًا ، وبالتالي فهي تعمل فقط على
آلات معينة. بالنسبة لطراز 386 ، تدعم دول مجلس التعاون الخليجي الموافقة المسبقة عن علم للنظام الخامس ولكن ليس للشمس
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" ، وفي هذه الحالة هذا
لن يتم عمل الأجهزة. يمكن استخدام هذا ، على سبيل المثال ، للتنميط
الوظائف المذكورة أعلاه وإجراءات المقاطعة ذات الأولوية العالية وأي وظائف منها
لا يمكن استدعاء وظائف التنميط بأمان (ربما معالجات الإشارة ، إذا كان
تولد إجراءات التنميط الإخراج أو تخصيص الذاكرة).

- وظائف الصك - استبعاد - قائمة الملفات =ملف,ملف، ...
عيّن قائمة الوظائف المستبعدة من الأجهزة (انظر الوصف
من "وظائف الصك"). إذا كان الملف الذي يحتوي على تعريف دالة يطابق
مع واحد من ملف، إذًا لا يتم استخدام هذه الوظيفة. تنتهي المباراة يوم
سلاسل فرعية: إذا كان ملف المعلمة هي سلسلة فرعية من اسم الملف ، وتعتبر
يكون متطابقا.

فمثلا:

-finstrument-function-extra-file-list = / bits / stl ، include / sys

سيستبعد أي دالة مضمنة محددة في الملفات التي تحتوي أسماء المسار الخاصة بها على "/ bits / stl"
أو "include / sys".

إذا كنت تريد ، لسبب ما ، تضمين الحرف "،" في أحد SYM، اكتب '،'. ل
على سبيل المثال ، "-finstrument-function-extra-file-list = '،، tmp'" (لاحظ الاقتباس الفردي
المحيطة بالخيار).

-الصك-الدوال-استبعاد-وظيفة-قائمة =SYM,SYM، ...
هذا مشابه لـ "-finstrument-jobs-Exclusion-file-list" ولكن هذا الخيار يحدد
قائمة أسماء الوظائف التي سيتم استبعادها من الأجهزة. اسم الوظيفة ل
يكون المطابقة هو اسمها المرئي للمستخدم ، مثل "vector بلاه (ناقل كونست &) "،
ليس الاسم الداخلي المشوه (على سبيل المثال ، "_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- المكدس
قم بإنشاء رمز لتقسيم المكدس تلقائيًا قبل أن يفيض. النتيجة
يحتوي البرنامج على مكدس غير مجاور لا يمكن تجاوزه إلا إذا كان البرنامج غير قادر على ذلك
تخصيص المزيد من الذاكرة. هذا هو الأكثر فائدة عند تشغيل البرامج الخيوط ، كما هو
لم يعد ضروريًا لحساب حجم مكدس جيد لاستخدامه لكل مؤشر ترابط. هذا هو
مطبق حاليًا فقط للنهايات الخلفية i386 و x86_64 التي تعمل بنظام GNU / Linux.

عندما يتم تجميع التعليمات البرمجية باستخدام -fsplit- المكدس رمز المكالمات المترجمة بدون -fsplit- المكدس، هناك
قد لا تتوفر مساحة مكدس كبيرة لتشغيل الكود الأخير. إذا كان تجميع كل شيء
رمز ، بما في ذلك رمز المكتبة ، مع -fsplit- المكدس ليس خيارًا ، ثم يمكن للرابط
إصلاح هذه المكالمات بحيث يتم تجميع الشفرة بدون -fsplit- المكدس دائما كبيرة
كومة. تم تنفيذ الدعم لهذا في رابط الذهب في إصدار ثنائيات جنو
2.21 وما بعده.

- تسطير - عابرة
هذا الخيار ونظيره ، -الرئيسية- الشرطة السفلية، قم بتغيير طريقة C بالقوة
يتم تمثيل الرموز في ملف الكائن. أحد الاستخدامات هو المساعدة في الارتباط بالإرث
كود التجميع.

: تحذير ال - تسطير - عابرة يؤدي التبديل إلى GCC لإنشاء رمز ليس كذلك
ثنائي متوافق مع التعليمات البرمجية التي تم إنشاؤها بدون هذا المفتاح. استخدمه ليتوافق مع أ
واجهة التطبيق الثنائية غير الافتراضية. ليست كل الأهداف تقدم الدعم الكامل
لهذا التبديل.

-ftls- نموذج =نموذج
قم بتغيير نموذج التخزين المحلي الخيط المراد استخدامه. ال نموذج يجب أن تكون الحجة واحدة من
"ديناميكي عالمي" أو "محلي ديناميكي" أو "تنفيذ أولي" أو "تنفيذي محلي".

الافتراضي بدون -fpic هو "تنفيذ أولي" ؛ مع -fpic الافتراضي هو
"دينامية عالمية".

- الرؤية =افتراضي | داخلي | مخفي | محمي
اضبط رؤية رمز صورة ELF الافتراضية على الخيار المحدد --- جميع الرموز سوف
يتم تمييزها بهذا ما لم يتم تجاوزها داخل الكود. يمكن استخدام هذه الميزة جدا
تحسين الربط وأوقات تحميل مكتبات الكائنات المشتركة بشكل كبير ، وإنتاج المزيد
كود محسّن ، يوفر تصديرًا شبه مثالي لواجهة برمجة التطبيقات ويمنع تضارب الرموز. إنها
بقوة يوصى باستخدام هذا في أي كائنات مشتركة تقوم بتوزيعها.

على الرغم من التسمية ، فإن كلمة "افتراضي" تعني دائمًا عامة ؛ على سبيل المثال ، متاح للربط
ضد من خارج الكائن المشترك. "المحمية" و "الداخلية" عديمة الفائدة إلى حد كبير
في الاستخدام الفعلي لذلك سيكون الخيار الوحيد الشائع الاستخدام "مخفيًا". ال
الافتراضي إذا - الرؤية لم يتم تحديده هو "افتراضي" ، أي اجعل كل رمز
عام --- يتسبب هذا في نفس سلوك الإصدارات السابقة من GCC.

شرح جيد للمزايا المقدمة من خلال التأكد من أن رموز ELF صحيحة
يتم إعطاء الرؤية من خلال "كيفية كتابة المكتبات المشتركة" بواسطة Ulrich Drepper (والذي يمكن أن يكون
وجدت فيhttp://people.redhat.com/~drepper/>) --- ومع ذلك تم تقديم حل متفوق
من الممكن من خلال هذا الخيار وضع علامة على الأشياء المخفية عندما يكون الإعداد الافتراضي عامًا
الافتراضي المخفي وتمييز الأشياء بشكل عام. هذا هو المعيار مع DLL على Windows و
مع -رؤية = مخفي و "__السمة__ ((الرؤية (" الافتراضي ")))" بدلاً من
"__declspec (dllexport)" تحصل على دلالات متطابقة تقريبًا ببنية متطابقة.
هذه نعمة عظيمة لأولئك الذين يعملون في مشاريع عبر الأنظمة الأساسية.

بالنسبة لأولئك الذين يضيفون دعم الرؤية إلى التعليمات البرمجية الموجودة ، قد تجد # براغما الخليج
رؤية من الاستخدام. يعمل هذا من خلال إرفاق الإعلانات التي ترغب في تعيينها
الرؤية لـ (على سبيل المثال) # براغما الخليج رؤية دفع (مخفي) و # براغما الخليج
رؤية فرقعة. ضع في اعتبارك أنه يجب عرض رؤية الرمز as جزء of ال
API الواجهة عقد وبالتالي يجب أن تحدد جميع التعليمات البرمجية الجديدة دائمًا مدى الرؤية عندما تكون
ليس الافتراضي على سبيل المثال ، يجب أن تكون الإعلانات للاستخدام داخل DSO المحلي فقط دائما
يتم تمييزها صراحة على أنها مخفية لتجنب النفقات العامة للمراوغة عبر PLT --- مما يجعل ذلك
يساعد الوضوح الواضح أيضًا في سهولة القراءة والتوثيق الذاتي للكود. لاحظ أن
نظرًا لمتطلبات مواصفات ISO C ++ ، يجب حذف المشغل الجديد وحذف المشغل
تكون دائمًا ذات رؤية افتراضية.

اعلم أن الرؤوس من خارج مشروعك ، لا سيما رؤوس النظام و
رؤوس من أي مكتبة أخرى تستخدمها ، قد لا تتوقع أن يتم تجميعها باستخدام
الرؤية بخلاف الافتراضي. قد تحتاج إلى القول صراحة # براغما الخليج
رؤية دفع (افتراضي) قبل تضمين أي من هذه الرؤوس.

خارجي لا تتأثر الإعلانات ب - الرؤية، لذلك يمكن أن يكون هناك الكثير من التعليمات البرمجية
معاد تجميعها -رؤية = مخفي بدون تعديلات. ومع ذلك ، هذا يعني ذلك
مكالمات إلى خارجي الوظائف التي ليس لها رؤية واضحة ستستخدم PLT ، لذا فهي أكثر
فعالة في الاستخدام __ينسب ((الرؤية)) و / أو # براغما الخليج رؤية ليقول
المترجم الذي خارجي يجب التعامل مع الإعلانات على أنها مخفية.

نلاحظ أن - الرؤية لا تؤثر على كيانات الارتباط الغامضة C ++. هذا يعني أن ، ل
على سبيل المثال ، يجب طرح فئة الاستثناء التي سيتم طرحها بين DSOs بشكل صريح
تم تمييزها بالرؤية الافتراضية بحيث يكون ملف type_info سيتم توحيد العقد بين
مشغلو نظام التوزيع.

نظرة عامة على هذه التقنيات وفوائدها وكيفية استخدامها في
<http://gcc.gnu.org/wiki/Visibility>.

- bitfields شديدة التقلب
يجب استخدام هذا الخيار في حالة الوصول إلى حقول بت متغيرة (أو بنية أخرى
الحقول ، على الرغم من أن المترجم يكرم هذه الأنواع على أي حال) يجب أن يستخدم واحدًا
الوصول إلى عرض نوع الحقل ، محاذيًا لمحاذاة طبيعية إن أمكن.
على سبيل المثال ، قد تتطلب الأهداف ذات السجلات الطرفية المعينة للذاكرة كل هذا
يصل عرضها إلى 16 بتًا ؛ باستخدام هذه العلامة ، يمكن للمستخدم الإعلان عن جميع وحدات البت الطرفية-
الحقول كـ "قصيرة بدون توقيع" (بافتراض أن الاختصار هو 16 بت على هذه الأهداف) لإجبار مجلس التعاون الخليجي
لاستخدام وصول 16 بت بدلاً من وصول 32 بت أكثر كفاءة.

إذا تم تعطيل هذا الخيار ، فسيستخدم المترجم التعليمات الأكثر فعالية. في
المثال السابق ، قد يكون هذا تعليمة تحميل 32 بت ، على الرغم من أن ذلك سيفعل
وحدات البايت الوصول التي لا تحتوي على أي جزء من حقل البت أو الذاكرة المعينة
السجلات التي لا علاقة لها بالسجل الجاري تحديثه.

إذا كان الهدف يتطلب محاذاة صارمة ، وسيتطلب احترام نوع الحقل
انتهاك هذا المحاذاة ، يتم إصدار تحذير. إذا كان الحقل يحتوي على سمة "معبأة" ،
يتم الوصول دون مراعاة نوع الحقل. إذا لم يكن المجال
سمة "محزومة" ، يتم الوصول مع مراعاة نوع الحقل. في كلتا الحالتين ، دول مجلس التعاون الخليجي
يفترض أن المستخدم يعرف شيئًا عن الجهاز المستهدف لا يعرفه.

يتم تحديد القيمة الافتراضية لهذا الخيار بواسطة الواجهة الثنائية للتطبيق لـ
المعالج الهدف.

البيئة


يصف هذا القسم العديد من متغيرات البيئة التي تؤثر على كيفية عمل 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 اكتشاف بادئة مناسبة لـ
استنادًا إلى اسم المسار الذي تم استدعاؤه معه.

إذا لم يتمكن GCC من العثور على البرنامج الفرعي باستخدام البادئة المحددة ، فإنه يحاول البحث في
الأماكن المعتادة للبرنامج الفرعي.

القيمة الافتراضية لـ مجلس التعاون الخليجي_EXEC_PREFIX is البادئة / lib / gcc / أين بادئة هي البادئة ل
المترجم المثبت. في كثير من الحالات بادئة هي قيمة "البادئة" عند تشغيل ملف
تكوين النصي.

البادئات الأخرى المحددة بـ -B لها الأسبقية على هذه البادئة.

تستخدم هذه البادئة أيضًا للبحث عن ملفات مثل crt0.o التي تستخدم للربط.

بالإضافة إلى ذلك ، يتم استخدام البادئة بطريقة غير معتادة في العثور على الدلائل المراد البحث عنها
لملفات الرأس. لكل من الدلائل القياسية التي يبدأ اسمها عادة
مع / usr / local / lib / gcc (بتعبير أدق ، مع قيمة مجلس التعاون الخليجي_INCLUDE_DIR) ، يحاول دول مجلس التعاون الخليجي
استبدال تلك البداية بالبادئة المحددة لإنتاج دليل بديل
اسم. وهكذا ، مع -بفو /سوف يبحث مجلس التعاون الخليجي فو / بار حيث يبحث عادة
/ usr / local / lib / bar. يتم البحث في هذه الدلائل البديلة أولاً ؛ المعيار
الدلائل تأتي بعد ذلك. إذا كان الدليل القياسي يبدأ بملف بادئة then
قيمة بادئة لقد بدل بواسطة مجلس التعاون الخليجي_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 ++ - 4.7 عبر الإنترنت باستخدام خدمات onworks.net


خوادم ومحطات عمل مجانية

قم بتنزيل تطبيقات Windows و Linux

  • 1
    تركديفوبس
    تركديفوبس
    TurkDevOps a�؟ k kaynak yaz؟ l؟ m
    geli؟ tirici topluluklar؟ فريق DevTurks
    Taraf؟ ndan desteklenmektedir ..
    الميزات: https: //github.com/turkdevopshttps: //turkdevops.g ...
    تحميل turkdevops
  • 2
    asammdf
    asammdf
    * asammdf * هو محلل لغة بايثون سريع و
    محرر ASAM (Associtation for
    توحيد الأتمتة و
    أنظمة القياس) MDF / MF4
    (تنسيق بيانات القياس ...
    تحميل ملف asammdf
  • 3
    عرجاء (Lame Aint an MP3 Encoder)
    عرجاء (Lame Aint an MP3 Encoder)
    LAME هي أداة تعليمية يمكن استخدامها
    للتعرف على ترميز MP3. ال
    الهدف من مشروع LAME هو التحسين
    الصوتيات النفسية والجودة والسرعة
    النائب ...
    تنزيل LAME (Lame Aint an MP3 Encoder)
  • 4
    wxPython
    wxPython
    وهناك مجموعة من وحدات تمديد بايثون التي
    التفاف فئات واجهة المستخدم الرسومية عبر الأنظمة الأساسية من
    wxWidgets .. الجمهور: المطورين. المستعمل
    الواجهة: X Window System (X11) ، Win32 ...
    تنزيل wxPython
  • 5
    com.packfilemanager
    com.packfilemanager
    هذا هو مدير ملفات حزمة Total War
    المشروع ، بدءًا من الإصدار 1.7. أ
    مقدمة قصيرة عن وارسكيب
    التعديل: ...
    تنزيل packfilemanager
  • 6
    IPerf2
    IPerf2
    أداة قياس حركة مرور الشبكة
    أداء TCP و UDP مع المقاييس
    حول كل من الإنتاجية والكمون. ال
    تشمل الأهداف الحفاظ على نشاط
    كود iperf ...
    تنزيل IPerf2
  • أكثر "

أوامر لينكس

Ad