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

[OSASK 1067] NASMCNV0.



  こんにちは、川合です。

  NASMをダウンロードして、ドキュメントを適当に読んで、適当にプロ
グラムを書いたら、とりあえずコンバーターができちゃいました。数時
間で書き上げたいい加減なものなのです。

  テスト環境:
    aball0.ask
    ASKA Ver1.0β15
    NASM ver.0.98 win32版

  NASMは、ニーモニックは充実しているのですが、コードの最適化能力
はいまいちです。ということで、386|ASMでそのままコンパイルするよ
りも大きくて遅いコードになります。あまりにもくやしかったので、「
-c」オプションを付けました。これを付けるとコンパクトなコードにな
ります。セグメントについてこったことをやらない限り、「-c」オプシ
ョンを付けても大丈夫です(今までリリースされた全てのアプリケーシ
ョンは大丈夫です)。

  それと、NASMのORG仕様の関係で、少しだけソースの決まり文句が変
更になりました。最初のheader関数を以下のようにしてください。

void near header()
// タグの代わり(32byte)
{
    segment CODE == CS;
    ORG(0x0000);
    asmout("JMP main");
    ALIGN(8);
    asmout("DB 'GUIGUI00'");
    DD(0x4000 /* 16KB */); // stack-size
    asmout("DD 0,0,0"); 
}

  変更されたのは、中ほどの「ALIGN(8);」のところだけです。この決
まり文句は、386|ASMでもNASMでも有効です。・・・これにともない、
今までのアプリケーションを直してアップロードし直しておきます。

  コンバーターは、C言語で書きました。このコンバーターには、ASKA
が出力したファイルを無加工でわたしていいです。行を入れ替えたり、
最後のend文をいじる必要はありません(いじったものを渡しても平気
です)。

  また、NASMにはいきなりヘッダ無しのバイナリーを出力する機能があ
ったので、それを使えばEXE2BINは不要です。・・・NASMのオプション
についてはNASMのドキュメントか、NASMCNV0におまけで付いてくるバッ
チファイルを参照してください。

  NASMの作者に感謝して使いましょう。NASMCNV0の作者には感謝しなく
ていいです(笑)。

  それでは。

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