我很好奇为什么有些ARM指令(如MUL和ADD)不使用桶形移位器。我想知道限制背后的理性。谢谢!
答案 0 :(得分:11)
并不是桶式移位器不是使用;这是因为你无法指定如何它在所有但非常具体的指令(数据处理和加载/存储)中使用。如果您查看指令编码,您将看到没有空间来指定它。
对于MUL
或SWP
等指令,它们不在架构的第一个版本中。通过利用桶形移位器规范的其他无效值组合将它们挤压到指令集中。由于桶形移位器规范位必须重新用于存储诸如要执行的指令和用作乘法器的寄存器之类的东西,因此根本没有办法指定移位/旋转操作数的数量。
答案 1 :(得分:-4)
桶形移位器用于快速移位。
如果你知道如果你将一个数字与另一个数字乘以2的幂,那么你只需要将它向左移动。在这种特殊情况下,您可以使用移位寄存器。但通常乘法有效地遵循正常的乘法器设计。