diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2020-09-03 17:16:45 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2020-09-03 17:16:45 +0200 |
commit | c72f836f6d7319222c45e2c60e08de6d089ea131 (patch) | |
tree | ffc45f083a5b77342952d3b36bc24f417d0c2f98 /ecomp-c/tests/procedure_call_value_parameters.easm | |
parent | cb3c6769befb6806f567fb7e1cfd0f349e8fb3ff (diff) | |
download | compilertests-c72f836f6d7319222c45e2c60e08de6d089ea131.tar.gz compilertests-c72f836f6d7319222c45e2c60e08de6d089ea131.tar.bz2 |
sorted out parameter push order on stack
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 |