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

yarv-dev:516

From: SASADA Koichi <ko1 atdot.net>
Date: Tue, 28 Jun 2005 20:16:26 +0900
Subject: [yarv-dev:516] Re: Optimal code generation on Stack Caching

 ささだです。

 いつもながら的確なご指摘ありがとうございます。

MAEDA Atusi wrote:
> dynamic SCにおいて,ある基本ブロックを統合してsuperinstructionを作った
> とします.
> 
> このとき,各stack state S1, ..., Sn に対応するnative codeを作る必要が
> あります(実行時までstack stateは分からないから).
> 
> しかし,static SCだと,1つの基本ブロックに対して作るnative codeのイン
> スタンスは1個ですみます.

 相対的な話なんですね(そう書いてあるし...)。

>> で、次の段落の「スタックから何も取ってこないで、n 個後で乗っける命令」
>>についての話がわからない。なんで n レジスタ未満でスタートする場合の操作
>>が必要ないんだろう。
> 
> 
> 同様に,
> 「レジスタがn個空いている状態に遷移」+「n個のレジスタに値をロード」
> の組合せにできるから.(もともとそうなっているから).

 状態の遷移は、レジスタ列のシフトである、という認識が抜けていました。そ
う考えれば納得です。

> これは単なる例で,実際にはnative codeの長さをコストとして使うのでは.

 なるほど。

> 
> x86の命令長が,メモリアクセスについてはレジスタアクセスより長かったか
> らでは.

 なるほど。


 しかし、長さを指標にしてもいいんだろうか。

 命令ハンドラ中に分岐がある場合、gcc だとブロックを明後日の場所において
しまうことがあるので、追うのが大変なんですよね。だから dynamic
superinstruction (selective inlining) も出来ない。なんとかする方法はある
んだろうか。そもそも、YARV の命令は 1 命令の粒度がでかすぎということかも。

-- 
// SASADA Koichi at atdot dot net
//


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

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

       512 2005-06-28 16:03 [ko1 atdot.net       ] Optimal code generation on Stack Caching
       513 2005-06-28 17:08 ┗[maeda-yarv atusi.org]                                       
->     516 2005-06-28 20:16  ┗[ko1 atdot.net       ]                                     
       518 2005-06-29 10:45   ┗[shudo computer.org  ]                                   
       519 2005-06-29 10:51    ┣[shudo computer.org  ]                                 
       522 2005-06-29 14:17    ┃┗[ko1 atdot.net       ]                               
       521 2005-06-29 14:16    ┗[ko1 atdot.net       ]                                 
       523 2005-06-29 14:45     ┗[ko1 atdot.net       ]