関数の誕生(ジャンプ命令)

関数の誕生

  • 関数を利用=「関数にジャンプ」してから「呼び出し先の最後で呼び出し元に戻る」
  • 呼び出し元に戻るのもジャンプ命令。つまりどちらもジャンプ命令
  • 前者はジャンプ先は固定なので実装はシンプルだが、後者は実行毎に異なるので実装に工夫が必要。

呼び出し元への戻り方

  • ①. 「関数を呼び出す度に、呼び出し先の関数処理の最後でジャンプ命令のジャンプ先の書き換え」で実装
  • でもこれだと書き換えるジャンプ命令の場所の管理が大変
  • ②. 特定のレジスタをジャンプの戻り専用に利用することにした
  • でもこれだと同一関数の再帰呼び出しができないため
  • ③. スタックで管理することにした。正確には特定のレジスタが常にスタックの先頭のアドレスを管理している