Mercurial > hg > CbC > old > device
comparison Idea @ 18:df7fa8cee67b
pass -Wall
add ifdef
author | kono |
---|---|
date | Sat, 01 Feb 2003 22:19:29 +0900 |
parents | ca0bce3b4810 |
children | e605560e6146 |
comparison
equal
deleted
inserted
replaced
17:fdbf2fbc8140 | 18:df7fa8cee67b |
---|---|
1152 まぁ、それほど必要な機能ではないんだけど。 | 1152 まぁ、それほど必要な機能ではないんだけど。 |
1153 | 1153 |
1154 これもcontinuationを渡してやると言う手法が使えないことはないんだが... | 1154 これもcontinuationを渡してやると言う手法が使えないことはないんだが... |
1155 | 1155 |
1156 関数呼び出しの最初にやってやればいいか。それでできるかな? | 1156 関数呼び出しの最初にやってやればいいか。それでできるかな? |
1157 | |
1158 | |
1159 Mon Jan 20 18:25:27 JST 2003 | |
1160 | |
1161 3年間さわってないのかよ。何やってんだ? | |
1162 | |
1163 goto 文のバグをとらないといけない。 | |
1164 | |
1165 まず、関数引数の構造体の展開。これは、どうってことないはず。 | |
1166 | |
1167 goto (*code)(i+1,j,...) | |
1168 | |
1169 まず、いじらなくてすむ変数を摘出する。 | |
1170 | |
1171 foreach arg | |
1172 compare | |
1173 | |
1174 単純演算 ( op+const , pointer , const assign ) などは、ここで検出する。 | |
1175 大半は、そのようになるはず。 | |
1176 レジスタに乗せる分があるから... それには触らないとして... | |
1177 | |
1178 複雑なものは、前もって計算しておく。(get_register する) | |
1179 スタック上かレジスタ上に作る。 | |
1180 | |
1181 残りは並列代入となる。再帰的に計算する。 | |
1182 | |
1183 えーと、大きな順にやるんだっけ? 小さな順にやるんだっけ? | |
1184 code f( int a, int b, int c ) { | |
1185 goto g(b,c,a); | |
1186 } | |
1187 みたいなやつだよね。 | |
1188 | |
1189 移動するものを一つ検出する。 | |
1190 そのために移動が必要なものを移動しておく(再帰) | |
1191 代入する | |
1192 | |
1193 こんなんでいいのか? ループしない? するよね。ループしたら | |
1194 get_register する。 | |
1195 | |
1196 前の例だと、 | |
1197 | |
1198 g(b,c,a) のbに着目する。 | |
1199 bに代入するコードを出すと、a が壊れる。 | |
1200 a が必要かどうかを調べる。それは、引数のリストを見ればわかる。 | |
1201 その前に、a を移動する。a の移動先を見て、 | |
1202 空いていれば、移動してOk。しかし、c | |
1203 なので、 c を見る。と b になるので、ループするのがわかるので、 | |
1204 b を get_register する。 | |
1205 で、c が移動できる。で、aを移動して、とっておいたbを代入。 | |
1206 | |
1207 Tue Jan 21 22:45:09 JST 2003 | |
1208 | |
1209 とりあえず、jump は複雑すぎる。もっと簡単にすることを考える。 | |
1210 parser 側である程度処理できない? | |
1211 | |
1212 goto f(a+3,b(),c); | |
1213 | |
1214 などを、 | |
1215 | |
1216 a = a+3; | |
1217 b = b(); | |
1218 goto f(a,b,c); | |
1219 | |
1220 程度に簡略化する。この時、f(a,b,c) は(できるだけ)、元の | |
1221 関数の引数リストに近付ける。のは無理なので、単純変数 | |
1222 まで落す。 | |
1223 | |
1224 あまり関係ないか。一時変数はどうせいるわけだし。ってこと | |
1225 みたいね。 | |
1226 | |
1227 だとすると、元のコードと、そう変わらんね。前のも、そんなに | |
1228 悪くないってことか。 | |
1229 | |
1230 Wed Jan 22 14:33:12 JST 2003 | |
1231 | |
1232 やっぱり、途中で局所変数を増やしたいよね。 | |
1233 | |
1234 Fri Jan 31 20:30:36 JST 2003 | |
1235 | |
1236 なんか #ifdef / #if がないとだめだな。実装する? |