[解決済み] MIPSのオペコードにおけるlaとliの違いは何ですか?
質問
例えば、このコードでは:
#display message
li $v0, 4
la $a0, Message
#promt user to enter name
li $v0, 8
la $10, username
li $a1, 20
syscall
#display the name
li $v0, 4
la $a0, userName
syscall
について、非常に混乱しています。
li
(ロードイミディエイト)と
la
(ロードアドレス)の本当の意味。
どのように解決するのですか?
どちらも即時値を読み込むために(ほとんど)使用されるため、かなり似ています。また、どちらも 擬似インストラクション そのため、どのように機能させるかは、サポートしている各アセンブラに委ねられます。
li
はロードイミディエイトの略で、最大32ビットまでのイミディエイトをロードする便利な方法です。以下のような命令です。
addi
と
ori
は16ビットの即値しかエンコードできないので、アセンブラが
li
を複数の命令に変換します。
例えば
li $t0,0x12345678
になるかもしれません。
lui $at, 0x1234
ori $t0, $at, 0x5678
つまり、2つの命令を書く手間を省いて、代わりにアセンブラがそれをやってくれるようにしたわけです。
例えば、以下のような理由があるわけではありません。
li $t0, Message
ラベルも即値なので、サポートされませんが、アセンブラによっては
li
.
la
はロードアドレスの略です。整数の定数を読み込むには、次のように使用します。
li
を使用します。
la $t0,0x1234678
. しかし、それはラベルでも機能します。
la $t0, Message # t0 = address of Message
.
アセンブラによっては、次のようなことも可能です。
la $t0, 8($t1) # t0 = t1 + 8
.
を使用する場合
li
を使用する場合と
la
はコンテキストに依存します。もし読み込む値がアドレスとして使われるのであれば、通常は
la
を使ってロードし、そうでない場合は通常
li
. これらは部分的に交換可能なので、実際にはあなた次第ですが、もしあなたが
la
は整数定数を読み込むために常に使用します。
関連
-
[解決済み】lc3 LDR命令と格納される値について
-
[解決済み] MIPSでディブディブ
-
[解決済み] 018Hと0cHは、アセンブリでは何の略ですか?具体的には「cH」と「0」「h」のプリフィックス/ポストフィックス
-
[解決済み] アセンブリMIPS .ALIGNとメモリアドレスの理解
-
[解決済み] MIPSのオペコードにおけるlaとliの違いは何ですか?
-
[解決済み] なぜGCCはa*a*a*a*aを(a*a*a)*(a*a*a)に最適化しないのでしょうか?
-
[解決済み] Collatz予想の検証を行うC++のコードは、なぜ手書きのアセンブリよりも高速に動作するのでしょうか?
-
[解決済み] 1サイクルあたり4FLOPの理論上の最大値を達成するにはどうすればよいですか?
-
[解決済み] 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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ミップスアセンブリの文字列の長さ
-
[解決済み] なぜ、addiではなくaddiuを使うのか?
-
[解決済み] Binary Bomb Phase_6 Node Order?
-
[解決済み] x86 8086 アセンブリで 0-9 の範囲の乱数を生成する。
-
[解決済み] アセンブリで負の数を計算する方法
-
[解決済み] linuxのsys_readシステムコールを作ると、レジスタeaxに何が入るのでしょうか?
-
[解決済み] MIPSアセンブリ言語では、なぜ.globl mainを使うのですか?
-
[解決済み] x86アセンブリの角括弧の意味は何ですか?
-
[解決済み] アセンブルmov命令
-
[解決済み] movqアセンブリ機能