以下代码无法编译:
and rax, $7FFFFFFFFFFFFFFF
我曾试着将该值设置为常量,甚至转换成 qword,但编译器仍然抛出 "dword value exceeds bounds" 的错误。
显然,这是一个 qword 而不是 dword。我该如何让编译器明白这一点呢?
需要注意的是,64 位代码在其他方面都可以正确编译和运行。
我使用的是最新版本的 Lazarus。
and rax, $7FFFFFFFFFFFFFFF
我曾试着将该值设置为常量,甚至转换成 qword,但编译器仍然抛出 "dword value exceeds bounds" 的错误。
显然,这是一个 qword 而不是 dword。我该如何让编译器明白这一点呢?
需要注意的是,64 位代码在其他方面都可以正确编译和运行。
我使用的是最新版本的 Lazarus。
x86指令集中没有使用imm64
操作数的AND
变体。您可以使用mov r64,imm64
,然后使用and r/m64,r64
。