Lazarus FPC在ASM中拒绝64位AND运算

Iam*_*mIC 3 assembly freepascal x86-64 lazarus

以下内容无法编译:

and rax, $7FFFFFFFFFFFFFFF
Run Code Online (Sandbox Code Playgroud)

我已经尝试将值设为常量,甚至将其作为qword投射,但编译器会抛出"dword值超出界限".

当然,这是一个qword,而不是dword.如何让编译器实现这一点?

请注意,64位代码正在编译并正确运行.

我有最新的Lazarus版本.

Mic*_*ael 5

ANDx86指令集中没有采用imm64操作数的变体.您可以使用mov r64, imm64后跟and r/m64, r64.