[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]
[OSASK 1166] MASM32計画.
こんばんは、川合です。
今まで、386|ASMが入手できない場合に、代わりにNASMを使うことを
推奨してきましたが、この方針を変えることにします。NASMは出力する
コードをきめ細かく制御できるのは立派なのですが、制御せずに自動に
任せることがあまりできません(任せようとすると無駄の多いコードを
出力する)。
また、公開を予定しているソースの一部はコンパイルしても走りませ
んでした(アセンブルエラーは出ないが、生成した実行ファイルを走ら
せるとうまくいかない)。
この問題を克服するために、nasmcnvをバージョンアップしてnasmcnv
1を作ったりもしましたが、それでも駄目でした。でも、せっかく書い
たのでnasmcnv1は一応公開しておきます。
さて、代わりのアセンブラを求めてあれこれ追求してみましたが、一
番いいのは、小柳さんに教えていただいたMASMのようです。特に、自動
のコード生成能力が理想的のようで、テストした範囲では386ASMに優る
最高のコードを出力しています(たとえば、OSASKBS0.BINをMASMで生成
すると、空きが20バイトも増えます・・・僕の考えうる範囲で、全く文
句の付け所がない良い出力です)。
ということで、今からMASM向けのコンバーターを書く予定です。
---
まず、MASMの入手方法についてまとめておきます。今から書くことは
、[OSASK 1077]で紹介していただいたページに書いてあったことをまと
めただけです。
1."ML.EXE"、"ML.ERR"、"DDK_EULA.TXT"、"SDK_EULA.TXT"
この4つのファイルは、
http://www.pbq.com.au/home/hutch/masm.htm
のページから、「masm32v6.zip」というアーカイブをダウンロードして
解凍してインストールすることで入手できます。ちなみに、このアーカ
イブは3.90MBもあります。上記4のファイルを合わせても399KBにしか
ならないことを思うと、このダウンロードはなんだか割に合いません。
みなさんが僕と同じ気分になるのは申し訳ないので、僕の方で4ファ
イルをまとめてアーカイブにしてアップロードしようかとも思ったので
すが、ライセンス上の問題があるかもしれず、ためらっています。当た
り前なんですがライセンスは全部英語で書かれていて、よくわかりませ
ん。ちなみに、上記4つのファイルのうち後ろ2つは、そのライセンス
ドキュメントです。
なお、僕がこの方法によって入手したMASMのバージョンは、6.14.844
4です。
2."LINK.EXE"
このファイルは、
ftp://ftp.microsoft.com/softlib/mslfiles/lnk563.exe
から持ってきたファイルを解凍すると得られます。やっぱりいらないフ
ァイルが含まれていますが、「lnk563.exe」は274KBですし、「LINK.EX
E」は356KBなので、まあそんなに損した気分にはなりませんでした。
なお、僕がこの方法によって入手したLINKのバージョンは、5.60.339
Dec 5 1994です。
---
masmcnv0を書きましたが、これを使っているうちに、MASMといえども
完璧ではないということがわかりました。弱いのはセグメントレジスタ
が絡む代入です。セグメントレジスタに関する代入に、余計なオペラン
ドサイズプリフィクス(0x66)が付きます。これはよろしくないです。こ
れがなければ最高なんですが・・・。
それでも、aball1などを再アセンブルすると、386|ASMの時よりも184
バイトも小さくなります。これは偉いです。もちろんちゃんと走ります
。
MASMに感動したので、masmcnv1を近いうちに作りたいと思います。ma
smcnv1はMASMの不得意なセグメントレジスタ関係の代入をコンバーター
側でカバーする予定です。
---
ということで、今日のベータリリースのリストです。
1.nasmcnv1
MASMが強力だと分かった今となっては、ほとんど存在価値のないコン
バーターになりました。
2.masmcnv0
これはおすすめです。ASKAを使う方は、是非MASMに乗り換えましょう
!
3.exp2bin1
exp2bin0のバージョンアップ版です。コンバーター自身がコンパクト
になったのでバージョンアップをおすすめします。MASMを使うと.BIN
ファイルをダイレクトに生成することはできないので、このexp2bin1を
exe2binの代わりに使うことになります。
詳しい使い方などは、アーカイブ内のドキュメントや添付のバッチフ
ァイルを参照してください。
それでは。
--
川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.or.jp
Homepage http://www.imasy.or.jp/~kawai/