[解決済み] lb命令は具体的に何をするのですか?
2022-03-15 06:49:38
質問
もうすぐ試験ですが、練習問題のひとつに
と仮定します。
$t0
は値を含んでいます。0x12121212
と$t1
には アドレス0x1000000
.アドレスから始まるメモリデータがあるとします。
0x1000000
である。88 77 66 55
.の値はどうなるのでしょうか?
$t0
を実行した後、次のコードを実行します。lb $t0, 0($t1)
a)
0x00000088
b)0x88121212
c)0xffffff88
d)0x12121288
私が出した答えは
a
というバイトがあるためです。
lb
この命令で読み取られるのは(私の理解では)88です。そして、この88は
$t0
したがって、その値は
0x00000088
. しかし、与えられた答えは
c
. ということについて、根本的な誤解をしているような気がします。
lb
が動作する理由を誰か説明してください。
c
?
解決方法は?
答えは
c) 0xffffff88
. その
lb
命令は、バイトを32ビットの値に符号拡張します。つまり、最上位ビット(msb)が上位24ビットにコピーされます。
0x88 == 0b10001000 つまり msb は 1 ですので、上位 24 ビットは 0b1111111111111111 == 0xffffff となります。
関連
-
[解決済み] callq命令とは何ですか?
-
[解決済み] popまたはadd esp、4 ? その差は何ですか?
-
[解決済み] アセンブリ言語で数字をプリントアウトする?
-
[解決済み] linuxのsys_readシステムコールを作ると、レジスタeaxに何が入るのでしょうか?
-
[解決済み] MIPSアセンブリ言語では、なぜ.globl mainを使うのですか?
-
[解決済み] アセンブリの追加要求の明確化
-
[解決済み] cmp命令の理解
-
[解決済み] Collatz予想の検証を行うC++のコードは、なぜ手書きのアセンブリよりも高速に動作するのでしょうか?
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み】ベースポインタとスタックポインタとは一体何でしょうか?これらは何を指しているのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] エラーです。操作サイズが指定されていません - NASm
-
[解決済み] アセンブリで数字をASCIIに変換する
-
[解決済み] MIPSプログラムの中で`lw`と`sw`が実際にどのように機能するかを理解する
-
[解決済み] なぜSet on Less ThanはALU演算なのか?
-
[解決済み] x86 8086 アセンブリで 0-9 の範囲の乱数を生成する。
-
[解決済み] アセンブリで負の数を計算する方法
-
[解決済み] ワードptrとは何ですか?
-
[解決済み] x86アセンブリでレジスタに使用されるpush/pop命令の機能は何ですか?
-
[解決済み] インテルアセンブリの%ripレジスタを理解する
-
[解決済み] movqアセンブリ機能