diff options
Diffstat (limited to 'ecomp-c/tests/procedure_scoping.easm')
-rw-r--r-- | ecomp-c/tests/procedure_scoping.easm | 26 |
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 |