पृष्ठ को गंदा करने के लिए (पृष्ठ तालिका प्रविष्टि में गंदे बिट पर स्विच करना), मैं पृष्ठ के पहले बाइट्स को स्पर्श करता हूं जैसे:
pageptr[0] = pageptr[0];
लेकिन व्यवहार में gcc डेड स्टोर एलिमिनेशन के कथन को अनदेखा कर देगा। इसे अनुकूलित करने के लिए gcc को रोकने के लिए, मैं कथन को इस प्रकार फिर से लिखता हूं:
volatile int tmp;
tmp = pageptr[0];
pageptr[0] = tmp;
ऐसा लगता है कि चाल काम करती है, लेकिन कुछ बदसूरत है। मैं जानना चाहूंगा कि क्या कोई निर्देश या वाक्यविन्यास है जिसका प्रभाव समान है? और मैं एक -O0
ध्वज का उपयोग नहीं करना चाहता , क्योंकि यह शानदार प्रदर्शन जुर्माना भी लाएगा।
-O0
मृत कोड "अनुकूलन" को रोकने का उपयोग नहीं किया था, उदाहरण के लिए, जब जीसीसी का पता चलता है कि कुछ कोड का कोई प्रभाव नहीं है, तो यह बस इसे हटा देता है। AFAIK यह एक चरण पहले भी है -O0
... लेकिन यह सिर्फ मेरा अनुभव है