ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

関数呼び出しまとめ

5つのプロセッサで、関数呼び出しの方法をまとめました。

MIPS sparc sh ARM x86
レジスタ渡し可能な引数 4個まで 6個まで 4個まで 4個まで スタックを使用
戻り先の格納先 register register stack register stack
関数の呼出し jal call jsr bl call
関数からの戻り方 j jmp rts mov ret

組み込みの人が使うプロセッサだと、引数は4個まではレジスタ渡しが多いです。

関数を呼び出すときは戻り先の保存があるので、全てのアーキテクチャで専用の命令が用意されています。関数からの戻り方はまちまちですが、RISCの場合戻り先が保存されているレジスタを使って無条件ジャンプする方法が多いです。

call/retの議論はこちらも面白いです。
http://alohakun.blog7.fc2.com/blog-entry-952.html