Assembly Lazarus FPC拒绝ASM中的和运算的64位值
无法编译以下内容:Assembly Lazarus FPC拒绝ASM中的和运算的64位值,assembly,x86-64,freepascal,lazarus,Assembly,X86 64,Freepascal,Lazarus,无法编译以下内容: and rax, $7FFFFFFFFFFFFFFF 我尝试将该值设置为常量,甚至转换为qword,但编译器抛出“dword值超出边界” 当然,这是一个qword,不是dword。如何让编译器实现这一点 请注意,64位代码在其他方面编译和运行正常 我有最新的Lazarus版本。x86指令集中没有采用imm64操作数的和变体。您可以使用mov r64,imm64,然后是和r/m64,r64哇,我没想到会这样。谢谢。@IanC:在长模式下生成64位立即操作数会使代码膨胀很多。引
and rax, $7FFFFFFFFFFFFFFF
我尝试将该值设置为常量,甚至转换为qword,但编译器抛出“dword值超出边界”
当然,这是一个qword,不是dword。如何让编译器实现这一点
请注意,64位代码在其他方面编译和运行正常
我有最新的Lazarus版本。x86指令集中没有采用
imm64
操作数的和变体。您可以使用mov r64,imm64
,然后是和r/m64,r64
哇,我没想到会这样。谢谢。@IanC:在长模式下生成64位立即操作数会使代码膨胀很多。引入大量带有imm64操作数的新操作码会占用大量操作码空间,并增加解码器的复杂性。