2011-09-30 75 views
6

我很好奇为什么有一些ARM的instuctions(如MUL和QADD)不使用桶式移位器。我想知道极限背后的理性。谢谢!为什么有些ARM指令不使用桶式移位器?

+0

桶形移位器移位。它不会增加或增加。 –

+3

我认为这个问题更像“为什么我不能使用桶移值作为MUL或QADD的最后一个参数?”原因可能是硅片(没有足够的晶体管来实现),它可能是编码(在指令中没有空间来对编码进行编码),这可能是它会减慢指令太多,它可能只是负100点规则。只有ARM设计师肯定知道。在这里询问不太可能得出答案。 –

+0

我已经在他们的论坛上发布了这个问题。 :) – chenwj

回答

11

这不是说桶形移位器不是使用;这是你无法指定如何它被用于除了非常具体的指令(数据处理和加载/存储)之外。如果你看看指令编码,你会发现没有空间去指定它。

在指令如MULSWP的情况下,它们不在该体系结构的第一个版本中。通过使用桶形移位器规格的其他值的无效组合,他们被挤入指令集。由于桶式移位器规格位必须重新用于存储诸如要执行的指令和用作乘法器的寄存器之类的东西,因此根本没有办法指定移位/旋转操作数的次数。

-3

桶式换档器用于快速换档。

正如你所知道的,如果你用另一个数字乘以一个数字,那么你只需要将它左移。在这种特殊情况下,您可以使用移位寄存器。但一般来说,乘法运算符合正常的乘法器设计。