में -O0 और -O1 के बीच मतभेद कुछ कोड संकलित करते समय मैंने -O0 और -O1 के बीच बनाए गए असेंबलर में बड़े अंतर को देखा। मैं ऑप्टिमाइज़ेशन को सक्षम/अक्षम करने के माध्यम से दौड़ना चाहता था जब तक कि मुझे पता चला कि असेंबलर में कोई निश्चित परिवर्तन क्यों हो रहा था।जीसीसी
यदि मैं O0 की तुलना में ठीक से कौन सा झंडे ओ 1 सक्षम कर रहा है, तो यह पता लगाने के लिए -फवरबोज-एएसएम का उपयोग करता है, और फिर उन्हें मैन्युअल रूप से अक्षम कर देता है, असेंबलर अभी भी इतनी व्यापक रूप से अलग क्यों होता है? यहां तक कि यदि मैं ओ 0 के साथ जीसीसी चलाता हूं और मैन्युअल रूप से सभी झंडे जोड़ता हूं जो fverbose-asm कहा जाता है ओ 1 के साथ सक्षम किया गया था, तो मुझे वही असेंबलर नहीं मिलता है जो मुझे ओ 1 का उपयोग करके प्राप्त होता।
क्या '-f ...' और '-m ...' से अलग कुछ भी बदला जा सकता है?
या यह है कि 'ओ 1' में 'ओ 0' की तुलना में कुछ जादू है जिसे बंद नहीं किया जा सकता है।
crypticness के लिए खेद है - इस Reducing stack usage during recursion with GCC + ARM से संबंधित था लेकिन यह का उल्लेख प्रश्न थोड़ा कठिन समझने के लिए बना रही थी।
तो समस्या यह है कि आप "हमलावर अनुकूलन" कि ढेर उपयोग बढ़ जाती है के नाम (या हत्यारा संयोजन) पता नहीं है, और आप * भी * नहीं है आपको '-ओएस' से ऑप्टिमाइज़ेशन के नाम पता हैं जिन्हें आपको चाहिए? जहां "नाम नहीं पता" में संभावना है कि उनके पास नाम नहीं हैं, वे 'ओ 1' या 'ओएस' द्वारा सक्षम विविध अतिरिक्त अनुकूलन हैं जिन्हें व्यक्तिगत रूप से नियंत्रित नहीं किया जा सकता है। –
हां - मूल रूप से मैं उन सभी झंडे को जानता हूं जो जीसीसी कहते हैं कि यह सक्षम है (के माध्यम से -फवरबोज-एएसएम)। हालांकि उन्हें मैन्युअल रूप से अक्षम करने से समस्या ठीक नहीं होती है, इसलिए यह कुछ 'जादू' होना चाहिए जिसे मैं नियंत्रित करने में असमर्थ हूं। हालांकि मैंने अभी खोजा है (लिंक किए गए प्रश्न देखें) कि समस्या अभी भी एक अलग तरीके से O0 के साथ मौजूद है। यह जानना अभी भी अच्छा होगा कि इस सवाल का जवाब है या नहीं - क्योंकि यह डरावना है कि अनुकूलन को नियंत्रित करने में सक्षम नहीं है। –
क्या आपने जीसीसी की 'विशेषता (()) का उपयोग करने की कोशिश की थी या किसी अन्य तरीके से फ़ंक्शन को फिर से लिखना था (ई जी। बनाये गये चर स्थिर हैं या मैन्युअल रूप से अपनी जगह आवंटित करते हैं)? आखिरी मौका समाधान समस्याग्रस्त फ़ंक्शन असेंबली में फिर से लिखा जा सकता है। – Vovanium