以64位组合返回两个32位数的和
答
假设在edx
栈和结果上输入:eax
按照正常的惯例:
xor edx, edx ; high dword
mov eax, [esp + 4] ; 1st arg
add eax, [esp + 8] ; add 2nd arg
adc edx, 0 ; handle carry
ret
+0
或者用'adc edx,edx'保存一个字节,因为它已经归零了。尽管如此,难以阅读来源。或者''setc dl'在Intel CPU上可能会更快(其中'adc'解码为两个uops),但前提是您没有立即使用edx(部分寄存器惩罚在haswell上)。 –
_What我必须做的_指定的架构,并显示你得到了什么。通常,将操作数扩展到64位并添加它们。 – Jester
这是我的问题。我如何将操作数扩展到64位?该体系结构是x86 – mystery
2 32位数字导致33位数字最坏的情况,只是从那里扩展。 32位增加的进位标志会告诉你如何将其他32位全部或全部置零。这可能是击败了我打赌导致加入,然后加上随身携带的练习... –