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 ...