【发布时间】:2019-06-12 15:16:20
【问题描述】:
我一直在玩 intel mpx,发现它添加了一些我无法理解的指令。例如(intel 格式):
movsxd rdx,edx
我找到了this,它谈到了类似的指令 - MOVSX。
从那个问题来看,我对这条指令的解释是,它需要双字节(这就是为什么在 movsxd 中有一个 d)并将其复制到 rdx 寄存器中(在两个最低有效字节中)和用那个双字节的符号填充其余部分。
我的解释是否正确(我认为我错了)?如果不能,请告诉我这是怎么回事?
【问题讨论】:
-
是的。这只是从 32 位到 64 位的有符号转换。
-
顺便说一句,
d当然不是“双字节”,它是双 字。此外,我猜您知道edx是rdx的低32 位,因此在这种情况下不会发生复制,这些位会保留在原处。只有前 32 位用符号填充。另请参阅官方 intel 指令集参考文档,以及众所周知的online conversion。 -
是的,在您发表第一条评论后,这对我来说非常有意义,我意识到我的错误。非常感谢您的回答和链接。
-
遇到未知指令时务必检查指令集参考。
-
谢谢@fuz,我会记住的