4

我惊讶地发现,在以 x64 平台为目标的 MSVS2012 下,在关闭优化的调试模式下,long long无法在一条指令中完成初​​始化:

; long long l1 = 1;

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

由于寄存器是 8 个字节,我希望有一条能够做到这一点的指令……有吗?

4

1 回答 1

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 来解决这个问题。

于 2012-11-20T17:55:04.157 回答