jal命令が MIPS プロセッサでどのように機能するか理解できません。私の2つの質問は次
のとおりです。b)本当にPC+8の場合、 PC+4の命令はどうなりますか? ジャンプの前に実行されますか、それとも決して実行されませんか?
Patterson と Hennessy (第 4 版)、pg 113:
「ジャンプアンドリンク命令: アドレスにジャンプすると同時に、次の命令のアドレスをレジスタに保存する命令 ( MIPS では$ra )」
「プログラムカウンター(PC):実行中のプログラム内の命令のアドレスを含むレジスター」
これら 2 つのステートメントを読むと、$raに保存される値は ( PC+4 )になるはずです。
ただし、本に付属の MIPS リファレンス データ (グリーン カード) では、jal 命令のアルゴリズムは次のように定義されてい
ます。
このウェブサイトにも「本当はPC+8です」と書かれていますが、不思議なことに、パイプライン処理は高度なトピックなので、「リターン アドレスはPC+4と仮定します」と書かれています。
私は 8086 アセンブリから来たので、アドレスに戻ることと、それに続くアドレスに戻ることには大きな違いがあることを認識しています。なぜなら、何かが真実でないと仮定しただけでは、プログラムは機能しないからです。ありがとう。