[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]
[OSASK 2654] Re: About NASM
- Subject: [OSASK 2654] Re: About NASM
- From: Hidemi KAWAI <kawai !Atmark! imasy.org>
- Date: Sun, 09 Dec 2001 14:05:59 -0000
こんばんは、川合です。
NASM関係のレスを一本化することにします。ログでツリーが崩れるで
しょうが、これはOSASKの本質とは関係ないですから、別にいいです(
←いい加減な管理者・・・笑)。これは僕の個人的な方針なので、みな
さんは気にしないでかまいません。
I.Tak. さんは 2001/12/09 21:37:17 の「[OSASK 2648] Re: About NAS
M.」で書きました:
> NASMとMASMで起きる違いはどれくらいで、川合さんはそれを大きいと
>思いますか? 私なら4キロバイト以上でためらいます。それ以下なら
>端数でしょう。
うーん、僕はバイト数よりも割合で判断しています。3%くらいがボー
ダーラインでしょうか。ですから、1割という現状にはかなりためらい
を覚えます([OSASK 2650]参照)。
> とりあえず、NASMを支持します。フリー、ポータブル、シンプル、
>好み(ぉ ですから。
> MASM32が訴えられ、DDKの配布も中止、ということも、XPとかの
>悪ティベート(←MS-IMEナイス)の話を聞くと近い将来にありそうな気が
>しますし。
それはありうるでしょう。もしそうなったら、僕は何の迷いもなくNA
SMへ移行できます。
なんというか、やっぱり僕はアセンブラは究極の言語だという信念が
どうしても捨て切れないのです。NASMはマクロに強くてとても素敵ですが
、その労力の一部を自動最適化へ回してくれなかったのが本当に悔やまれ
ます。最適化はそんなに大変なことではありません(処理速度さえ気にし
なければ・・・そして処理速度が問題なら、オプションで選べるようにし
ておけばいいだけのことです)。
NASMにはアセンブラが究極の言語だという気概はないのでしょうか。
動けばいいのでしょうか。・・・いや、きっと単に今まではそういうこ
とをやる時間が無かっただけだと思いたいです。実際、ジャンプの自動
最適化もつい最近のバージョンから始まったわけですし。
nabe さんは 2001/12/09 21:55:52 の「[OSASK 2649] Re: About NASM
」で書きました:
>>手持ちのIntelのマニュアルによるとPentiumPro以降のCPUではmov eax, dx
>>とするとeaxの上位16bitは0クリアされると書いてあります。
>>それ以前のCPUではeaxの上位16bitは未定義です。
>未定義ではありますが、私が調べたときは 486/K6 は
>0 クリアされた記憶があります。
おお、そうだったんですか・・・。i486でも0クリアされていたとは
・・・。どうも僕があまりに不勉強だったようです。貴重な情報をあり
がとうございました。
nabe さんは 2001/12/09 22:06:07 の「[OSASK 2653] Re: About NASM.
」で書きました:
>> コードの大きさにこだわるなら、[esp+disp]よりも[ebp+disp]の方が
>>小さいということにも気を配るべきです(pioneerのソースより。
>>いっぱい並んでいて無駄が多そうです)。
>そういえば、昔REXを制作してたころ
>"mov ebp,esp" が確か2byteで、
>[ebp+disp] と [esp+disp] の差が 1byte だから、
>引数3つ以上を ebp使用 に切り換えるなんてことをやってましたが、
>esp を使った引数受け渡しは混乱とバグの温床なので、
>その後やめたのを覚えています。
ううう、みんながいじめる〜(笑)。
ええとですね、そう、[ESP+disp]は[EBP+disp]よりも1バイト大きく
なります。それは僕も前から知っていました。しかし、EBPをこの用途
に使ってしまうと、自由に使えるレジスタが減ってしまうのです。僕の
プログラミングスタイルでは、
・引数は構造体に収めてポインタで渡す。
・基本的に全ての処理をレジスタと目的のメモリだけを使って済ます。
・レジスタが足りなくなったらスタックを使う。
というものです。スタックを使うのは最後の最後で、それまでにEBPも
使ってしまっているわけです。・・・でも確かに、pioneer0はESPを使
いすぎていますね。むう、いつか直します。
>それと[esp+disp]って並列処理で不利じゃなかったっけ?
そうなんですか?いや、sibバイトがあるから、なんかいやーな予感
はしていたのですが・・・。どのCPUでどういう問題があるのか、もし
ご存じでしたら教えてください。
まあNASMを責める前にもっと自前の最適化もするべきなんですが、し
かし何もせずにただMASMを使うだけで1割もコンパクトになるなんて、
それはあまりに魅力的すぎます。がんばっておくれ、NASM!
それでは。
--
川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/