2016-04-07 7 views
-2

オフセットが 'load word's'プログラムカウンタから1行(4バイト)離れた命令をフェッチしてレジスタ$ s0,4($ t0)にフェッチして格納するかどうかは不明です。これはどのようにメモリ内で機能しますか?可能であれば、例を提供してください。

+3

これもまた、プログラマ向けの_MIPS32アーキテクチャで説明されています。 第2巻:MIPS32™命令セット(ルックアップ参照)。 – Michael

+1

本当にオフトピックにする必要があります、 "シンプルなGoogleの検索は、質問に答えます。 –

+1

[http://stackoverflow.com/questions/36467299/how-do-i-translate-an-immediateregister-into-machine-code]のように、命令セットマニュアルはあなたに教えてくれるでしょう – Tommylee2k

答えて

1

LWとSWの機能は、MIPS命令セットで読むことができます。

しかし、すばやくするために、私はここでも答えを提供します。 LWはWordの読み込みを表します。この値が格納されているアドレスから32ビットワード値をターゲットレジスタ(rt)にロードします。

LW rt, offset(base) 

のは、簡単な例を作ってみましょう:

LUI T0, 0x8033 
LW T1, 0x2550(T0) 

上記のコードは、現在のアドレスに位置する32ビットのワード値をロードする:LUIの値が上限である

0x80332550 

をアドレスの半分であり、与えられたオフセット0x2550は下半分である。現在、MIPSは単に0x80332550から32ビット値をロードします。

のは0x80332550は次の値が含まれているとしましょう:

0x80332550: 25 66 99 88 77 14 22 66 

LW命令の後、T1は、現在値0x25669988が含まれます。 (ビッグエンディアンの場合、リトルエンディアンでは0x88996625になります)

SWはLWのようにほぼ同じですが、ロードする代わりに32ビットの値を指定のアドレスに格納するだけです。この場合、rtレジスタは値保持者として機能します。

+1

いくつかのニックピッキング: '$ t0'はベース、0x2555は_offset_です。そして、0x80332555は、ワードで整列されていないので、ワードをロードするための有効なアドレスではありません。 – Michael

+0

@Michael Woops。これを修正しました。 – Tetragrammaton

+1

* MIPSは、0x8033と0x2550がリンクされていることを認識しています*は奇妙な言葉遣いです。それはもっとそうです、MIPSはそれが言ったことを行い、これは私たちが望む振る舞いを得るための一つの方法です。 MIPSは何も認識する必要はなく、数学をするだけです。 –

関連する問題