2013-02-11 42 views
0

如果我只是对32位低位进行操作,ADD EAX,EBX是否将EAX的32位高位清零?在x64程序集中添加值

那么ADD RAX,EBX呢?可能吗?如果是,RAX的32位高位是否保留?

回答

3

ADD EAX, EBX的高32位RAXADD RAX, EBX不是有效的指令。

这听起来像你想在EBX中将32位值添加到RAX中的64位值。为此,首先要么零扩展(MOV EBX, EBX)或签名扩展(MOVSX RBX, EBX),然后将RBX添加到RAX。 (如果您正在将EBX中的值解释为未签名的符号扩展名(如果已签名),则使用零扩展名)。

2

是的,32位ADD零高位位。 ADD RAX, EBX是不可能的。您可以将前32位置零(例如MOV EBX, EBX),然后使用ADD RAX, RBX(注意这可能会更改RAX的前32位)