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

[OSASK 2651] Re: About NASM.



  こんばんは、川合です。


I.Tak. さんは 2001/12/09 19:59:03 の「[OSASK 2645] Re: About NAS
M.」で書きました:

> なんにせよaxしか関係ないのに、mov ds,eax にしないと32ビット命令
>になりません。NASMはセグメントレジスタ関係を「32ビットオペランドを
>扱うなら32ビット、そうでないなら16ビット」と解釈しているようです

  多分、特別扱いを嫌ったのでしょうね。

>(pushの場合、暗黙のオペランドとして bits で指定したサイズの[esp]が
>解釈されるようです)。ああそういえば mov eax,cs よりも push cs の
>方が一バイト小さくなるようですから、こっちにしません?

  それは用途によりけりです。たとえば、CSの値をDSに入れる時は、確
かにPUSHの方が良さそうです。これから少しずつ直すことにします(DS
 = CS + 8;の部分もあるので、そこはやっぱりEAX経由にします)。

> ところで、VCやMASMが吐くオブジェクトってCOFFなんですか?
>NASMのマニュアルには「Win32オブジェクトはマイクロソフト社がCOFFと
>互換性があると主張するフォーマットだ」とか「COFFの一般的な拡張子は
>oだ」と書いてありましたが(個人的にはMS社が自社以外のフォーマットを
>使うとは思えません)。

  とりあえず、COFFっぽいです。厳密にはCOFFではないのかもしれませ
んが、僕はCOFFだと信じてobj2bimを作り、とりあえずlcc-win32やMASM
が出力したファイルをすんなり扱えました。多分、勝手な独自拡張はし
ているでしょう。

> 出力フォーマットの問題で(UNIXはFLATですから)全く関係ないんですが、
>gasはジャンプ関係をちゃんと小さく出力してくれます。

  うーん、さすがです。っていうか、ちゃんとする方が僕には当たり前
に思えるのですが・・・。なんでNASMはこんなにユーザーが多いのにこ
の問題を放置してきたんでしょう。不思議です。

  ついでにもう一つ。


I.Tak. さんは 2001/12/09 20:32:14 の「[OSASK 2647] Re: About NAS
M.」で書きました:

>>  これで、僕の不満を共有していただけるでしょうか?(笑)。
> はい。NASMは混乱しているようですね。

  ご理解いただき、ありがとうございます(笑)。

> 思いつきですが、ストリームエディタで "L????:" という単語に反応して
>行に印をつけ、それをNASMでアセンブルして、リストファイルを参考に川合
>さんの出番、というのはどうでしょう。……だめかな。
>私はアセンブリ以外はパス(^^;;;

  アイデアとしては悪くないですね。

  僕が思ったのは、ASKAがダイレクトにこのコードを出せるようになっ
たらいいなあと思いました。・・・まあ、無理でしょう。言ってみたか
っただけです(笑)。

> NASM(ラベル問題あり)を改造してそういうアセンブラを作るのと、
>gas(文法が異色、オブジェクト問題あり)を改造して理想のアセンブラを
>作るのとはどちらが難しいか……

  NASMはマクロ処理がすばらしいので、NASMベースの方がいいかなとは
思います。でも結局はASKAの下請けができればそれで十分なわけで、だ
ったらセグメント処理とかを全部無視した簡易バージョンで事足ります
。

  ラベル計算を別ルーチンにまかせられるということは、ほぼ1パスで
処理できてしまうということです。これは面白いと思うんですが・・・
。こういうのが好きな人っていないかなあ。1ヶ月くらいがんばったら
、僕一人でもできるかな。できそうだな。でも今やったらみんなに怒ら
れちゃうだろうなあ・・・。まずはファイルライトで、その後にPC9801
への移植で、それから1ヶ月くらい、これをやるっていうのはどうかな
あ・・・。

  (いつのまにか独り言モードになってしまいました。すみません。)


  それでは。

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