如果我只对 32 个低位进行操作,ADD EAX、EBX 是否会将 EAX 的 32 个高位归零?
那么 ADD RAX、EBX 呢?可能吗?如果是,是否保留了 RAX 的 32 个高位?
ADD EAX, EBX
将RAX的高 32 位归零。 ADD RAX, EBX
不是有效的指令。
听起来您想将 32 位值添加EBX
到RAX
. 为此,首先将零扩展 ( MOV EBX, EBX
) 或符号扩展 ( MOVSX RBX, EBX
),然后添加RBX
到RAX
. EBX
(如果您将值解释为无符号,则使用零扩展,如果它是有符号的,则使用符号扩展)。
是的,32 位ADD
零高位。ADD RAX, EBX
不可能。您可以将前 32 位清零(例如 by MOV EBX, EBX
)然后使用ADD RAX, RBX
(注意这可能会更改 的前 32 位RAX
)