3a_asm: FIX: parser fail bei labels aufloesen
[calu.git] / 3a_asm / notes
index 595fe05316aa56f3694c5e914926eaf5c6cadc68..26ff1ef1d89125e3a008fc97a158959641223239 100644 (file)
@@ -1,17 +1,37 @@
-zwei durchlaeufe:
+BUGS:
+- parsers2: bei instr branches addresse durch 4 rechnen (ldi vorm brr -> RAGE)
 
-(1) zeilen in das programmer format umwandeln, d.h.
-bis auf value werden eigentlich schon alle saplten aufgeloest. gleichzeitig wird
-eine tabelle mit labels und deren adresse aufgebaut (zwei tabellen fuer
-instr und data mem noetig)
+WUENSCHE:
+- eval: bitoperatoren
 
-ausserdem: 
-- auf .data und .text achten
-- .include
-- .org
-- .fill aufloesen
-- .define tabelle
 
-@hi und @lo behandeln?
+===============================================================================
+Beschreibung:
 
-(2) value das noch als string vorhanden ist, wird als instruction geparst.
+Der Parser braucht zwei Durchlaeufe. Der erste Durchlauf loest z.b. Labels auf
+und kuemmert sich darum welche Daten nach .data und welche nach .text gehoeren.
+Im zweiten Durchlauf werden die eigentlichen Instructions geparst und den
+entsprechenden Bytecode umgewandelt. Da zu diesem Zeitpunkt Labels und Defines
+schon in einer Datenstruktur vorhanden sind, sollte bezueglich
+Adressenaufloesung nicht mehr viel schief gehen.
+
+
+(1) Aufgaben der first Stage:
+
+- .data <- done (wenn man nett ist, springt man nicht lustig zwischen diesen
+- .text <- done (sections hin und her... es *sollte* zwar gehen, aber [...] :p)
+- .include <- done (thx @ gcc)
+- .org <- done
+- .fill aufloesen <- TODO: atm nur einmalig 32bit moeglich
+- .define tabelle <- done
+
+- @hi und @lo behandeln? <- done
+
+
+(2) Values die noch als String vorhanden ist, werden als instruction geparst.
+       -> done
+
+
+einschraenkungen atm:
+- gleicher Namensraum fuer labels in .text und .data! wenn einer ein Label aus
+  .data laedt und dann aber eigentlich auf .text zugreift ist er selber schuld :/