Google の助けを借りて教科書を手にしても、これらの概念を理解できないようです。
フォーマット(opcode、rs、rt、offset)に従って...
- アドレスの値に追加する前に、オフセットを符号拡張しますか? それとも拡張する前に追加しますか?
- lbとlbuの場合、違いは何ですか? また、「符号なし」はオーバーフローを報告しないことを意味するという MIPS 算術定義にも従っていますか?
- lwに署名されていないバージョンがないのはなぜですか? お店の説明書にも記載がない…
Google の助けを借りて教科書を手にしても、これらの概念を理解できないようです。
フォーマット(opcode、rs、rt、offset)に従って...
lb
との場合lbu
、違いは何ですか?
「ロード バイト」命令はlb
、lbu
1 バイトを 32 ビット レジスタの右端のバイトにロードします。上位 24 ビットをどのように設定しますか? 符号なし操作はそれらをゼロに設定します。符号付き操作は、ロードされたバイトを符号拡張します。
たとえば、0xFF
メモリからバイトを読み取るとします。 lbu
はこの値を に 0 拡張0x000000FF
して 255 と解釈しますが、lb
は に符号拡張し0xFFFFFFFF
、-1 と解釈します。
lw
署名されていないバージョンがないのはなぜですか? お店の説明書にも記載がない…
一方、 「ロード ワード」命令 ( lw
) は、32 ビット量を 32 ビット レジスタにロードするため、あいまいさがなく、特別な符号付きバージョンを用意する必要もありません。
完全な 32 ビット ワード未満を格納する場合、レジスタ内の余分なビットを破棄する (無視する) 以外にできることはありません。
また、「符号なし」はオーバーフローを報告しないことを意味するという MIPS 算術定義にも従っていますか?
この規則は、加算命令と減算命令のみに適用されると思います。その他の命令については、signed/unsigned で符号拡張を行うかどうかを示します。
アドレスの値に追加する前に、オフセットを符号拡張しますか? それとも拡張する前に追加しますか?
オフセットが符号拡張されている場合、それをベース アドレスに追加する前にそれを行うのは理にかなっています。2 の補数演算の復習でこれが明確になると思います。