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

[OSASK 2635] Re: About NASM.



  こんにちは、川合です。自己レスです。


Hidemi KAWAI は 2001/12/08 23:15:33 の「[OSASK 2627] About NASM.
」で書きました:

>  まあ当面は我慢するしかないのかもしれませんが・・・。それともNW
>SAにした方がいいのかなあ・・・。

  さて、いろいろ試してみたところでは、こんな結論になりそうです。

1.OSASKのASKAの部分は、MASM、NASM、NWSAのどれでもアセンブルで
    きる(もちろんmasmcnvやnasmcnvで変換すれば、の話です)。

2.NASMを使う場合にかぎり、16bitリンカーはいらない。MASMやNWSA
    では16bitリンカーが必要(もしくは代替リンカーを作る必要があ
    るだろう・・・そんなに難しくはないと思われますが・・・1日で
    できそうです、やる気になれば)。

3.MASMが最も良いコードを出力。

4.NWSAがその次に良いコードを出力。NWSAの欠点は、いわゆるスマー
    トモードに対応していないところです(後述)。かつてあったその
    他の問題点については、こちらで回避できそうです。

5.NASMが最も劣るコードを出力([OSASK 2627]参照)。

  4.についてですが、以前の個人的なやり取りでは、

---

>   それと、まことに些細な要望なのですが、use16内で以下のコードを
> アセンブルした結果、MASMの方が1バイト小さいコードを生成してくれ
> るようです。
>
>     mov word ptr ds:[003ah],ax
>
>     MASM> A3 003A
>     NWSA> 89 06 003A
>
> できれば、NWSAもA0〜A3の方が短くなる場合はこちらを自動的に選択で
> きるようになってくれると、MASMへの未練がなくなってうれしいです(
> 笑)。

 こういう問題は、わざとそのままにしてあります。基本的には TASM でいう、
nosmart モードに積極的に対応しているからです。将来的には smart モード
にも対応すべきですが、rept マクロなどを使用した際に、レジスタや
アドレスの大きさなどによって命令長が変化しないようにするためです。
多分、今の例でも AL,AX,EAX レジスタだけには専用命令が用意されている
のだと思うのですが、技とこうしています。基本的には命令テーブルに数行
追加するだけで修正は可能ですが、そうすると smart モードになってしまう
ためまだやっていません。

---

とのことです。「わざとそのままにしてあります」ということなので、
対応をお願いしてもやってくれるかどうかは分かりません。

  さて、どうしたものでしょうか?ご意見をください。


  それでは。

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