c – 长时间初始化和8字节平台

令我惊讶的是,在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来解决此问题.

点赞