长长初始化和 8 字节平台形式

long long initialization and 8 bytes plateform

本文关键字:平台 初始化 字节      更新时间:2023-10-16

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

; 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 版本。 使用"生成 + 配置管理器"来解决此问题。