我很好奇为什么有一些ARM的instuctions(如MUL和QADD)不使用桶式移位器。我想知道极限背后的理性。谢谢!为什么有些ARM指令不使用桶式移位器?
6
A
回答
11
这不是说桶形移位器不是使用;这是你无法指定如何它被用于除了非常具体的指令(数据处理和加载/存储)之外。如果你看看指令编码,你会发现没有空间去指定它。
在指令如MUL
或SWP
的情况下,它们不在该体系结构的第一个版本中。通过使用桶形移位器规格的其他值的无效组合,他们被挤入指令集。由于桶式移位器规格位必须重新用于存储诸如要执行的指令和用作乘法器的寄存器之类的东西,因此根本没有办法指定移位/旋转操作数的次数。
-3
桶式换档器用于快速换档。
正如你所知道的,如果你用另一个数字乘以一个数字,那么你只需要将它左移。在这种特殊情况下,您可以使用移位寄存器。但一般来说,乘法运算符合正常的乘法器设计。
相关问题
- 1. ARM 32位指令STR
- 2. ARM模式,为什么有这么多?
- 3. 这些ARM汇编指令做了什么?
- 4. 什么是ORRr指令在ARM
- 5. 为什么有些议会指令不记录
- 6. 将ARM指令转换为i386指令
- 7. 为什么有些服务器不能运行SED命令?
- 8. 为什么位移?
- 9. 这些编译器指令有什么区别?
- 10. 为什么fgetc向后移动文件位置指示器?
- 11. 如何使用STC指令在ARM
- 12. 为什么指令有范围?
- 13. 为什么HTML中没有'include'指令?
- 14. 为什么指令不会调用我的控制器方法?
- 15. 为什么指令不会设置类?
- 16. 为什么使用编程方式添加角度指令时不起作用
- 17. ARM IT条件指令汇编器(armcc)
- 18. 为什么〜0 >> 1不移位?
- 19. 为什么在ARM处理器上,PC仍然处于Thumb模式的32位?
- 20. “cqo”,“cdq”和“cwd”x86_64指令。为什么不使用cqo?
- 21. 为什么SIMD指令不在内核中使用?
- 22. 为什么ARM有64KB大页面?
- 23. 为什么Scala stdlib中没有ARM?
- 24. 为什么JDK使用移位而不是乘/除?
- 25. 为什么不能在指令Angular JS中使用两种绑定方式?
- 26. 与ARM LDR指令相关的#值是什么意思?
- 27. 什么是ARM的umlal指令的Neon等效物?
- 28. 为什么有人会使用#if 1 C预处理器指令?
- 29. 为什么这些shared_ptrs不指向同一个容器?
- 30. 什么是最好的方式,从以“转移”指令,并使用AngularJs
桶形移位器移位。它不会增加或增加。 –
我认为这个问题更像“为什么我不能使用桶移值作为MUL或QADD的最后一个参数?”原因可能是硅片(没有足够的晶体管来实现),它可能是编码(在指令中没有空间来对编码进行编码),这可能是它会减慢指令太多,它可能只是负100点规则。只有ARM设计师肯定知道。在这里询问不太可能得出答案。 –
我已经在他们的论坛上发布了这个问题。 :) – chenwj