[解決済み] MIPSのコードのこの部分で、oriはどのように使われているのですか?
2022-02-13 21:27:53
質問内容
ここで、"ori"の使い方を誰か説明してください。ビット単位のORであることは知っていますが、それがどのように機能するのか、なぜここでそれが必要なのかが分かりません。
#objective of the program is to add 5 and 7
.data #variable declaration follow this line
.text #instructions follow this line
main:
ori $s0, $zero, 0x5
ori $s1, $zero, 0x7
add $t0, $s0, $s1
li $v0,10 # required for only QtSPIM
syscall # required for only QtSPIM
#end of program
解決方法は?
ori $s0, $zero, 0x5
ori $s1, $zero, 0x7
2つの命令は、0x05の定数をレジスタ$s0に、0x07をレジスタ$s1にロードします。
MIPSには、定数を直接レジスタにロードする命令がありません。そこで、オペランドを0にして即値の論理ORで代用します。これは、moveと同じ効果があります。この2行をc-styleコードに変換すると次のようになります。
$s0 = 0 | 0x05;
$s1 = 0 | 0x07;
を使うこともできます。
addi $s0, $zero, 0x5
addi $s1, $zero, 0x7
これは同じことですが、論理的なorの代わりにaddを使用しています。コードに置き換えると、次のようになります。
$s0 = 0 + 0x05;
$s1 = 0 + 0x07;
関連
-
[解決済み] アセンブリ - CMP後のJG/JNLE/JL/JNGE
-
[解決済み] アセンブリで数字をASCIIに変換する
-
[解決済み] .quadディレクティブはアセンブリでどのように機能するのですか?
-
[解決済み] ビットシフト演算子を使って10進数を2進数で表示するMIPS
-
[解決済み] アセンブリのNEG
-
[解決済み] アセンブリ言語 新規ライン
-
[解決済み] x86アセンブリで160x100モードを実現する
-
[解決済み] アセンブリで文字列の長さを表示する方法
-
[解決済み] アセンブリ言語 - sarqはコードの中で何をするのですか?
-
[解決済み] Collatz予想の検証を行うC++のコードは、なぜ手書きのアセンブリよりも高速に動作するのでしょうか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】MARIEアセンブリ言語で`Skipcond`はどのように動作しますか?
-
[解決済み] 着信側セーブレジスタ、発信側セーブレジスタとは何ですか?
-
[解決済み] ARMのアセンブリ言語でbx lrは何をするのですか?
-
[解決済み] MIPS浮動小数点:SWC1対S.S.
-
[解決済み] エラー: `push' の命令サフィックスが無効です [重複].
-
[解決済み] テストのポイント %eax %eax [重複]。
-
[解決済み] ベースレジスタを持たないqword ptr [hexvalue]の意味するところ
-
[解決済み] アセンブリ言語 jeジャンプ機能
-
[解決済み] ワードptrとは何ですか?
-
[解決済み] インテルアセンブリの%ripレジスタを理解する