be782584a2aa71f2ae6ddb513f749f8fd1bec0e8
[calu.git] / 3a_asm / notes
1 Beschreibung:
2
3 Der Parser braucht zwei Durchlaeufe. Der erste Durchlauf loest z.b. Labels auf
4 und kuemmert sich darum welche Daten nach .data und welche nach .text gehoeren.
5 Im zweiten Durchlauf werden die eigentlichen Instructions geparst und den
6 entsprechenden Bytecode umgewandelt. Da zu diesem Zeitpunkt Labels und Defines
7 schon in einer Datenstruktur vorhanden sind, sollte bezueglich
8 Adressenaufloesung nicht mehr viel schief gehen.
9
10
11 (1) Aufgaben der first Stage:
12
13 - .data <- done (wenn man nett ist, springt man nicht lustig zwischen diesen
14 - .text <- done (sections hin und her... es *sollte* zwar gehen, aber [...] :p)
15 - .include <- TODO: zu umstaendlich? :/ Mal schaun ob mir eine einfache Loesung
16   einfaellt. Eventuell mit gcc drueberfahren
17 - .org <- done
18 - .fill aufloesen <- TODO: atm nur einmalig 32bit moeglich
19 - .define tabelle <- done
20
21 - @hi und @lo behandeln? <- done
22
23
24 (2) Values die noch als String vorhanden ist, werden als instruction geparst.
25         -> done
26
27
28 einschraenkungen atm:
29 - gleicher Namensraum fuer labels in .text und .data! wenn einer ein Label aus
30   .data laedt und dann aber eigentlich auf .text zugreift ist er selber schuld :/
31 - Expr geht zwar, aber nicht geklammert
32 - In manchen situationen kanns den parser noch an den einen oder anderen Space
33   oder Tab herhauen, also lieb sein!
34 - viele viele mehr *testbench schreiben muss*