잠금없는 데이터 구조와 타이밍 코드를 구현할 때 컴파일러의 최적화를 억제해야 할 때가 있습니다. 일반적으로 사람들은 asm volatile
을 사용하여 클로버 목록에 memory
을 표시하지만 가끔씩 asm volatile
또는 평범한 asm
메모리 만 볼 수도 있습니다.asm, asm 휘발성 메모리 및 clobbering 메모리의 차이점
이 두 가지 진술은 코드 생성시 어떤 영향을 미칩니 까? (특히 GCC에서는 이식성이 떨어지기 때문에)? ..
asm (""); // presumably this has no effect on code generation
asm volatile ("");
asm ("" ::: "memory");
asm volatile ("" ::: "memory");
사람이 너무 가까운 주변까지 덤비는 것 같다 metal :-) (그리고 어딘가에 @Mysticial은 엄청나게 상세한 답변을 타이프하고있다.) –