【发布时间】:2022-11-21 23:00:07
【问题描述】:
在 nasm (2.14.02) 中,这条指令
add rbx, 0xffffffff
导致warning: signed dword value exceeds bounds [-w+number-overflow]。我知道 64 位模式下的算术逻辑运算只接受 32 位常量,但 0xffffffff 仍然是 32 位宽。
为什么 nasm 发出警告,为什么它假设签持续的?它是否将 32 位 -1 符号扩展为 64 位 -1 (0xffffffffffffffff) 并因此看到溢出? 0x7fffffff 在没有警告的情况下工作。
我能以某种方式说服nasm 这不是有符号常量,而是无符号常量吗?
谢谢你的帮助!
【问题讨论】:
-
相关:why we can't move a 64-bit immediate value to memory? 回复:为什么它不能使用
imm64来编码您要求的0x00000000FFFFFFFF64 位值。