summaryrefslogtreecommitdiff
path: root/ecomp-c/tests/procedure_call_value_parameters.easm
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2020-09-03 17:16:45 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2020-09-03 17:16:45 +0200
commitc72f836f6d7319222c45e2c60e08de6d089ea131 (patch)
treeffc45f083a5b77342952d3b36bc24f417d0c2f98 /ecomp-c/tests/procedure_call_value_parameters.easm
parentcb3c6769befb6806f567fb7e1cfd0f349e8fb3ff (diff)
downloadcompilertests-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.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