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