summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2020-08-15 19:54:10 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2020-08-15 19:54:10 +0200
commit2f57b93442e14d586684c584c1edf5ee29f3d0bb (patch)
tree80ccc2e42ad5e28ff1ac2043befd891db62192b9
parentc096d1707246c8631219365034e11b28652c98f4 (diff)
downloadcompilertests-2f57b93442e14d586684c584c1edf5ee29f3d0bb.tar.gz
compilertests-2f57b93442e14d586684c584c1edf5ee29f3d0bb.tar.bz2
forgot to add procedure_call_value_parameters test
-rw-r--r--ecomp-c/tests/procedure_call_value_parameters.easm54
-rw-r--r--ecomp-c/tests/procedure_call_value_parameters.easm_err0
-rw-r--r--ecomp-c/tests/procedure_call_value_parameters.ecomp_err0
-rw-r--r--ecomp-c/tests/procedure_call_value_parameters.erun751
4 files changed, 805 insertions, 0 deletions
diff --git a/ecomp-c/tests/procedure_call_value_parameters.easm b/ecomp-c/tests/procedure_call_value_parameters.easm
new file mode 100644
index 0000000..a44959e
--- /dev/null
+++ b/ecomp-c/tests/procedure_call_value_parameters.easm
@@ -0,0 +1,54 @@
+format binary
+use32
+org $1000000
+jmp __global_0
+; DECL i -> integer, 1
+; param x, offset: -8, size: 4
+; PROC proc
+__global_proc:
+push ebp
+push esp
+pop ebp
+; DECL l -> integer, 0
+; local l, offset: 4, size: 4
+mov eax, 4
+sub esp, eax
+push ebp
+pop ebx
+mov eax, 4
+sub ebx, eax
+mov eax, 0
+mov [ebx], eax
+; LET l <- x
+push ebp
+pop ebx
+mov eax, -8
+sub ebx, eax
+mov eax, [ebx]
+push eax
+push ebp
+pop ebx
+mov eax, 4
+sub ebx, eax
+pop eax
+mov [ebx], eax
+; LET i <- l
+push ebp
+pop ebx
+mov eax, 4
+sub ebx, eax
+mov eax, [ebx]
+push eax
+pop eax
+mov [i], eax
+mov eax, 4
+add esp, eax
+pop ebp
+ret 4
+__global_0:
+; CALL __global_proc( 42 )
+mov eax, 42
+push eax
+call __global_proc
+hlt
+i: dd $00000001
diff --git a/ecomp-c/tests/procedure_call_value_parameters.easm_err b/ecomp-c/tests/procedure_call_value_parameters.easm_err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/ecomp-c/tests/procedure_call_value_parameters.easm_err
diff --git a/ecomp-c/tests/procedure_call_value_parameters.ecomp_err b/ecomp-c/tests/procedure_call_value_parameters.ecomp_err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/ecomp-c/tests/procedure_call_value_parameters.ecomp_err
diff --git a/ecomp-c/tests/procedure_call_value_parameters.erun b/ecomp-c/tests/procedure_call_value_parameters.erun
new file mode 100644
index 0000000..927e555
--- /dev/null
+++ b/ecomp-c/tests/procedure_call_value_parameters.erun
@@ -0,0 +1,751 @@
+Read 97 bytes of code and static data..
+1000000: EB4F jmp 0x1000051
+1000002: 55 push ebp
+1000003: 54 push esp
+1000004: 5D pop ebp
+1000005: B804000000 mov eax, 4
+100000A: 29C4 sub esp, eax
+100000C: 55 push ebp
+100000D: 5B pop ebx
+100000E: B804000000 mov eax, 4
+1000013: 29C3 sub ebx, eax
+1000015: B800000000 mov eax, 0
+100001A: 8903 mov dword ptr [ebx], eax
+100001C: 55 push ebp
+100001D: 5B pop ebx
+100001E: B8F8FFFFFF mov eax, 0xfffffff8
+1000023: 29C3 sub ebx, eax
+1000025: 8B03 mov eax, dword ptr [ebx]
+1000027: 50 push eax
+1000028: 55 push ebp
+1000029: 5B pop ebx
+100002A: B804000000 mov eax, 4
+100002F: 29C3 sub ebx, eax
+1000031: 58 pop eax
+1000032: 8903 mov dword ptr [ebx], eax
+1000034: 55 push ebp
+1000035: 5B pop ebx
+1000036: B804000000 mov eax, 4
+100003B: 29C3 sub ebx, eax
+100003D: 8B03 mov eax, dword ptr [ebx]
+100003F: 50 push eax
+1000040: 58 pop eax
+1000041: A35D000001 mov dword ptr [0x100005d], eax
+1000046: B804000000 mov eax, 4
+100004B: 01C4 add esp, eax
+100004D: 5D pop ebp
+100004E: C20400 ret 4
+1000051: B82A000000 mov eax, 0x2a
+1000056: 50 push eax
+1000057: E8A6FFFFFF call 0x1000002
+100005C: F4 hlt
+data:
+0100005D: 01000000
+core start 1000000
+data start 100005d
+data size 4
+stack start 1800000
+Single step execution:
+-- iteration 1
+1000000: EB4F jmp 0x1000051
+EIP: 01000051
+ESP: 01800000
+EBP: 01800000
+EAX: 00000000
+EBX: 00000000
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+data:
+0100005D: 01000000
+-- iteration 2
+1000051: B82A000000 mov eax, 0x2a
+EIP: 01000056
+ESP: 01800000
+EBP: 01800000
+EAX: 0000002A
+EBX: 00000000
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+data:
+0100005D: 01000000
+-- iteration 3
+1000056: 50 push eax
+EIP: 01000057
+ESP: 017FFFFC
+EBP: 01800000
+EAX: 0000002A
+EBX: 00000000
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 4
+1000057: E8A6FFFFFF call 0x1000002
+EIP: 01000002
+ESP: 017FFFF8
+EBP: 01800000
+EAX: 0000002A
+EBX: 00000000
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 5
+1000002: 55 push ebp
+EIP: 01000003
+ESP: 017FFFF4
+EBP: 01800000
+EAX: 0000002A
+EBX: 00000000
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 6
+1000003: 54 push esp
+EIP: 01000004
+ESP: 017FFFF0
+EBP: 01800000
+EAX: 0000002A
+EBX: 00000000
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF0: 017FFFF4
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 7
+1000004: 5D pop ebp
+EIP: 01000005
+ESP: 017FFFF4
+EBP: 017FFFF4
+EAX: 0000002A
+EBX: 00000000
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 8
+1000005: B804000000 mov eax, 4
+EIP: 0100000A
+ESP: 017FFFF4
+EBP: 017FFFF4
+EAX: 00000004
+EBX: 00000000
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 9
+100000A: 29C4 sub esp, eax
+EIP: 0100000C
+ESP: 017FFFF0
+EBP: 017FFFF4
+EAX: 00000004
+EBX: 00000000
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF0: 017FFFF4
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 10
+100000C: 55 push ebp
+EIP: 0100000D
+ESP: 017FFFEC
+EBP: 017FFFF4
+EAX: 00000004
+EBX: 00000000
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFEC: 017FFFF4
+017FFFF0: 017FFFF4
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 11
+100000D: 5B pop ebx
+EIP: 0100000E
+ESP: 017FFFF0
+EBP: 017FFFF4
+EAX: 00000004
+EBX: 017FFFF4
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF0: 017FFFF4
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 12
+100000E: B804000000 mov eax, 4
+EIP: 01000013
+ESP: 017FFFF0
+EBP: 017FFFF4
+EAX: 00000004
+EBX: 017FFFF4
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF0: 017FFFF4
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 13
+1000013: 29C3 sub ebx, eax
+EIP: 01000015
+ESP: 017FFFF0
+EBP: 017FFFF4
+EAX: 00000004
+EBX: 017FFFF0
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF0: 017FFFF4
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 14
+1000015: B800000000 mov eax, 0
+EIP: 0100001A
+ESP: 017FFFF0
+EBP: 017FFFF4
+EAX: 00000000
+EBX: 017FFFF0
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF0: 017FFFF4
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 15
+100001A: 8903 mov dword ptr [ebx], eax
+EIP: 0100001C
+ESP: 017FFFF0
+EBP: 017FFFF4
+EAX: 00000000
+EBX: 017FFFF0
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF0: 00000000
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 16
+100001C: 55 push ebp
+EIP: 0100001D
+ESP: 017FFFEC
+EBP: 017FFFF4
+EAX: 00000000
+EBX: 017FFFF0
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFEC: 017FFFF4
+017FFFF0: 00000000
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 17
+100001D: 5B pop ebx
+EIP: 0100001E
+ESP: 017FFFF0
+EBP: 017FFFF4
+EAX: 00000000
+EBX: 017FFFF4
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF0: 00000000
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 18
+100001E: B8F8FFFFFF mov eax, 0xfffffff8
+EIP: 01000023
+ESP: 017FFFF0
+EBP: 017FFFF4
+EAX: FFFFFFF8
+EBX: 017FFFF4
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF0: 00000000
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 19
+1000023: 29C3 sub ebx, eax
+EIP: 01000025
+ESP: 017FFFF0
+EBP: 017FFFF4
+EAX: FFFFFFF8
+EBX: 017FFFFC
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF0: 00000000
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 20
+1000025: 8B03 mov eax, dword ptr [ebx]
+EIP: 01000027
+ESP: 017FFFF0
+EBP: 017FFFF4
+EAX: 0000002A
+EBX: 017FFFFC
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF0: 00000000
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 21
+1000027: 50 push eax
+EIP: 01000028
+ESP: 017FFFEC
+EBP: 017FFFF4
+EAX: 0000002A
+EBX: 017FFFFC
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFEC: 0000002A
+017FFFF0: 00000000
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 22
+1000028: 55 push ebp
+EIP: 01000029
+ESP: 017FFFE8
+EBP: 017FFFF4
+EAX: 0000002A
+EBX: 017FFFFC
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFE8: 017FFFF4
+017FFFEC: 0000002A
+017FFFF0: 00000000
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 23
+1000029: 5B pop ebx
+EIP: 0100002A
+ESP: 017FFFEC
+EBP: 017FFFF4
+EAX: 0000002A
+EBX: 017FFFF4
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFEC: 0000002A
+017FFFF0: 00000000
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 24
+100002A: B804000000 mov eax, 4
+EIP: 0100002F
+ESP: 017FFFEC
+EBP: 017FFFF4
+EAX: 00000004
+EBX: 017FFFF4
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFEC: 0000002A
+017FFFF0: 00000000
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 25
+100002F: 29C3 sub ebx, eax
+EIP: 01000031
+ESP: 017FFFEC
+EBP: 017FFFF4
+EAX: 00000004
+EBX: 017FFFF0
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFEC: 0000002A
+017FFFF0: 00000000
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 26
+1000031: 58 pop eax
+EIP: 01000032
+ESP: 017FFFF0
+EBP: 017FFFF4
+EAX: 0000002A
+EBX: 017FFFF0
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF0: 00000000
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 27
+1000032: 8903 mov dword ptr [ebx], eax
+EIP: 01000034
+ESP: 017FFFF0
+EBP: 017FFFF4
+EAX: 0000002A
+EBX: 017FFFF0
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF0: 0000002A
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 28
+1000034: 55 push ebp
+EIP: 01000035
+ESP: 017FFFEC
+EBP: 017FFFF4
+EAX: 0000002A
+EBX: 017FFFF0
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFEC: 017FFFF4
+017FFFF0: 0000002A
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 29
+1000035: 5B pop ebx
+EIP: 01000036
+ESP: 017FFFF0
+EBP: 017FFFF4
+EAX: 0000002A
+EBX: 017FFFF4
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF0: 0000002A
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 30
+1000036: B804000000 mov eax, 4
+EIP: 0100003B
+ESP: 017FFFF0
+EBP: 017FFFF4
+EAX: 00000004
+EBX: 017FFFF4
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF0: 0000002A
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 31
+100003B: 29C3 sub ebx, eax
+EIP: 0100003D
+ESP: 017FFFF0
+EBP: 017FFFF4
+EAX: 00000004
+EBX: 017FFFF0
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF0: 0000002A
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 32
+100003D: 8B03 mov eax, dword ptr [ebx]
+EIP: 0100003F
+ESP: 017FFFF0
+EBP: 017FFFF4
+EAX: 0000002A
+EBX: 017FFFF0
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF0: 0000002A
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 33
+100003F: 50 push eax
+EIP: 01000040
+ESP: 017FFFEC
+EBP: 017FFFF4
+EAX: 0000002A
+EBX: 017FFFF0
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFEC: 0000002A
+017FFFF0: 0000002A
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 34
+1000040: 58 pop eax
+EIP: 01000041
+ESP: 017FFFF0
+EBP: 017FFFF4
+EAX: 0000002A
+EBX: 017FFFF0
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF0: 0000002A
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 01000000
+-- iteration 35
+1000041: A35D000001 mov dword ptr [0x100005d], eax
+EIP: 01000046
+ESP: 017FFFF0
+EBP: 017FFFF4
+EAX: 0000002A
+EBX: 017FFFF0
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF0: 0000002A
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 2A000000
+-- iteration 36
+1000046: B804000000 mov eax, 4
+EIP: 0100004B
+ESP: 017FFFF0
+EBP: 017FFFF4
+EAX: 00000004
+EBX: 017FFFF0
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF0: 0000002A
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 2A000000
+-- iteration 37
+100004B: 01C4 add esp, eax
+EIP: 0100004D
+ESP: 017FFFF4
+EBP: 017FFFF4
+EAX: 00000004
+EBX: 017FFFF0
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF4: 01800000
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 2A000000
+-- iteration 38
+100004D: 5D pop ebp
+EIP: 0100004E
+ESP: 017FFFF8
+EBP: 01800000
+EAX: 00000004
+EBX: 017FFFF0
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+017FFFF8: 0100005C
+017FFFFC: 0000002A
+data:
+0100005D: 2A000000
+-- iteration 39
+100004E: C20400 ret 4
+EIP: 0100005C
+ESP: 01800000
+EBP: 01800000
+EAX: 00000004
+EBX: 017FFFF0
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+data:
+0100005D: 2A000000
+-- iteration 40
+100005C: F4 hlt
+EIP: 0100005D
+ESP: 01800000
+EBP: 01800000
+EAX: 00000004
+EBX: 017FFFF0
+ECX: 00000000
+EDX: 00000000
+ESI: 00000000
+EDI: 00000000
+stack:
+data:
+0100005D: 2A000000