Beschreibung: 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 <- TODO: zu umstaendlich? :/ Mal schaun ob mir eine einfache Loesung einfaellt. Eventuell mit gcc drueberfahren - .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 :/ - Expr geht zwar, aber nicht geklammert - In manchen situationen kanns den parser noch an den einen oder anderen Space oder Tab herhauen, also lieb sein! - viele viele mehr *testbench schreiben muss*