Lazarus FPC 拒绝 ASM 中 AND op 的 64 位值

Lazarus FPC refusing a 64-bit value for AND op in ASM

以下将无法编译:

and rax, FFFFFFFFFFFFFFF

我试过将值设置为常量,甚至转换为 qword,但编译器抛出 "dword value exceeds bounds."

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

请注意,64 位代码在其他方面编译并且 运行 正确。

我有最新的 Lazarus 版本。

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