Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly imul在哪些情况下向edx写信?_Assembly_X86 - Fatal编程技术网

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