4

$raでアドレスを返すという概念に非常に混乱しています。現在実行中の命令または次に実行する命令のアドレスを返しますか?説明については、次のコードを使用してください。

  1. 3つの関数func_A、func_B、およびfunc_Cを呼び出すコードフラグメントについて考えてみます。命令1はアドレス1996にあります。3つの関数のそれぞれが呼び出されたときにレジスタ$raに何がロードされますか?
Instruction 1
Instruction 2
jal func_A
Instruction 3
jal func_B
Instruction 4
jal func_C
Instruction 5

前もって感謝します。

4

1 に答える 1

9

次の命令は $ra に格納されます

したがって、func_A を呼び出すと、$ra = 2008; func_B を呼び出す場合、$ra = 2016; func_C を呼び出す場合、$ra = 2024。

jr $raによってサブルーチンから戻り、サブルーチン呼び出しの後の命令にジャンプするため、これは論理的です。

于 2011-08-21T16:22:44.193 に答える