[OSASK 5415] Re: GO, NASK.

  こんにちは、川合です。


I.Tak. さんは 2002/11/28 13:07:03 の「[OSASK 5413] Re: GO, NASK(
Re: tolset02).」で書きました:

(commonシンボル)
> nasmの説明によれば、
>          common intvar 4
>これと
>          global intvar 
>          section .bss 
>intvar    resd 1
>これとはほぼ同じ結果が得られます。でもリンクするときに他のオブジェクト
>に同じcommon変数があるとマージされ、intvarへの参照は同じメモリを指す
>ようになります。
>……ということです。mtlのrewind_codeとかそういう共有されるものは
>どこで作っても一つにまとめよう、という事ですね。

  なるほどなるほど、よく分かりました。ありがとうございます。

  これはcommonを使わない方法だと、全部からexternで参照しておいて
そして実体だけのオブジェクトファイルを用意したりする方法ですね。
僕は、この代替方法で十分に満足しているので、サポートはしないこと
にします。もしI.Tak.さんがこの機能をほしいということでしたら、毎
度のように改造しちゃってください。

(NASKのフォーマットをコマンドラインで指定させるべきか)
> マクロで制御できるので、そうではないと思います。マクロを使わなく
>ても、全く同じソースをcoffにもelfにもwin32にも出力したいということ
>は(汎用なルーチンでは)よくあります。

  coffとwin32は同じソースから生成できるべきじゃないのかというの
は、僕でも分かります。それはまあ、一理ありますね。それについては
ソースがCOFFフォーマットを指定しているときなどにがきって、コマン
ドラインでオーバーライドできるようにするっていうのもありだと思い
ます。

  でも、binとcoffはやっぱり違うよなあ。まあ、I.Tak.さんはリンカ
を使わないでくっつけたりしているみたいですが、それは標準的な方法
ではないので、僕はサポートしないでしょう。I.Tak.さんが好きなよう
に改造するほうがいいと思います。

  NASMの場合ですが、マクロでフォーマットを選べるというのは、僕も
いい方針だと思います。たとえば、

>nasm -dCOFF test.asm -o test.obj

みたいなのはいいと思いますね。ソースの中で、COFFが%defineされて
いたらフォーマットがCOFFになるように書かれていればいいわけです。
・・・こういうことはできないみたいですが。多分I.Tak.さんが指摘し
た方法は、-fと-dを併用するんでしょう。そんなのは駄目仕様だと僕は
思います。

  もっともマクロが使えない時点で、NASKも駄目仕様といえば駄目仕様
ですがね。


  それでは。

--
    川合 秀実(KAWAI Hidemi)
OSASK計画代表 / システム設計開発担当
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/


ML番号でジャンプ
ML単語検索