色々動くようになって、では、そろそろ自分フレームワークをコンパイルしようかと思い、進めてみたものの、基本的部分が動かない・・
調べると、STL vector が死ぬ!
こんな簡単なプログラムを作ると、死んでしまう・・・
std::vector pad;
pad.push_back(1); // ---> 死ぬ!
又、
pad.resize(10); // ---> 死ぬ!
一方、
std::vector pad(10);
とかで、初期化段階でサイズを指定すると、使える。
基本的に、KPIT v10.02 の C++ ライブラリーにバグがあるとしか思えないが、こんな基本的なとこで死ぬのはおかしい??
多分、vector のアロケーターに SH2 で不味いコードが含まれているのだと思われるが、KPITのソースコードをダウンロードして不具合を見つけるのは、ちょっと骨が折れるので、とりあえず放置状態であるが、一応、KPIT にバグレポートを送った。
gcc のツールチェインを自分で構築してみようか・・
※時間と手間がかかるので余りやりたくない。
-----
そんで、vector が動かないと自分のフレームワークも全滅と思うが、画像操作系など、コンパイルだけはしてみた。
それに先だって、基本のライブラリー、Z、PNG、JPEG ライブラリーをソースコードからコンパイルして、ライブラリーを作ってみた。
この手の汎用ライブラリーは、configure によって開発環境の状態を取りこむのだが、クロス環境で自動で行うには、configureを改造する必要がある為、手作業で作ってみた。
それで、jpeg ライブラリーを使って純粋に C のコードで簡単な読み込みを書いて、テストしてみた。
SH-2AにはFPUが入っているハズだが、思った程高速では無い・・・
FPUを使う為におまじないが必要なのかもしれない・・
アーカイブにライブラリーなどをアップしておく。
PNG はテストしていないが、動くと思う。
※BMP のデコードは C++ のコードなので、vector 待ちです。
しかし、vector が使えないのは痛すぎる!