サブルーチンコールとレジスタの退避

Cにせよ、Pythonにせよ、アセンブラにせよ、サブルーチンコールを行うときはスタックに現在実行中の位置に戻ってきて続きを実行できるように、現在の状態をセーブしておく必要があります

アセンブラの場合だと、CPU内のレジスタとよばれる場所の値をスタックに保存します。*1

が、

  • どのレジスタを保存すればいいのー?
  • どういう順番で保存したんだっけ?
    ちゃんと逆に戻さないといけないんだけど

みたいなことが起こりがちなモノグサな私がちょっと考えた結果
「退避するのではなく、レジスタを最初からスタックにおいておけばいいじゃない」

という変なことを思いつく結果に。

どんな感じなのかちょっとPython擬似コード的なものを書いてみることにしました

試してみるまでもなく、アカーン感じがするのですが。。。

*1:そもそも、このン十年 アセンブラなんか書いてないのですが。