2016-11-21 22 views
1

私はメモリ内のレジスタが32ビットであることを理解しています。私はまた、LBは、レジスタの下位8ビットにメモリからコンテンツをロードすることを理解し、私はレジスタの次のバイトに書き込む

lb $t1, $a3 
lb $t1, 4($a3) 

を行った場合には、第2のLBコマンドが最初にロードされた内容を上書きすること。しかし、レジスタの2番目のバイトに書き込む方法はありますか(メモリ内の別の部分から読み込んで、2バイトずつではなく)、最初のバイトの情報を保持していますか?私はあなたがここに使いたいものを想定しています

答えて

0

は、あなたが例えば000000AAになりますレジスタのバイトAAをコピー(レジスタは符号拡張されないようにするためlbu(ロード・バイトの符号なし)とないlbで、いいえ。FFFFFFAA)。

あなたが最初に元のレジスタにそれを左の8ビットをシフト、その後、メモリからに別のレジスタのバイトをロードするためにlbuを使用して、adduできるレジスターの第2バイトに書き込みたい場合。例えば

lbu $t1, $a3  # 0x000000AA 
lbu $t2, 4($a3)  # 0x000000BB 
sll $t2, $t2, 8  # 0x000000BB -> 0x0000BB00 
addu $t1, $t1, $t2 # 0x000000AA + 0x0000BB00 = 0x0000BBAA 
関連する問題