为什么有些ARM指令不使用桶形移位器?

che*_*nwj 6 arm

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

Gab*_*abe 11

并不是没有使用桶形移位器; 那就是你不能指定如何它,但在所有非常具体的指示(数据处理和加载/存储)使用.如果您查看指令编码,您将看到没有空间来指定它.

对于类似MUL或的指令SWP,它们不在架构的第一个版本中.通过利用桶形移位器规范的其他无效值组合将它们挤压到指​​令集中.由于桶形移位器规范位必须重新用于存储诸如要执行的指令和用作乘法器的寄存器之类的东西,因此根本没有办法指定移位/旋转操作数的程度.