[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/