如果我只对 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)