Mercurial > hg > CbC > old > device
diff Changes @ 108:69e2e763cce5 powerpc-asm-first-try
object assemble first try.
author | kono |
---|---|
date | Tue, 18 Mar 2003 20:50:37 +0900 |
parents | 3618c0efe9d3 |
children | fb502a0071f8 |
line wrap: on
line diff
--- a/Changes Tue Mar 18 12:41:32 2003 +0900 +++ b/Changes Tue Mar 18 20:50:37 2003 +0900 @@ -2281,3 +2281,39 @@ やっぱり、関数全体を構文木に落してからgexprするべきだよね。 それ自体は、そんなに難しくないが。 + +Tue Mar 18 12:41:42 JST 2003 + +COND(三項演算子)で使うレジスタが関数の引数を破壊してしまう。 +input register にならない値を使えば良いんだけど。r15 +を使っているんだけど、それでいいの? + +virtual を使っていたときは、use_register で何も破壊されなかった +んだけど、使わないとすると、結構破壊されてしまう。なので、 +ちょっと奥の深い問題かもね。三項演算子の型はチェックしてなかったし。 + +まぁ、それは、一時レジスタを使えば良いとして... + +時々呼び出す、u2d とか bcopy とかで破壊されるinput レジスタ +はどうする? これは、予測は困難だよね。使う分だけsaveするって +言う手もあるけど。うー、どうしよう... 検出できるようにするっ +ていう手もある。(と、思ったら、get_register_var が間違ってい +るみたいね) 検出はちょっと重いか。二乗のアルゴリズムは、あま +り使いたくない。といっても、定数乗になるだけか。呼出側でsave +する? bcopy がどれくらい使うか割りと曖昧。 + +もっと積極的にget_register_var するっていう手もあるよね。そ +うすれば、あまり気にすること無く library call できる。(ちょ +っと、書き換えが多いが...) その方が筋かな。使うレジスタを減 +らそうと思うと、それは検出するのと、それほど差はないわけか。 + +このあたりも構文木を全部持っていれば解決できるんだよな。 + +うーん、まだまだ、だな。 + +関数が関数呼び出しで決まる場合の input register の破壊を考えて +ませんでした。これも、どうすればいいんだ... まぁ、get_register_var +するのが簡単だよね。 + + +save register が狂っているようだね。max_register_var あたり?