[前][次][番号順一覧][スレッド一覧][生データ]

yarv-dev:353

From: MAEDA Atusi <maeda-yarv atusi.org>
Date: Mon, 6 Dec 2004 21:09:44 +0900
Subject: [yarv-dev:353] Re: Compiler with super instruction

SASADA Koichi <ko1 atdot.net> writes:

>  複数命令を統合するほうの命令統合を考えてたんですが、コンパイ
> ラってどうなりますかね。
> 
>  前田さんが作っていたときは、コンパイラはどんな感じになったん
> でしょうか? 命令 A+B -> X としたとき、A, B の列を探して、そ
> れを X に置換していたって感じでしょうか。

まあ、そういう感じです。

>  ただ、コンパイルコストが凄いことになってしまいそうです。

いやあ、ピープホール最適化と同じなんで、そう大したことにはならないかと。
統合前の命令列の先頭の命令コード(A)をキーとする表を作っておけば。

私は「マッチしなくなるまで先頭からのスキャンを繰り返す」とやりましたが、
「影響を受ける可能性のある命令列だけ再度 見直す」とやった方が効率良い
かも知れません。

「マッチしなくなるまで繰り返す」ってのはダイクストラのGCみたいね。ダイ
クストラのGCではマーキングの時、
・灰色のセルがなくなるまで、
    ・ヒープ全体をスキャンして、
         灰色のセルgがあれば、
            gを黒にして、
            gが白のセルwを指していれば、wを灰色にする
とやるんです。

普通は、ヒープ全体をスキャンし直したりしないで、「灰色のセルをスタック
(とかキューとか)に入れる」とやって、「スタック(キュー)が空になるまで繰
り返す」とやりますよね。

命令融合だけなら「マッチして置き換えたら、1つ前の命令に戻る」とやれば
よいかも。

				前田敦司

--
ML: yarv-dev quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]

       352 2004-12-06 17:03 [ko1 atdot.net       ] Compiler with super instruction         
->     353 2004-12-06 21:09 ┗[maeda-yarv atusi.org]