2015-12-02 71 views
-1

據我瞭解,imul的輸出是edx:eax,這意味着imul應覆蓋edx。然而,我剛碰到一個問題,其中imul在什麼情況下寫入edx?

imul eax, 10 

未清除edx

在什麼情況下imul寫信給edx?我查了多個x86文檔網站,他們似乎都有衝突的信息。

+0

你應該檢查的唯一東西是官方的intel指令集參考。它不衝突並且是權威的。 TL; DR:只有單一操作數版本隱式使用'edx':'eax'。 – Jester

+1

如果不使用Intel參考,請參閱http://x86.renejeschke.de/上的第三方參考。對於386也是非常好的。它也表明只有單一操作數形式寫入EDX:EAX –

回答

4

只有imul指令的單操作數形式寫入EDX:EAX對。兩個和三個操作數形式截斷結果。

如果你寫

mov ecx, 10 
imul ecx 

然後EAX將由10相乘,並EDX將被覆蓋。

相關問題