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

时间:2012-11-20 14:00:25

标签: c++ assembly types

我很惊讶发现在MSVS2012下,在调试模式下将x64平台作为目标并关闭优化,在一条指令中无法进行long long初始化:

; long long l1 = 1;

    mov DWORD PTR _l1$[ebp], 1
    mov DWORD PTR _l1$[ebp+4], 0

由于寄存器是8个字节,我期望能够执行它的指令......是否有一个?

1 个答案:

答案 0 :(得分:2)

在面向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来解决此问题。