update
authorMart Lubbers <mart@martlubbers.net>
Fri, 13 May 2016 16:34:46 +0000 (18:34 +0200)
committerMart Lubbers <mart@martlubbers.net>
Fri, 13 May 2016 16:34:46 +0000 (18:34 +0200)
ontwerpbesluiten.txt

index b65b74a..c35bafd 100644 (file)
@@ -24,4 +24,17 @@ Globaal gedefinieerde dingen worden als constanten beschouwd. Enkel in functies
 
 — mbt code generation
 —- 
-Bij callen is de callee verantwoordelijk voor het opslaan van de registers, indien nodig. Dit omdat _alles_ als function wordt gecalled, dus ook: i=4; b=i+1; levert een functiecall naar i op in de toewijzing van b. 
\ No newline at end of file
+Globals zijn bestaan niet, ondingen. Lokale variabelen komen gewoon op de stack
+te staan in volgorde van declaratie.
+
+Int, Char, Bool worden gewoon normaal opgeslagen met hun waarde
+Tuple wordt opgeslagen dmv twee pointers naar de heap
+List wordt opgeslagen dmv een pointer, als die 0 is dan is het het einde. Als
+       het een plek op de heap is dan wijst die plek naar de waarde, de volgende
+       plek wijst dan naar de tail.
+Incomplete functies sla je op dmv heap pointer, plek van de pointer is het
+       functieadres, plekken erna zijn de argumenten
+
+Functies callen gebeurt door eerst de oude frame pointer op de stack te duwen,
+dan omgekeert de argumenten van de functie. Bij afbraak herstel je gewoon de
+stack pointer naar de waarde onder het laatste argument.