<分区>
如果 C 程序更改字节数组中的一个字节,会执行哪些机器指令?硬件是否需要读取 8 个字节,更改一个字节并存储它(使用 2 个内存操作)?
编辑:特别针对 x86-64 架构
<分区>
如果 C 程序更改字节数组中的一个字节,会执行哪些机器指令?硬件是否需要读取 8 个字节,更改一个字节并存储它(使用 2 个内存操作)?
编辑:特别针对 x86-64 架构
最佳答案
在 x86-64 上,硬件将读取一个缓存行,修改缓存中的字节,最终将该缓存行写回内存。
发生回写的主要原因是CPU需要其他数据的缓存行。有强制回写的明确说明,但 C 编译器不太可能使用这些说明。它会降低 CPU 速度以强制进行不必要的写入。
关于c - 64 位计算机如何更改内存中的一个字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66050103/