■
C++
malloc()は横に置いたまま、ちょっとTOPPERS/JSPでC++を試してみました。
TOPPERS/JSPでC++を使うには、あらかじめ次の二つの仕込が必要です。
- 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++対応と同じタイミングでアップロードします。