[解決済み] MIPS srlを変数で指定
2022-02-10 01:32:47
質問事項
いろいろと検索してみたのですが、なかなか答えが見つかりません。おそらく、どのように表現したらいいのかよく分からないからだと思います。
次のようなコードであれば
for (i = 0; i < 10; i++) {
x = y >> i
...
}
y >> i 命令を別のループを使わずに実装する方法はありますか?
うまくいかないと思いますが、iの値が$s1に格納されていたとすると、次のようなことをします。
srl $t3, $s5, $s1
というのは、$t3 に $s5 の値をセットして、このステートメントを何度もループさせなければならないからです。
srl $t3, $t3, 1
ご理解いただけたでしょうか?
基本的には、forループで毎回y * 2^-iが必要です。
何か参考になることがあれば、あるいは、これは重複した質問だから、それを恥ずかしげもなく読んで答えが出るというようなベリテーションでもいいので、よろしくお願いします。
解決方法は?
その MIPS32™ アーキテクチャ プログラマ向け 第2巻:MIPS32™命令セット には、以下のシフト命令が記載されています。
-
SLL
シフトワード左ロジカル -
SLLV
Shift Word Left 論理変数 -
SRA
右シフト算術演算 -
SRAV
右シフト算術変数 -
SRL
右シフトロジック -
SRLV
Shift Word Right Logical Variable(論理変数
を持つものが注目されます。 可変 を名前に持ち、以下のように動作します。
SLLV rd, rt, rs : rd ← rt << rs
SRAV rd, rt, rs : rd ← rt >> rs (arithmetic)
SRLV rd, rt, rs : rd ← rt >> rs (logical)
の下位5ビットのみです。
rs
を使用するため、0~31の範囲でシフト量を指定できます。
関連
-
[解決済み】アセンブリJLEのjmp命令例
-
[解決済み] ARMのアセンブリ言語でbx lrは何をするのですか?
-
[解決済み] アセンブリ言語 - Moduloはどのように行うのですか?
-
[解決済み] エラーです。操作サイズが指定されていません - NASm
-
[解決済み] 8086アセンブリ言語での2つのレジスタのスワッピング(16ビット)
-
[解決済み] アセンブリのNEG
-
[解決済み] error: invalid effective address エラー:有効なアドレスがありません。
-
[解決済み] SRLとSRAの違いは何ですか?[重複しています]。
-
[解決済み] CS:IPの組み立ての意味と仕組みについて教えてください。
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] MIPs Assemblyでsllなどを使ってビットをずらすのはなぜですか?
-
[解決済み] callq命令とは何ですか?
-
[解決済み] popまたはadd esp、4 ? その差は何ですか?
-
[解決済み] x86-64におけるmovqとmovabsqの違いについて
-
[解決済み] アセンブリのNEG
-
[解決済み] BL命令ARM - その仕組み
-
[解決済み] アセンブリ言語 新規ライン
-
[解決済み] cmovlオペコードの中で何と何が比較されるのですか?
-
[解決済み] linuxのsys_readシステムコールを作ると、レジスタeaxに何が入るのでしょうか?
-
[解決済み] ARMv8でリテラル0ではなく、xzrレジスタを使用するのはなぜですか?