技术问询:x86/64架构中load与store的定义及语义解析
搞懂CPU里的Load和Store到底指啥
先给你唠个x86/64架构上的知识点:
x86/64架构上的每一个load都隐含acquire语义,每一个store都隐含release语义。
不过你可能会被这条指令搞懵(假设var1的值是1001):
mov eax, [var1]
你可能会琢磨:这指令咋好像既能算"store"又能算"load"?比如:
- 把地址
1001处的值存入eax - 用地址
1001处的值加载eax
其实这俩概念是站在CPU寄存器的视角来定义的,根本不会混淆:
- Load(加载):就是把内存里的数据读到CPU寄存器里的操作——对应上面第二种理解,说白了就是内存→寄存器的数据流,这条
mov eax, [var1]就是标准的Load操作,把var1指向的内存数据拿进eax寄存器。 - Store(存储):反过来,是把CPU寄存器里的数据写到内存里的操作,比如指令
mov [var1], eax,就是把eax里的内容存到var1指向的内存地址,这才是Store。
所以刚才那条指令完全是纯Load操作,别被字面描述绕晕啦~
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

