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
.
以下将无法编译:
and rax, FFFFFFFFFFFFFFF
我试过将值设置为常量,甚至转换为 qword,但编译器抛出 "dword value exceeds bounds."
当然,这是一个 qword,不是 dword。我如何让编译器实现这一点?
请注意,64 位代码在其他方面编译并且 运行 正确。
我有最新的 Lazarus 版本。
在采用 imm64
操作数的 x86 指令集中没有 AND
的变体。您可以使用 mov r64, imm64
后接 and r/m64, r64
.