summaryrefslogtreecommitdiff
path: root/ecomp-c/tests/procedure_scoping.easm
diff options
context:
space:
mode:
Diffstat (limited to 'ecomp-c/tests/procedure_scoping.easm')
-rw-r--r--ecomp-c/tests/procedure_scoping.easm26
1 files changed, 22 insertions, 4 deletions
diff --git a/ecomp-c/tests/procedure_scoping.easm b/ecomp-c/tests/procedure_scoping.easm
index 8f6dc6f..07106a7 100644
--- a/ecomp-c/tests/procedure_scoping.easm
+++ b/ecomp-c/tests/procedure_scoping.easm
@@ -15,16 +15,34 @@ pop ebp
; DECL x -> array 2 of integer, array 2 of integer = { ... }
; DECL y -> array 3 of integer, array 3 of integer = { ... }
; DECL z -> integer, 0
-mov eax, 4
+; local z, offset: 4, size: 4
+; local y, offset: 16, size: 12
+; local x, offset: 24, size: 8
+mov eax, 24
sub esp, eax
-; LET x[2 ] <- 3
+push ebp
+pop ebx
+mov eax, 4
+sub ebx, eax
+mov eax, 0
+mov [ebx], eax
+; LET x[2 1 - ] <- 3
mov eax, 2
push eax
+mov eax, 1
+push eax
+pop ebx
+pop eax
+sub eax, ebx
+push eax
pop eax
mov ebx, 4
mul ebx
push eax
-mov eax, x
+push ebp
+pop eax
+mov ebx, 24
+sub eax, ebx
pop ebx
add eax, ebx
push eax
@@ -42,7 +60,7 @@ mov eax, 4
sub ebx, eax
pop eax
mov [ebx], eax
-mov eax, 4
+mov eax, 24
add esp, eax
pop ebp
ret