C/C++ とあんまり関係ない話題に乗るのは気が引けるけど…

メモリへの読み書きを避けるために
戻り先アドレスをスタックに積まないCPUもあるよね。
PCの値をレジスタにコピーしてジャンプ。
リターン時にはレジスタからPCにコピー。

ARMのサブルーチン呼び出し命令が "BL" だからって変態あつかいするな。