【发布时间】:2020-04-23 15:25:56
【问题描述】:
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.
【问题讨论】:
-
我想这是“REX.W 前缀在这里是合法的,但实际上并没有任何作用”的交易之一。
标签: assembly x86 64-bit x86-64