如何避免方括号中的 64 位常量?

1 assembly x86-64

我知道在x86中我们可以使用括号中的32位地址作为地址。例如:

lea eax, [0xCAFEBABE]

但是在 64 位模式下我应该做什么呢?

下一个代码将无法编译,因为(据我所知)64 位常量只是禁止用于地址。

lea rax, [0xCAFEBABEDEADBEEF]

如何使用这个括号访问一些具有已知常量地址的常量?

vit*_*oft 5

指令lea 不允许 ModR/M 形式的 64 位位移,请使用mov代替:

|00000000:48B8EFBEADDEBEBAFECA | MOV RAX, 0xCAFEBABEDEADBEEF  ; Load 64bit GPR with 64bit immediate value.
|0000000A:48A1EFBEADDEBEBAFECA | MOV RAX,[0xCAFEBABEDEADBEEF] ; Load RAX from a QWORD stored at 64bit offset.
Run Code Online (Sandbox Code Playgroud)