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 ]