X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=3a_asm%2Fnotes;h=07dfe0e23cc580b2f112d2bd57618c1cc7a57680;hb=c45536d352d3a45f6bbc7627c8bd5d0163ba054e;hp=595fe05316aa56f3694c5e914926eaf5c6cadc68;hpb=59404aef0c1d2a3de1525d316a2e108efd43a75d;p=calu.git diff --git a/3a_asm/notes b/3a_asm/notes index 595fe05..07dfe0e 100644 --- a/3a_asm/notes +++ b/3a_asm/notes @@ -1,17 +1,39 @@ -zwei durchlaeufe: +BUGS: +- parsers2/eval: aufloesen von zwei labels x und y funktioniert nicht, wenn x ein + echter prefix von y ist (longest input match anyone?) +- 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 :/