[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]
[OSASK 1042] Re: guide0.
- Subject: [OSASK 1042] Re: guide0.
- From: Myurika <myurika !Atmark! pop06.odn.ne.jp>
- Date: Thu, 03 Aug 2000 10:59:07 -0000
- References: <39857B0435C.0D87MYURIKA !Atmark! smtp01.odn.ne.jp> <200007311433.AA00658 !Atmark! kawai-ATX02.imasy.or.jp>
こんばんは、Myurikaです。
Hidemi KAWAI さんにいただいた [OSASK 1025] Re: guide0. へのお返事です。
> でも、レジスタはそんなにややこしいものではありません。少しかじ
>ると、普通の変数の方がよっぽどもどかしい存在に思えます。
そうですね、C言語レベルで高速化を突き詰めていくと、レジスタ使えたらなぁ、っ
て思うことありますもの。
> 1つは、「基本的に1文はCPUの1命令に相当する」というルールの
>ためです。ポインタ変数をそのままポインタとして評価し、機能させる
>命令はIA-32にはありません。
なるほど。
よく考えると、仮にポインタとして評価させるような命令があったとして、じゃ
あポインタへのポインタはどうするのか? って突き詰めていくと、やっぱりダメ
になりそうですね。
>しかし、これを2文に分けるとき、この1通り以外にも多くの表現方法
>があります。EAXの他に、ECXやEDX、EBXなどを使ってもいいわけです。
>C言語では、どのレジスタを使うかは、処理系の仕様に任されています
>。VCなどでは、その辺を適当にコンパイラが決めてしまいます。もちろ
>ん、それはそれで問題無いことです。しかし、アセンブラでは、そんな
>勝手なことは非常に困ります。EAXは他の用途に使っている最中かもし
>れません。それなのに勝手に値を代入されて元の値が分からなくなるの
>は大迷惑です。レジスタを自由にいじれなくなったら、アセンブラとし
>ては全く使い物になりません。
全くですね。その辺りまで最適化できるのであれば話は別ですが、やっぱりそ
れは高級言語のそれでしょう。
私にとって最大の思い違いは、ASKAを「アセンブラ的なアプローチの出来る高
級言語」だと思っていたことでしょう(苦笑)。川合さんの言う、「なにも考えな
いで書けば勝手に速くコンパクトなコードになる」あたりの発言を拡大解釈して
いたようです。
実際には「可視性の高いアセンブラ」、ぐらいに認識しているのが良さそうで
すね。
それでは。
| Myurika (尾藤主和) myurika !Atmark! pop06.odn.ne.jp |