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