2015-12-02 134 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将被覆盖。

相关问题