Serious bugfix : when optimizing accesses to addresses stored in FSR
[sixpic.git] / TODO
blob19b24f25681c3c1109db867352ffe28a3e1e8d96
1 finish parser
2 add pointers
3 add main
4 forward declarations
5 optimize stuff like : bra $4, 4: (jump to the next line)
6 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 pour avoir comparaison d'egalite avec cste, load cste dans wreg, et CPFSEQ
10 TODO verifier si je l'ai pas deja ajoute
13 += is not supported, so probably neither are his brothers
16 postinc/dec in an expression does not work (sigma example had res = res + n--, gave the decremented value)
18 avoir suite de tests (entre autres, tous les types de conditions)
20 add support for pointer types parsing in six
22 pour l'instant, faire marcher declarations de tableaux avec taille fixe (i.e. int b[3]), devrait etre assez, su moins pour le moment (ou p-e meme pour picobit au complet)
24 six.index should behave correctly if used in the lhs of an assignment
26 simulator does not support byte-to-byte, whatever that is NEEDED FOR MOVFF (avoir movff)
28 voir si en C, on peut caster de int vers byte, par exemple
30 faire marcher les < et > sur plusieurs bytes
32 elimination de tests sur relations avec juste des literaux : 0 > 1
34 voir si un fonction qui prend un int, a qui on donne un byte marche convenablement
35 aussi, voir si casts explicites peuvent marcher commedu monde
38 tableaux
39 var SIXPIC_MEMORY_DIVIDE : a partir de cette adresse, la memoire est geree par l'usager
42 see test 21, implicit return at the end cannot return array assignations, so array assignations cannot be the last statement, bug ?
47 reconnait si on pre/post inc/dec vars speciales FSRx et on utilise POSTINC0 et cie
48 PICOBIT : ajouter bignums (voir code marc), ca fait une contribution
49 switchs en tables
50 compiler picobit petit bout par petit bout pour voir ou on peut ameliorer
52 binums dans picobit : 0 = 16 bits de 0 et pointeur vers 16 bits de 0, objet qq part en memoire, ca donne suite infinie de 0
53 -1 est meme chose avec juste des 1, -2 est 111..10 et pointeur vers -1, donc ca fait 0 avec infinite de -1, on arrete algos quand les 2 vals sont a 0 ou -1
54 p-e avoir un tableau qu ipointe vers -1...10 alloues en permanence, ou p-e avoir 2 espaces de 1 objet pour mettre les operandes en objets d'une primitive, qu'on genere on the fly, voir code marc
56 p-e autre chose, j'ai le feeling d'avoir oublie de quoi
59 there is a way to put a var in FSR0, but any regular table access would overwrite it, watch out
61 if a special FSR var, only SIXPIC_FSRX[0] makes any sense, since the address should already be good
62 use simple dereference (*) syntax instead, to avoir confusion
64 SYNTAX DE DEREF MARCHE DANS SIX, utiliser
66 simplifier assignation sur dereference pour utiliser nouvelle version de array-base-name quand array-ref va etre un operateur, pas un cas particulier de syntaxe
67 merger les 2 syntaxes
70 BUG : si on fait SIXPIC_FSR0 = SIXPIC_MEMORY_DIVIDE;, allocation de registres doit merger les 2, et FSR est pas stocke dans FSR, donc on perd le benefices, corriger
71 p-e, pour regler ca, mettre un flag sur les values pour dire si elle doit etre allouee dans un registre ou non ?
74 de test26, la VM
75                         $4:
76 000092 E150                 movf    FSR1L, w
77 000094 016E                 movwf   1
78 000096 012A                 incf    1
79 000098 E250                 movf    FSR1H, w
80 assez insultant
82 encore de la vm
83                         $12:
84 0000AA D950                 movf    FSR2L, w
85 0000AC 016E                 movwf   1
86 0000AE 012A                 incf    1
87 0000B0 DA50                 movf    FSR2H, w
88 0000B2 026E                 movwf   2
89 0000B4 000E                 movlw   0
90 0000B6 0222                 addwfc  2
91 0000B8 0150                 movf    1, w
92 0000BA E96E                 movwf   FSR0L
93 0000BC 0250                 movf    2, w
94 0000BE EA6E                 movwf   FSR0H
95 pas super, on pourrait tranferer le resultat au fur et a mesure qu'il est calcule, on sauverait des voyages par w