Mercurial > hg > CbC > old > device
diff Changes @ 66:0b068058dd67
*** empty log message ***
author | kono |
---|---|
date | Sat, 22 Feb 2003 01:32:47 +0900 |
parents | 262c8059e5df |
children | 254a0c576114 |
line wrap: on
line diff
--- a/Changes Thu Feb 20 08:56:29 2003 +0900 +++ b/Changes Sat Feb 22 01:32:47 2003 +0900 @@ -1637,3 +1637,66 @@ ずれるみたい。6809では問題にならなかったんだけどね。 leave で調整するべき。 + +Thu Feb 20 14:42:46 JST 2003 + +c2cbc,cbc2c なんだけど、いったん、構文木にしてから変換すると、 +結構失われる情報があるけど、いいの? 特に局所変数の名前とか型 +の情報とか。macro もそうだけど。 indent ぐらい保存できないか +なぁ。式の途中でfunction callする場合も取り扱う必要があるの +で、構文木にしてから計算するしかないかな。gexpr の代わりに生 +成するようにするか。そうすると、修正するのは、statement と、 +gexpr になる。でも、結局、構文木で型を持ち歩くしかないんじゃ +ないの? やっぱり変だよ。型の情報がないのは。 + +そうではなくて、exprN() で変換していく方法もある。この方が +情報が欠落しないので楽だろう。そうすると、修正するのは、 + exprN(),doXXXX() +となる。これは、量は多い。けど、まぁ、それだけ。この方が +オリジナルを保存しやすい。 + +中間変数を途中で追加すると、宣言部を前もって出力できなく +なる。{int a;...} を認めれば良いわけだど。実装は難しくない。 +じゃ、やれば? でも、汚くなるなあ。出力をいったんバッファ +に貯めれば? どこに? cheapp ですか? 中間変数はいらないん +じゃないの? + a = g(i)+a; +でしょ。 + goto g_1(i,f_1,save_a); } + code g_1(i,f_1,save_a) { .... goto f_1(ret_value,save_a); } + code f_1(ret_value,save_a) { a = ret_value+a; ...} +じゃん。いらないじゃん。。 + + +型を表示するルーチンが必要だね。 + +めんどくさいなぁ。CbCのProlog version とかほしいなぁ。そうすれば、 +変換は簡単。でも、やろうとしてできなかったことでもあるな。 + + +Thu Feb 20 21:13:23 JST 2003 + +MC6809 の mc-codegen.c version は? (ちょっと虚しすぎる?) +X と D で、use_data_register, use_pointer してやる。 +tosop で、X と D の間の足し算を特別扱いする。 +(なるほど...) MAX_MAX=0でうまく動くのか? やっぱり、1は +いるよね。できれば、2だよね。 + +結構、浮動小数点も簡単かも。 + +汎用の書き換えツールも便利そう。 + +でも、Prolog version ってのも面白そう。 + code(name,interface(....)) :- + p()....,goto(name,interface(....)). +みたいな感じ? 結構、簡単にinterpreterを書けるかも知れない。 +これは、あれだね。thread diagram interpreter と似ている。 + +Fri Feb 21 13:34:17 JST 2003 + +構文要素での書き換えだけど、どれくらいの能力があるの? +その場での書き換えだけだと、ちょっと低すぎない? それで、 +cbc2c,c2cbc はできるとは思う。 + +まぁいいけど.. chk を無視しているところが結構あるんですけど。 +jmp,enter,leave ...