Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
私は C コードを MIPS アセンブリ言語に変換する練習をしていましたが、変数代入におけるmoveとの使用法を理解するのに苦労しています。li
move
li
たとえば、MIPS で次の C 行を実装するには:
int x = 0;
私がそれを正しく理解していれば (しかし、私はこれを非常に疑っています)、MIPS アセンブラーでこれらの両方が機能するように見えます:
move $s0, $zero li $s0, $zero
私が間違っている?これらの2つの行の違いは何ですか?
このmove命令は、あるレジスタから別のレジスタに値をコピーします。このli命令は、特定の数値をそのレジスタにロードします。
ゼロの特定のケースでは、定数ゼロまたはゼロレジスタのいずれかを使用してそれを取得できます。
move $s0, $zero li $s0, 0
ただし、ゼロ以外の値を生成するレジスタはないためli、次のような他の数値が必要な場合は使用する必要があります。
li $s0, 12345678