25

JUMP 命令と CALL 命令の違いは何ですか? GOTO やプロシージャ コールなどのより高いレベルの概念とどのように関連していますか? (比較で正しいですか?)

これは私が思うことです:

JUMP または GOTO は別の場所へのコントロールの転送であり、コントロールは呼び出された場所に自動的には戻りません。

一方、CALL またはプロシージャ/関数呼び出しは、呼び出し元のポイントに戻ります。この性質の違いにより、言語は通常、スタックを利用し、スタック フレームをプッシュして、呼び出された各プロシージャの戻り場所を「記憶」します。この動作は、再帰プロシージャにも適用されます。ただし、末尾再帰の場合、呼び出しごとにスタック フレームを「プッシュ」する必要はありません。

あなたの答えとコメントは大歓迎です。

4

5 に答える 5

1

あなたの考えに対する 1 つの修正: 末尾再帰だけでなく、一般的に末尾呼び出しでも、スタック フレームが必要ないため、単純にそこで JMP を実行できます (引数が正しく設定されている場合)。

于 2013-08-18T16:57:36.327 に答える