Added && and ||, and changed the type system a little for that.
[sixpic.git] / TODO
blob2dac9e7ac1ae5a476c1a2bde5f4b997bd0354009
1 finish parser
2 add pointers
3 add main
4 forward declarations
5 real conditions (in if)
6 optimize stuff like : bra $4, 4: (jump to the next line)
7 eliminate dead code after branches before next label (should be generated at all, surprising, but look at asm from test6, label $5 has a return after a bra $4)
9 make sure jump like this can't happen (from test5)
10 000012 0164                 cpfsgt  1
11 000014 01D0                 bra     $3
12 000016 01D0                 bra     $4
13                         $3:
14 000018 1200                 return  0
15                         $4:
16 00001A 0300                 sleep   
17 p-e s'arranger pour que bloc si vrai soit tjrs immediatement apres, donc si on a vrai, on skippe le jump. pour que ca marhe, il faudrait aussi eliminer les bra $4, $4:
19 revoir le systeme de conditions au complet, il est degeulasse
21 pour avoir comparaison d'egalite avec cste, load cste dans wreg, et CPFSEQ
24 00000A 0150                 movf    1, w
25 00000C 006E                 movwf   0
26 plutot faire movff 1, 0 -- verifier que ca fait bien la meme chose
28 registres sont pas sauvegardes, donc adieu recursion, et p-e calls nestes, voir ex 8, qui ne fait pas ce qu'il devrait.
30 += is not supported, so probably neither are his brothers
32 test5 avec fall through au case 0
33                         $7:
34 000022 0150                 movf    1, w
35 000024 006E                 movwf   0
36 000026 002A                 incf    0
37 000028 0050                 movf    0, w
38 00002A 016E                 movwf   1
39 00002C 00D0                 bra     $9
40 grossierement inefficace
42 if (x != 2 && 0){
43     return 5;
44   }
45 donne :
46                         $3:
47 00000E 020E                 movlw   2
48 000010 0062                 cpfseq  0
49 000012 01D0                 bra     $6
50 000014 00D0                 bra     $6
51 risible
52   
54 utiliser instructions speciales du 4550 ? voir datasheet
57 postinc/dec in an expression does not work (sigma example had res = res + n--, gave the decremented value)
59 faire marcher les < et > sur plusieurs bytes
61 eliminer code mort apres un branch / return
63 avoir suite de tests (entre autres, tous les types de conditions)
65 elimination de conditions si les 2 destinations sont les memes