के बीच का अंतर लॉक-फ्री डेटा संरचनाओं और समय कोड को कार्यान्वित करते समय संकलक के अनुकूलन को दबाने के लिए अक्सर आवश्यक होता है। आम तौर पर लोग asm volatile
का उपयोग क्लॉबर सूची में memory
के साथ करते हैं, लेकिन आप कभी-कभी केवल asm volatile
या केवल सादा asm
क्लोबबरिंग मेमोरी देखते हैं।एएसएम, एएसएम अस्थिर और क्लोबबरिंग मेमोरी
कोड जनरेशन पर विशेष रूप से जीसीसी में इन अलग-अलग बयानों का क्या प्रभाव पड़ता है, क्योंकि यह पोर्टेबल होने की संभावना नहीं है)? ।।
asm (""); // presumably this has no effect on code generation
asm volatile ("");
asm ("" ::: "memory");
asm volatile ("" ::: "memory");
किसी ने अब तक चारों ओर खिलवाड़ किए जाने की भी के करीब लगता है धातु :-) (और कहीं और, @Mysticial एक हास्यास्पद विस्तृत जवाब में दूर लिख रहा है ...) –