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]