summaryrefslogtreecommitdiff
path: root/ecomp-c/tests/procedure_call_value_parameters.easm
diff options
context:
space:
mode:
Diffstat (limited to 'ecomp-c/tests/procedure_call_value_parameters.easm')
-rw-r--r--ecomp-c/tests/procedure_call_value_parameters.easm23
1 files changed, 18 insertions, 5 deletions
diff --git a/ecomp-c/tests/procedure_call_value_parameters.easm b/ecomp-c/tests/procedure_call_value_parameters.easm
index a44959e..787f952 100644
--- a/ecomp-c/tests/procedure_call_value_parameters.easm
+++ b/ecomp-c/tests/procedure_call_value_parameters.easm
@@ -3,7 +3,8 @@ use32
org $1000000
jmp __global_0
; DECL i -> integer, 1
-; param x, offset: -8, size: 4
+; param y, offset: -8, size: 4
+; param x, offset: -12, size: 4
; PROC proc
__global_proc:
push ebp
@@ -19,13 +20,23 @@ mov eax, 4
sub ebx, eax
mov eax, 0
mov [ebx], eax
-; LET l <- x
+; LET l <- x y -
+push ebp
+pop ebx
+mov eax, -12
+sub ebx, eax
+mov eax, [ebx]
+push eax
push ebp
pop ebx
mov eax, -8
sub ebx, eax
mov eax, [ebx]
push eax
+pop ebx
+pop eax
+sub eax, ebx
+push eax
push ebp
pop ebx
mov eax, 4
@@ -44,10 +55,12 @@ mov [i], eax
mov eax, 4
add esp, eax
pop ebp
-ret 4
+ret 8
__global_0:
-; CALL __global_proc( 42 )
-mov eax, 42
+; CALL __global_proc( 43 1 )
+mov eax, 43
+push eax
+mov eax, 1
push eax
call __global_proc
hlt