-1
據我瞭解,imul
的輸出是edx:eax
,這意味着imul
應覆蓋edx
。然而,我剛碰到一個問題,其中imul在什麼情況下寫入edx?
imul eax, 10
未清除edx
。
在什麼情況下imul
寫信給edx
?我查了多個x86文檔網站,他們似乎都有衝突的信息。
據我瞭解,imul
的輸出是edx:eax
,這意味着imul
應覆蓋edx
。然而,我剛碰到一個問題,其中imul在什麼情況下寫入edx?
imul eax, 10
未清除edx
。
在什麼情況下imul
寫信給edx
?我查了多個x86文檔網站,他們似乎都有衝突的信息。
只有imul
指令的單操作數形式寫入EDX:EAX
對。兩個和三個操作數形式截斷結果。
如果你寫
mov ecx, 10
imul ecx
然後EAX
將由10相乘,並EDX
將被覆蓋。
你應該檢查的唯一東西是官方的intel指令集參考。它不衝突並且是權威的。 TL; DR:只有單一操作數版本隱式使用'edx':'eax'。 – Jester
如果不使用Intel參考,請參閱http://x86.renejeschke.de/上的第三方參考。對於386也是非常好的。它也表明只有單一操作數形式寫入EDX:EAX –