我想知道为什么GCC 6.2生成以下程序集输出:
main:
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-12], 0
mfence
mov DWORD PTR [rbp-8], 3
mfence
mov DWORD PTR [rbp-4], 2
mfence
mov eax, 0
pop rbp
ret
Run Code Online (Sandbox Code Playgroud)
来自:
#include <atomic>
int main(){
std::atomic_thread_fence(std::memory_order_relaxed); // why mfence instead of `nothing`?
std::atomic_thread_fence(std::memory_order_release); // why mfence instead of sfence?
std::atomic_thread_fence(std::memory_order_acquire); // why mfence instead of lfence?
return 0;
}
Run Code Online (Sandbox Code Playgroud)
特别:
mfence而不是nothing?mfence而不是sfence?mfence而不是lfence?| 归档时间: |
|
| 查看次数: |
232 次 |
| 最近记录: |