Assembly imul在哪些情况下向edx写信?
据我所知,Assembly imul在哪些情况下向edx写信?,assembly,x86,Assembly,X86,据我所知,imul的输出是edx:eax,这意味着imul应该覆盖edx。然而,我刚刚遇到了一个问题 imul eax, 10 未清除edx 在什么情况下,imul写入edx?我检查了多个x86文档站点,它们似乎都有冲突的信息。只有imul指令的单操作数形式写入EDX:EAX对。两个和三个操作数形式截断结果 如果你写 mov ecx, 10 imul ecx 然后,EAX将乘以10,而EDX将被覆盖。您唯一应该检查的是英特尔官方指令集参考。它不冲突,具有权威性。TL;DR:只有单操作数版本隐
imul
的输出是edx:eax
,这意味着imul
应该覆盖edx
。然而,我刚刚遇到了一个问题
imul eax, 10
未清除edx
在什么情况下,imul
写入edx
?我检查了多个x86文档站点,它们似乎都有冲突的信息。只有imul
指令的单操作数形式写入EDX:EAX
对。两个和三个操作数形式截断结果
如果你写
mov ecx, 10
imul ecx
然后,EAX
将乘以10,而EDX
将被覆盖。您唯一应该检查的是英特尔官方指令集参考。它不冲突,具有权威性。TL;DR:只有单操作数版本隐式使用edx
:eax
。如果不使用Intel引用,则第三方引用位于。对386也很好。它还显示只有单操作数形式写入EDX:EAX