- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法找出 movslq
指令的作用。谷歌不是很有帮助,并且this list上没有这样的说明。 。 Here我读过
MOVSLQ is move and sign-extend a value from a 32-bit source to a 64-bit destination.
我是这样理解的。该指令将值从 32 位源移动到 64 位目标,但确保 64 位目标中的数字的有符号值等于源中的数字,即在负数的情况下,它会填充 64 位目标中的前 32 位目的地为 1,否则为 0。
我的理解正确吗?如果不是,请解释我错在哪里。
编辑:
这不是此主题的重复项:assembly cltq and movslq difference 。我的问题没有任何解释。您必须花 10 分钟阅读整个答案才能说服自己。
最佳答案
这是movsxd
:https://www.felixcloutier.com/x86/MOVSX:MOVSXD.html .
您可以通过使用 AT&T 汇编器对其进行汇编并使用 Intel 语法反汇编器进行反汇编来自行解决这一问题。 (例如objdumpd -d -Mintel foo.o
)
是的,它支持 32->64 位 2's complement sign extension ,通过将源的符号位复制到所有新的高位来扩展。 (即dst[63:32] = src[31]
和dst[31:0] = src[31:0]
。)
有趣的事实:可以在没有 REX.W 前缀的情况下将其用作 32 位副本,在架构上与 mov
等效,但优势永远为零这样做。或者甚至使用操作数大小前缀作为 16 位副本,但这完全没有意义,请使用 mov
。
相关:What does cltq do in assembly?有一个针对所有 x86 符号扩展指令的 AT&T 与 Intel 助记符的等效表以及说明。 ([ER]AX 到 DX:AX、within-[ER]AX 和 movsx/movzx 到任意寄存器。)
assembly cltq and movslq difference有关 AMD64 如何重新利用 16/32 位模式下的 ARPL 操作码以获得 movsxd
的 1 字节操作码的更多历史记录。
关于assembly - movslq 是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55584797/
我无法找出 movslq 指令的作用。谷歌不是很有帮助,并且this list上没有这样的说明。 。 Here我读过 MOVSLQ is move and sign-extend a value fr
我是一名优秀的程序员,十分优秀!