c - 64 位计算机如何更改内存中的一个字节?

标签 c assembly memory x86-64 cpu-architecture

<分区>

如果 C 程序更改字节数组中的一个字节,会执行哪些机器指令?硬件是否需要读取 8 个字节,更改一个字节并存储它(使用 2 个内存操作)?

编辑:特别针对 x86-64 架构

最佳答案

在 x86-64 上,硬件将读取一个缓存行,修改缓存中的字节,最终将该缓存行写回内存。

发生回写的主要原因是CPU需要其他数据的缓存行。有强制回写的明确说明,但 C 编译器不太可能使用这些说明。它会降低 CPU 速度以强制进行不必要的写入。

关于c - 64 位计算机如何更改内存中的一个字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66050103/

相关文章:

c++ - 快速时间函数 C/C++

assembly - 为什么即使 DPMI 主机处于事件状态,INT 31H 也无法正确设置?

iphone - 如何处理核心数据保留周期

c - 如果是c中的指针,函数的大小返回什么

c - ISO_C_BINDING 和 OpenMP 的问题

c - Redis Makefile 如何包含头文件先决条件

assembly 线困惑 $lea 0xffffffe8(%ebp)$

c - 使用结构时,如何将以下汇编代码从编译器翻译成 C?

c++ - 为什么GCC的ifstream >> double分配了这么多的内存?

javascript - 在 Internet Explorer 中使用 JavaScript,如何在不刷新页面的情况下清除内存?