Kilitlenmeden veri yapıları ve zamanlama kodu uygulandığında, derleyicinin optimizasyonlarını bastırmak genellikle gereklidir. Normalde insanlar asm volatile
'u memory
kullanarak clobber listesinde yaparlar, ancak bazen sadece asm volatile
veya sadece asm
clobbering hafızasını görürsünüz.Asm, asm volatile ve clobbering belleği arasındaki fark
Bu farklı ifadelerin kod oluşturma üzerinde (özellikle taşınabilir olma olasılığı düşük olan GCC'de) ne gibi bir etkisi vardır? ..
asm (""); // presumably this has no effect on code generation
asm volatile ("");
asm ("" ::: "memory");
asm volatile ("" ::: "memory");
Birisi çok yakın çevresinde uzakta oyalanamam görünüyor metal :-) (Ve başka bir yerde, @Mysticial gülünç bir şekilde ayrıntılı bir cevapta yazıyor ...) –