此问题已在此处有答案:
NASM Intel 64-bit mode: why does 32-bit constant 0xffffffff cause "warning: signed dword value exceeds bounds"(1个答案)
4天前关闭。
我对64位模式下的AND指令有疑问。我有这本手册告诉我,与32位立即数是要签署扩展到64位。但我不能这么做
and rax,0x80000000
字符串
我认为这是荒谬的,因为0x800000是一个完美的DWORD操作数。我最高能做到的就是
and rax,0x7fffffff
型
这是怎么回事我不能使用MSB=1对操作数进行符号扩展?如果是这样的话,那么在不能像在0x80000000中那样使用操作数的情况下,如何对操作数进行符号扩展呢?
谢谢你的回复。
1条答案
按热度按时间wnrlj8wa1#
“通过阻止人们做蠢事,你可能会阻止他们做聪明的事”:出于尊重和谦卑的态度;你不知道所有的答案,所以不要像Jester在评论中指出的那样强加随机的愚蠢。
fwiw、gcc / gnu的理解是:
字符串
clang,虔诚地灌输,坚持:
型
现在,快点,F够了吗?这是否有助于可读性?如果你不理解符号扩展,你又能理解多少汇编呢?