英特尔指令集:与EAX,EBX,ECX或EDX倍增?(Intel instruction set:

2019-10-18 10:25发布

你怎么想知道,当被执行“MUL ECX”。 ECX将与EAX相乘? 而不是与EBX或EDX?

mul ecx, eax

会更有意义,但。

Answer 1:

该指令集被简单地定义这种方式。

英特尔可以通过其他方式,包括将允许你完整地指定了输入和输出寄存器的方式定义它,但他们没有。

借口可以说,在不同的乘法指令添加到指令集的CPU时间(8086葡萄酒,我认为),即现有的指令没有任何明显的地方把乘法它可以共享通用解码可用于其他指令(例如,MOV,增加,XOR等),那有没有很多可用的晶体管做花哨的解码方案,使一些其他的方式来编码一般的操作数,而这是任何可用的晶体管是更好的方案专用于乘法/除法逻辑。

最后,需要往往得低于一般指令(MOV,加,异或)等的操作数移动到位的努力乘法指令/从固定的地方结果不会导致大量的代码膨胀或影响性能的多。 设计师没有找到一种方法,包括源操作数。 你应该考虑一下幸运的它不是简单的定义为乘以EAX和EDX生产EDX:EAX,这是许多早期的计算机架构中使用的一个由来已久的计划。 而需求并没有多大改变为自x86指令集整数倍。

浮点/矢量运算是一个完全不同的问题。



文章来源: Intel instruction set: multiply with EAX, EBX, ECX or EDX?