14

Google の助けを借りて教科書を手にしても、これらの概念を理解できないようです。

フォーマット(opcode、rs、rt、offset)に従って...

  • アドレスの値に追加する前に、オフセットを符号拡張しますか? それとも拡張する前に追加しますか?
  • lblbuの場合、違いは何ですか? また、「符号なし」はオーバーフローを報告しないことを意味するという MIPS 算術定義にも従っていますか?
  • lwに署名されていないバージョンがないのはなぜですか? お店の説明書にも記載がない…
4

1 に答える 1

38

lbとの場合lbu、違いは何ですか?

「ロード バイト」命令はlblbu1 バイトを 32 ビット レジスタの右端のバイトにロードします。上位 24 ビットをどのように設定しますか? 符号なし操作はそれらをゼロに設定します。符号付き操作は、ロードされたバイトを符号拡張します。

たとえば、0xFFメモリからバイトを読み取るとします。 lbuはこの値を に 0 拡張0x000000FFして 255 と解釈しますが、lbは に符号拡張し0xFFFFFFFF、-1 と解釈します。

lw署名されていないバージョンがないのはなぜですか? お店の説明書にも記載がない…

一方、 「ロード ワード」命令 ( lw) は、32 ビット量を 32 ビット レジスタにロードするため、あいまいさがなく、特別な符号付きバージョンを用意する必要もありません。

完全な 32 ビット ワード未満を格納する場合、レジスタ内の余分なビットを破棄する (無視する) 以外にできることはありません。

また、「符号なし」はオーバーフローを報告しないことを意味するという MIPS 算術定義にも従っていますか?

この規則は、加算命令と減算命令のみに適用されると思います。その他の命令については、signed/unsigned で符号拡張を行うかどうかを示します。

アドレスの値に追加する前に、オフセットを符号拡張しますか? それとも拡張する前に追加しますか?

オフセットが符号拡張されている場合、それをベース アドレスに追加する前にそれを行うのは理にかなっています。2 の補数演算の復習でこれが明確になると思います。

于 2011-08-29T05:24:05.747 に答える