[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[b-free: 1107] Re: OS による言語へのスタック機構のサポート



 林さん、こんにちは。リギーコーポレーションの片桐です。

| これは明らかにコンパイラの問題ですね。コンパイラ&CPU依存でよければ
|内藤さんがおっしゃるようにインラインアセンブラで書いてしまうことが
|できますけど、最近のコンパイラの性能(最適化技術)を考えると、半端な
|やり方ではかえって効率を落とすだけでしょう。

 アドバイスありがとうございます。

| register指定は確かにコンパイラへのヒントに過ぎません。x86系のCPUは汎用レジスタ
|が少ないので通常は2変数くらいしかレジスタに割り当てられないはずです。さらに
|下手にレジスタ指定するとかえって遅くなるとか、賢いコンパイラは無視して自前で
|フロー解析してレジスタ割り当てを決めるとか、そういうことも考えられます。

 DOS版ではカーネルはオールアセンブラだったので、

        SI ← IP
        BP ← リターンスタックポインタ
        SP ← データスタックポインタ

 でした。Cの中でやる場合はSPは自由になりませんからもう一つ別なの
が必要になります。

|あとはi486でFPUを取り込んで浮動小数点レジスタが入ったくらいですか。
|# MMXのレジスタは浮動小数点レジスタと重なっているし。

そういえば、インテルのFPUはスタックマシンなんですね。これ使えないだ
ろうかと検討したことありましたが、何しろレジスタ・・いや、スタックの
深さが浅いので無理そうでした。ただ、限られた用途(グラフィックか制御
系など)には、FPU+FORTHという組み合わせはかなりの性能が出るのではない
かと思います。なぜかそういう報告を聞きませんが。

 では。
                                片桐 明  (株)リギーコーポレーション
                                killy@rigy.co.jp
                                NIFTY: PAG01434