From 2f57b93442e14d586684c584c1edf5ee29f3d0bb Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Sat, 15 Aug 2020 19:54:10 +0200 Subject: forgot to add procedure_call_value_parameters test --- ecomp-c/tests/procedure_call_value_parameters.easm | 54 ++ .../tests/procedure_call_value_parameters.easm_err | 0 .../procedure_call_value_parameters.ecomp_err | 0 ecomp-c/tests/procedure_call_value_parameters.erun | 751 +++++++++++++++++++++ 4 files changed, 805 insertions(+) create mode 100644 ecomp-c/tests/procedure_call_value_parameters.easm create mode 100644 ecomp-c/tests/procedure_call_value_parameters.easm_err create mode 100644 ecomp-c/tests/procedure_call_value_parameters.ecomp_err create mode 100644 ecomp-c/tests/procedure_call_value_parameters.erun 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 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 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 -- cgit v1.2.3-54-g00ecf