请帮助我理解编译器/操作系统如何响应C中的以下程序行,
int c;
void task1()
{
c+=c; // This line is actually c=c+c; 2 read point 1 write
}
内存会被读取两次还是只读一次?
答案 0 :(得分:0)
这取决于处理器,编译器和编译器选项。在具有乘法到内存指令和未处于调试模式的编译器的处理器上,您可能会生成类似
的代码MULL2 #2, C
内存将被读取一次并写入一次。在处理寄存器中执行所有操作的处理器上,您可能会得到类似的内容:
MOVL C, R3
MULL #2, R3
MOVL R3, C