ぱたへね

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

関数呼び出しsh、ARM、x86編

残りのプロセッサについても、さっとまとめました。
Cソース/アセンブラここにまとめてあります。

SH

SHの場合、引数が4つまではレジスタ渡し、5つ目からスタックを使用します。
関数の呼出はjsr命令を使い、戻るときはrts命令を使います。
他のRISCプロセッサと違い、戻り先がスタックに保存される所が特徴です。

ARM

ARMの場合も、引数が4つまではレジスタ渡し、5つ目からスタックを使用します。
関数の呼出はbl命令を使います。この命令により、戻り先はlr(リンクレジスタ)に保存されます。関数から戻るときはmov pc, lrでPCを上書きします。gccは、mov命令の代わりにbx lr命令を出しますが、プロセッサのモード変更を行うという点を除き無条件ジャンプと等価です。

x86

x86は引数はスタック渡し、戻り先もスタックに格納します。
x86はわかりやすい説明が多いので、リンクの紹介だけにします。
http://d.hatena.ne.jp/niha/20080710
http://d.hatena.ne.jp/suu-g/20080504/1209914954