3a_asm: FIX: disc erwartet kein register
[calu.git] / 3a_asm / notes
1 BUGS:
2 - parsers2/eval: kann nur "0-1" und ned "-1" auswerten
3 - parsers1: fail bei zeile mit tab/blanks only
4 - parsers2/eval: aufloesen von zwei labels x und y funktioniert nicht, wenn x ein
5   echter prefix von y ist (longest input match anyone?)
6 - parsers2/eval: klammern bei ausdruecken (und zwar im asm, ned expr selbst...)
7 - parsers2: bei instr branches addresse durch 4 rechnen (ldi vorm brr -> RAGE)
8
9 WUENSCHE:
10 - vernuenftige zeilenangabe bei fehlermeldungen
11 - eval: bitoperatoren
12
13
14 ===============================================================================
15 Beschreibung:
16
17 Der Parser braucht zwei Durchlaeufe. Der erste Durchlauf loest z.b. Labels auf
18 und kuemmert sich darum welche Daten nach .data und welche nach .text gehoeren.
19 Im zweiten Durchlauf werden die eigentlichen Instructions geparst und den
20 entsprechenden Bytecode umgewandelt. Da zu diesem Zeitpunkt Labels und Defines
21 schon in einer Datenstruktur vorhanden sind, sollte bezueglich
22 Adressenaufloesung nicht mehr viel schief gehen.
23
24
25 (1) Aufgaben der first Stage:
26
27 - .data <- done (wenn man nett ist, springt man nicht lustig zwischen diesen
28 - .text <- done (sections hin und her... es *sollte* zwar gehen, aber [...] :p)
29 - .include <- done (thx @ gcc)
30 - .org <- done
31 - .fill aufloesen <- TODO: atm nur einmalig 32bit moeglich
32 - .define tabelle <- done
33
34 - @hi und @lo behandeln? <- done
35
36
37 (2) Values die noch als String vorhanden ist, werden als instruction geparst.
38         -> done
39
40
41 einschraenkungen atm:
42 - gleicher Namensraum fuer labels in .text und .data! wenn einer ein Label aus
43   .data laedt und dann aber eigentlich auf .text zugreift ist er selber schuld :/