gpt4 book ai didi

assembly - 64 位 x86 中 MOVZX r32、r/m16 和 MOVZX r64、r/m16 的区别

转载 作者:行者123 更新时间:2023-12-04 10:09:44 24 4
gpt4 key购买 nike

MOVZX r32, r/m16 和 MOVZX r64, r/m16 都有操作码 0F B7,但后者有一个 REX.W 前缀。是什么让这两个指令不同?无论如何,它们都不应该将目标操作数的高 32 位归零,因为根据

Intel 64 and IA-32 Architectures - Software Developer’s Manual, Volume 1, 3.4.1.1
: General-Purpose Registers in 64-Bit Mode.

以下声明成立:

32-bit operands generate a 32-bit result,
zero-extended to a 64-bit result in the destination general-purpose register.

最佳答案

这两条指令的作用没有区别,只是它们的编码方式不同。这与 XOR EAX、EAX 和 XOR RAX、RAX 做同样的事情没有什么不同,但前者短了一个字节。 (异或RAX,RAX也有不打破对Silvermont依赖的缺点,但这个区别不适用于MOVZX。)

甚至在 x86-64 之前,已经有多种方式对实际上相同的指令进行编码(例如 SUB EAX、EAX),寄存器上部的自动清零只是增加了更多内容。

关于assembly - 64 位 x86 中 MOVZX r32、r/m16 和 MOVZX r64、r/m16 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61390938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com