C++

malloc()は横に置いたまま、ちょっとTOPPERS/JSPC++を試してみました。
TOPPERS/JSPC++を使うには、あらかじめ次の二つの仕込が必要です。

  • OS実行前に___ctorloop関数を呼ぶ
  • C++ランタイム用の領域を確保する

これらをstart.asmに追加しました。通常は#ifdefで殺しています。これらは挿入しただけで、他のコードは変更していません。C++対応にするにはboard_config.hでUSE_C_PLUS_PLUSマクロを宣言します。まだ軽くチェックしただけですのでコードはアップロードしていません。
(追記、以下の方法はあまりよくありません、id:suikan:20050321によりよい方法があります。)

ためしにタスクをC++で記述してみました。と、言ってもファイルの拡張子を.cppに変更しただけです。名前のマングリングが行われるので、コンフィグレーション・ファイルで関数名をmain_task__Fvに変更しました。

まだ、C++の機能は使っていませんが、ビルドはすんなり通りました。

イベント・スタック

イベントスタックは event_stackという名前を使っていましたが、これをLDFの標準的なスタック名に変更しました。エキスパート・リンカと親和性を高めるためです。変更はstart.asmの中だけで、単純な名前の置換です。まだアップロードしていません。C++対応と同じタイミングでアップロードします。