令我惊讶的是,在MSVS2012下,在调试模式下将x64平台作为目标并且优化关闭,在一条指令中无法进行长时间的初始化:
; long long l1 = 1;
mov DWORD PTR _l1$[ebp], 1
mov DWORD PTR _l1$[ebp+4], 0
由于寄存器是8个字节,我期望一个能够做到这一点的指令……有一个吗?
最佳答案 在一个快速控制台模式项目中尝试此操作,该项目以x64为目标并查看“反汇编”窗口:
long long l1 = 1;
000000013F151035 mov qword ptr [rsp],1
定位x86时的代码相同:
long long l1 = 1;
010213EE mov dword ptr [l1],1
010213F5 mov dword ptr [ebp-8],0
灌篮,你实际上并没有看到你的程序的x64版本.使用Build Configuration Manager来解决此问题.