-3
A + B(均爲32位)。 該函數將返回一個64位的值 我該怎麼辦?以64位組合返回兩個32位數的和
A + B(均爲32位)。 該函數將返回一個64位的值 我該怎麼辦?以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
或者用'adc edx,edx'保存一個字節,因爲它已經歸零了。儘管如此,難以閱讀來源。或者''setc dl'在Intel CPU上可能會更快(其中'adc'解碼爲兩個uops),但前提是您沒有立即使用edx(部分寄存器懲罰在haswell上)。 –
_What我必須做的_指定的架構,並顯示你得到了什麼。通常,將操作數擴展到64位並添加它們。 – Jester
這是我的問題。我如何將操作數擴展到64位?該體系結構是x86 – mystery
2 32位數字導致33位數字最壞的情況,只是從那裏擴展。 32位增加的進位標誌會告訴你如何將其他32位全部或全部置零。這可能是擊敗了我打賭導致加入,然後加上隨身攜帶的練習... –