MULやQADDのようなARMインストラクションがバレルシフタを使用していない理由が不思議です。私は限界の背後にある合理的なことを知りたい。ありがとう!一部のARM命令ではバレルシフタを使用しないのはなぜですか?
6
A
答えて
11
バレルシフターはではありません。です。それはあなたがどのようにそれ以外のすべての非常に具体的な指示(データ処理とロード/ストア)で使用されているを指定することができないということです。命令のエンコーディングを見ると、指定する余地がないことがわかります。
MUL
またはSWP
のような命令の場合、それらはアーキテクチャの最初のバージョンにはありませんでした。それらは、バレルシフタの仕様に対して無効な組合せの値を使用することによって、命令セットに圧迫された。バレルシフタの仕様ビットは、実行する命令や乗算器として使用するレジスタを格納するために再利用する必要があったため、オペランドのシフト/回転量を指定する方法はありませんでした。
-3
バレルシフターは、高速シフトに使用されます。
あなたが知っているように、数字を2の累乗である別の数字と掛け合わせると、それを左にシフトするだけです。この種の特殊な状況では、シフトレジスタを使用することができます。しかし、一般的な乗算では、通常の乗数の設計に従うのが効率的です。
関連する問題
- 1. ARMのプリフェッチ命令
- 2. インラインアセンブリを使用しないgccでのSSE命令の使用
- 3. Atmel 89C2051マイクロコントローラで "acall"命令が動作しないのはなぜですか?
- 4. Gem5でのARMプロセッサの命令アクセス
- 5. ARM/Thumb(IOS)でのBLX命令のデコード
- 6. Python on Arm、不正命令
- 7. Valgrindは認識できない命令
- 8. VS2010 SP1はAVX命令セットの一部のみをサポートしていますか?
- 9. 逆アセンブルされたデータが命令になるのはなぜですか?
- 10. メモリにアクセスしないメモリオペランドを持つx86の唯一の命令ですか?
- 11. コンパイラがプッシュ/ポップ命令のペアを生成するのはなぜですか?
- 12. x86のnopl命令がオペランドを取得するのはなぜですか?
- 13. ARM Thumb命令セットを使用する場合、32ビット整数にアクセス(ロード/ストア)するのはアトミックですか?
- 14. ARM命令SWIとSVCはまったく同じものですか?
- 15. Apple ASとARM/Thumb ADDS命令
- 16. Tileraマイクロプロセッサはどんな命令セットを使用していますか?
- 17. 次のARM命令セットはストールを生成しますか? ARM11MP VFPUプログラミング
- 18. スカラのバイトコードで不要なロード命令とストア命令
- 19. 「不良命令」エラーが発生するのはなぜですか?
- 20. STL命名規則を使用しているのはなぜですか?
- 21. device.multitaskingSupportedが一部のデバイスで動作しないのはなぜですか?
- 22. 次のコードは、Javaバイトコードの新しい+ dup命令に変換されるのはなぜですか?
- 23. SSE命令はどのように使用できますか?
- 24. 一部のアップロードプラグインでFlashが使用されるのはなぜですか?
- 25. javascriptがプロジェクトアーキテクチャの一部ではないのはなぜですか?
- 26. メソッドString.indexOfがインタフェースCharSequenceの一部ではないのはなぜですか?
- 27. $ .namespace()がコアjQuery実装の一部ではないのはなぜですか?
- 28. Wordpressデータベーススキーマが外部キーを使用しないのはなぜですか?
- 29. 異なるARM製造元が異なる命令セットを提供していますか?
- 30. syscallはx86_64の命令ですか?
バレルシフタがシフトします。それは加算も乗算もしません。 –
MULやQADDの最後の引数としてバレルシフトされた値を使用できないのはなぜですか?理由はシリコン(実装するのに十分なトランジスタではない)、エンコーディング(シフトをエンコードする命令に余裕がない)、命令をあまり遅くする可能性があります。マイナス100ポイントのルール。 ARMの設計者だけが確実に知っています。ここでは答えを出すことはまずありません。 –
すでにフォーラムに質問を投稿しています。 :) – chenwj