在同一行读取读取点的变量,操作系统会读取内存两次吗?

时间:2016-11-10 13:54:47

标签: c compiler-construction operating-system

请帮助我理解编译器/操作系统如何响应C中的以下程序行,

int c;

void task1()
{
c+=c;  // This line is actually c=c+c; 2 read point 1 write
}

内存会被读取两次还是只读一次?

1 个答案:

答案 0 :(得分:0)

这取决于处理器,编译器和编译器选项。在具有乘法到内存指令和未处于调试模式的编译器的处理器上,您可能会生成类似

的代码
MULL2 #2, C

内存将被读取一次并写入一次。在处理寄存器中执行所有操作的处理器上,您可能会得到类似的内容:

MOVL C, R3
MULL #2, R3
MOVL R3, C