関数呼び出し規約
致命的と言うほどでもありませんが、間違いを一つ発見しました。関数を呼び出すときには最初の三つの引数をR0からR2に格納します。しかし他方で引数の数がたとえ0であっても、この三つの引数のための領域をスタック上に確保しなければなりません。これを忘れていました。
具体的にはコール命令の前後に次のようなスタック管理命令を入れます。
sp += -12; call xxxxx; sp += 12;
なお、これは引数が無い場合の例です。
致命的と言うほどでもありませんが、間違いを一つ発見しました。関数を呼び出すときには最初の三つの引数をR0からR2に格納します。しかし他方で引数の数がたとえ0であっても、この三つの引数のための領域をスタック上に確保しなければなりません。これを忘れていました。
具体的にはコール命令の前後に次のようなスタック管理命令を入れます。
sp += -12; call xxxxx; sp += 12;
なお、これは引数が無い場合の例です。