[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 2201] Challenge to C++ on OSASK.



  こんにちは、川合です。

  さっさとintroシリーズの改定をやればいいのに、また妙なことを思
い付いてしまいました(笑)。exe2binからobj2bim/bim2binになったか
ら、lcc-win32以外のコンパイラも使えるんじゃないか、そうしたらC++
もできるんじゃないか、という訳です。

  結論から申しましょう。できません。できませんが、できるようにす
るための労力はあとちょっとかもしれません。

  今回、試しにコンパイルしてみたのは以下のようなコードです。

  (長ったらしいクラス宣言は引用省略)

void main()
{
    lib_init(0);

    C_WINDOW win(0x0200, 136, 48); /* (slot, xsiz, ysiz) */
    C_WINTITLE title(7, win); /* (len, win) */
    C_TEXTBOX text(12, 1, win, 16, 16);
        /* (xsiz, ysiz, win, xpos, ypos) */

    title.set("test021");
    text.putstr_asc(0, 0, 0, "hello, world");
        /* (x, y, col, str) */

    lib_waitsignal(0x0001, 0, 0);
}

  (全文をベータ版のページに、test021.lzhとしてアップロードして
    おきます。)

  最初に挑戦してみたのは、VC4.0です。これは、さくさくと進んです
ぐに.BINファイルができました。しかもVCらしくもなく、701バイトで
す。おおこれはいい、と思ったのですが、動きませんでした。原因は、
VCの出力する.OBJファイルが複雑すぎて、obj2bimの手に負えないので
す。

  いや、でも、僕はここでobj2bimを弁護します。悪いのはVCの出力し
た.OBJファイルの方です(笑)。役にたたないセクションが2つもある
し、データーセクションが1つのオブジェクトファイル内に複数あった
りするんです。・・・いらないセクションなんか付けるな!データーセ
クションくらい一つにまとめてくれ!・・・もしかして、これってイン
クリメンタルリンクのための措置なのかなあ・・・。うーん、分からん
(笑)。

  次に挑戦したのは、C++Builder5.5です。これは、もっとひどい目に
遭いました。コンパイルするとすぐに.OBJファイルが出てくるのですが
これがOMFファイルフォーマットになっていて、obj2bimでは読めません
。それでwebで調べたところ、VCに付属するEDITBINというアプリケーシ
ョンでOMFをCOFFに変換できるらしいのですが、いざやってみると、こ
のフォーマットは変換できないなどとさじを投げられてしまいました。
ううう、C++Builderのダウンロードだけでもかなり時間がかかったのに
・・・。

  さて、lcc-win32のように素直なCOFFの.OBJファイルを出力してくれ
るC++コンパイラはないでしょうか。あれば、すぐにOSASKもC++対応な
んですが・・・。

  仮になくても、obj2bimをバージョンアップしてたくさんのセクショ
ンに惑わされないようにすれば、VCでならなんとなくいけそうな感じで
す。開発期間は1週間くらいでしょうか。

  そんなわけで、C++のサポートをやってほしくなったら要望を出して
ください。やるかもしれません。

  それでは。

--
    川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/