From c72f836f6d7319222c45e2c60e08de6d089ea131 Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Thu, 3 Sep 2020 17:16:45 +0200 Subject: sorted out parameter push order on stack --- ecomp-c/ec.c | 8 +- ecomp-c/tests/procedure_call_value_parameters.e | 6 +- ecomp-c/tests/procedure_call_value_parameters.easm | 23 +- ecomp-c/tests/procedure_call_value_parameters.erun | 1044 +++++++++++++------- 4 files changed, 686 insertions(+), 395 deletions(-) diff --git a/ecomp-c/ec.c b/ecomp-c/ec.c index 2e5b288..3b044df 100644 --- a/ecomp-c/ec.c +++ b/ecomp-c/ec.c @@ -1666,10 +1666,10 @@ static void parseProcedureCall( Scope *scope ) Emit( "; CALL %s", symbol->label ); if( nof_actual_params > 0 ) { Emit( "( " ); - node = list.head; + node = list.tail; while( node != NULL ) { generate_expression_comment( node ); - node = node->next; + node = node->prev; } Emit( ")" ); } @@ -1677,10 +1677,10 @@ static void parseProcedureCall( Scope *scope ) /* emit assembly to push parameters onto stack and call procedure */ if( nof_actual_params > 0 ) { - node = list.head; + node = list.tail; while( node != NULL ) { emit_expression_code( node, scope ); - node = node->next; + node = node->prev; } free_expression_node( list.head ); diff --git a/ecomp-c/tests/procedure_call_value_parameters.e b/ecomp-c/tests/procedure_call_value_parameters.e index f0d6372..e7e1bc9 100644 --- a/ecomp-c/tests/procedure_call_value_parameters.e +++ b/ecomp-c/tests/procedure_call_value_parameters.e @@ -7,14 +7,14 @@ module procedure_call_value_parameters; var i : integer := 1; -procedure proc( x : integer ); +procedure proc( x : integer, y : integer ); var l : integer; begin - l := x; + l := x - y; i := l; end begin - proc( 42 ); + proc( 43, 1 ); end 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 diff --git a/ecomp-c/tests/procedure_call_value_parameters.erun b/ecomp-c/tests/procedure_call_value_parameters.erun index 927e555..821b51a 100644 --- a/ecomp-c/tests/procedure_call_value_parameters.erun +++ b/ecomp-c/tests/procedure_call_value_parameters.erun @@ -1,5 +1,5 @@ -Read 97 bytes of code and static data.. -1000000: EB4F jmp 0x1000051 +Read 120 bytes of code and static data.. +1000000: EB60 jmp 0x1000062 1000002: 55 push ebp 1000003: 54 push esp 1000004: 5D pop ebp @@ -13,42 +13,54 @@ Read 97 bytes of code and static data.. 100001A: 8903 mov dword ptr [ebx], eax 100001C: 55 push ebp 100001D: 5B pop ebx -100001E: B8F8FFFFFF mov eax, 0xfffffff8 +100001E: B8F4FFFFFF mov eax, 0xfffffff4 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 +100002A: B8F8FFFFFF mov eax, 0xfffffff8 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 +1000031: 8B03 mov eax, dword ptr [ebx] +1000033: 50 push eax +1000034: 5B pop ebx +1000035: 58 pop eax +1000036: 29D8 sub eax, ebx +1000038: 50 push eax +1000039: 55 push ebp +100003A: 5B pop ebx +100003B: B804000000 mov eax, 4 +1000040: 29C3 sub ebx, eax +1000042: 58 pop eax +1000043: 8903 mov dword ptr [ebx], eax +1000045: 55 push ebp +1000046: 5B pop ebx +1000047: B804000000 mov eax, 4 +100004C: 29C3 sub ebx, eax +100004E: 8B03 mov eax, dword ptr [ebx] +1000050: 50 push eax +1000051: 58 pop eax +1000052: A374000001 mov dword ptr [0x1000074], eax +1000057: B804000000 mov eax, 4 +100005C: 01C4 add esp, eax +100005E: 5D pop ebp +100005F: C20800 ret 8 +1000062: B82B000000 mov eax, 0x2b +1000067: 50 push eax +1000068: B801000000 mov eax, 1 +100006D: 50 push eax +100006E: E88FFFFFFF call 0x1000002 +1000073: F4 hlt +data: +01000074: 01000000 core start 1000000 -data start 100005d +data start 1000074 data size 4 stack start 1800000 Single step execution: -- iteration 1 -1000000: EB4F jmp 0x1000051 -EIP: 01000051 +1000000: EB60 jmp 0x1000062 +EIP: 01000062 ESP: 01800000 EBP: 01800000 EAX: 00000000 @@ -59,13 +71,13 @@ ESI: 00000000 EDI: 00000000 stack: data: -0100005D: 01000000 +01000074: 01000000 -- iteration 2 -1000051: B82A000000 mov eax, 0x2a -EIP: 01000056 +1000062: B82B000000 mov eax, 0x2b +EIP: 01000067 ESP: 01800000 EBP: 01800000 -EAX: 0000002A +EAX: 0000002B EBX: 00000000 ECX: 00000000 EDX: 00000000 @@ -73,95 +85,130 @@ ESI: 00000000 EDI: 00000000 stack: data: -0100005D: 01000000 +01000074: 01000000 -- iteration 3 -1000056: 50 push eax -EIP: 01000057 +1000067: 50 push eax +EIP: 01000068 ESP: 017FFFFC EBP: 01800000 -EAX: 0000002A +EAX: 0000002B EBX: 00000000 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFFC: 0000002A +017FFFFC: 0000002B data: -0100005D: 01000000 +01000074: 01000000 -- iteration 4 -1000057: E8A6FFFFFF call 0x1000002 -EIP: 01000002 -ESP: 017FFFF8 +1000068: B801000000 mov eax, 1 +EIP: 0100006D +ESP: 017FFFFC EBP: 01800000 -EAX: 0000002A +EAX: 00000001 EBX: 00000000 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFFC: 0000002B data: -0100005D: 01000000 +01000074: 01000000 -- iteration 5 +100006D: 50 push eax +EIP: 0100006E +ESP: 017FFFF8 +EBP: 01800000 +EAX: 00000001 +EBX: 00000000 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF8: 00000001 +017FFFFC: 0000002B +data: +01000074: 01000000 +-- iteration 6 +100006E: E88FFFFFFF call 0x1000002 +EIP: 01000002 +ESP: 017FFFF4 +EBP: 01800000 +EAX: 00000001 +EBX: 00000000 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B +data: +01000074: 01000000 +-- iteration 7 1000002: 55 push ebp EIP: 01000003 -ESP: 017FFFF4 +ESP: 017FFFF0 EBP: 01800000 -EAX: 0000002A +EAX: 00000001 EBX: 00000000 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 6 +01000074: 01000000 +-- iteration 8 1000003: 54 push esp EIP: 01000004 -ESP: 017FFFF0 +ESP: 017FFFEC EBP: 01800000 -EAX: 0000002A +EAX: 00000001 EBX: 00000000 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF0: 017FFFF4 -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFEC: 017FFFF0 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 7 +01000074: 01000000 +-- iteration 9 1000004: 5D pop ebp EIP: 01000005 -ESP: 017FFFF4 -EBP: 017FFFF4 -EAX: 0000002A +ESP: 017FFFF0 +EBP: 017FFFF0 +EAX: 00000001 EBX: 00000000 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 8 +01000074: 01000000 +-- iteration 10 1000005: B804000000 mov eax, 4 EIP: 0100000A -ESP: 017FFFF4 -EBP: 017FFFF4 +ESP: 017FFFF0 +EBP: 017FFFF0 EAX: 00000004 EBX: 00000000 ECX: 00000000 @@ -169,16 +216,17 @@ EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 9 +01000074: 01000000 +-- iteration 11 100000A: 29C4 sub esp, eax EIP: 0100000C -ESP: 017FFFF0 -EBP: 017FFFF4 +ESP: 017FFFEC +EBP: 017FFFF0 EAX: 00000004 EBX: 00000000 ECX: 00000000 @@ -186,17 +234,18 @@ EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF0: 017FFFF4 -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFEC: 017FFFF0 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 10 +01000074: 01000000 +-- iteration 12 100000C: 55 push ebp EIP: 0100000D -ESP: 017FFFEC -EBP: 017FFFF4 +ESP: 017FFFE8 +EBP: 017FFFF0 EAX: 00000004 EBX: 00000000 ECX: 00000000 @@ -204,386 +253,471 @@ EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFEC: 017FFFF4 -017FFFF0: 017FFFF4 -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFE8: 017FFFF0 +017FFFEC: 017FFFF0 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 11 +01000074: 01000000 +-- iteration 13 100000D: 5B pop ebx EIP: 0100000E -ESP: 017FFFF0 -EBP: 017FFFF4 +ESP: 017FFFEC +EBP: 017FFFF0 EAX: 00000004 -EBX: 017FFFF4 +EBX: 017FFFF0 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF0: 017FFFF4 -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFEC: 017FFFF0 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 12 +01000074: 01000000 +-- iteration 14 100000E: B804000000 mov eax, 4 EIP: 01000013 -ESP: 017FFFF0 -EBP: 017FFFF4 +ESP: 017FFFEC +EBP: 017FFFF0 EAX: 00000004 -EBX: 017FFFF4 +EBX: 017FFFF0 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF0: 017FFFF4 -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFEC: 017FFFF0 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 13 +01000074: 01000000 +-- iteration 15 1000013: 29C3 sub ebx, eax EIP: 01000015 -ESP: 017FFFF0 -EBP: 017FFFF4 +ESP: 017FFFEC +EBP: 017FFFF0 EAX: 00000004 -EBX: 017FFFF0 +EBX: 017FFFEC ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF0: 017FFFF4 -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFEC: 017FFFF0 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 14 +01000074: 01000000 +-- iteration 16 1000015: B800000000 mov eax, 0 EIP: 0100001A -ESP: 017FFFF0 -EBP: 017FFFF4 +ESP: 017FFFEC +EBP: 017FFFF0 EAX: 00000000 -EBX: 017FFFF0 +EBX: 017FFFEC ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF0: 017FFFF4 -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFEC: 017FFFF0 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 15 +01000074: 01000000 +-- iteration 17 100001A: 8903 mov dword ptr [ebx], eax EIP: 0100001C -ESP: 017FFFF0 -EBP: 017FFFF4 +ESP: 017FFFEC +EBP: 017FFFF0 EAX: 00000000 -EBX: 017FFFF0 +EBX: 017FFFEC ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF0: 00000000 -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFEC: 00000000 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 16 +01000074: 01000000 +-- iteration 18 100001C: 55 push ebp EIP: 0100001D -ESP: 017FFFEC -EBP: 017FFFF4 +ESP: 017FFFE8 +EBP: 017FFFF0 EAX: 00000000 -EBX: 017FFFF0 +EBX: 017FFFEC ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFEC: 017FFFF4 -017FFFF0: 00000000 -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFE8: 017FFFF0 +017FFFEC: 00000000 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 17 +01000074: 01000000 +-- iteration 19 100001D: 5B pop ebx EIP: 0100001E -ESP: 017FFFF0 -EBP: 017FFFF4 +ESP: 017FFFEC +EBP: 017FFFF0 EAX: 00000000 -EBX: 017FFFF4 +EBX: 017FFFF0 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF0: 00000000 -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFEC: 00000000 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 18 -100001E: B8F8FFFFFF mov eax, 0xfffffff8 +01000074: 01000000 +-- iteration 20 +100001E: B8F4FFFFFF mov eax, 0xfffffff4 EIP: 01000023 -ESP: 017FFFF0 -EBP: 017FFFF4 -EAX: FFFFFFF8 -EBX: 017FFFF4 +ESP: 017FFFEC +EBP: 017FFFF0 +EAX: FFFFFFF4 +EBX: 017FFFF0 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF0: 00000000 -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFEC: 00000000 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 19 +01000074: 01000000 +-- iteration 21 1000023: 29C3 sub ebx, eax EIP: 01000025 -ESP: 017FFFF0 -EBP: 017FFFF4 -EAX: FFFFFFF8 +ESP: 017FFFEC +EBP: 017FFFF0 +EAX: FFFFFFF4 EBX: 017FFFFC ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF0: 00000000 -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFEC: 00000000 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 20 +01000074: 01000000 +-- iteration 22 1000025: 8B03 mov eax, dword ptr [ebx] EIP: 01000027 -ESP: 017FFFF0 -EBP: 017FFFF4 -EAX: 0000002A +ESP: 017FFFEC +EBP: 017FFFF0 +EAX: 0000002B EBX: 017FFFFC ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF0: 00000000 -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFEC: 00000000 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 21 +01000074: 01000000 +-- iteration 23 1000027: 50 push eax EIP: 01000028 -ESP: 017FFFEC -EBP: 017FFFF4 -EAX: 0000002A +ESP: 017FFFE8 +EBP: 017FFFF0 +EAX: 0000002B EBX: 017FFFFC ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFEC: 0000002A -017FFFF0: 00000000 -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFE8: 0000002B +017FFFEC: 00000000 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 22 +01000074: 01000000 +-- iteration 24 1000028: 55 push ebp EIP: 01000029 -ESP: 017FFFE8 -EBP: 017FFFF4 -EAX: 0000002A +ESP: 017FFFE4 +EBP: 017FFFF0 +EAX: 0000002B EBX: 017FFFFC ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFE8: 017FFFF4 -017FFFEC: 0000002A -017FFFF0: 00000000 -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFE4: 017FFFF0 +017FFFE8: 0000002B +017FFFEC: 00000000 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 23 +01000074: 01000000 +-- iteration 25 1000029: 5B pop ebx EIP: 0100002A -ESP: 017FFFEC -EBP: 017FFFF4 -EAX: 0000002A -EBX: 017FFFF4 +ESP: 017FFFE8 +EBP: 017FFFF0 +EAX: 0000002B +EBX: 017FFFF0 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFEC: 0000002A -017FFFF0: 00000000 -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFE8: 0000002B +017FFFEC: 00000000 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 24 -100002A: B804000000 mov eax, 4 +01000074: 01000000 +-- iteration 26 +100002A: B8F8FFFFFF mov eax, 0xfffffff8 EIP: 0100002F -ESP: 017FFFEC -EBP: 017FFFF4 -EAX: 00000004 -EBX: 017FFFF4 +ESP: 017FFFE8 +EBP: 017FFFF0 +EAX: FFFFFFF8 +EBX: 017FFFF0 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFEC: 0000002A -017FFFF0: 00000000 -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFE8: 0000002B +017FFFEC: 00000000 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 25 +01000074: 01000000 +-- iteration 27 100002F: 29C3 sub ebx, eax EIP: 01000031 -ESP: 017FFFEC -EBP: 017FFFF4 -EAX: 00000004 -EBX: 017FFFF0 +ESP: 017FFFE8 +EBP: 017FFFF0 +EAX: FFFFFFF8 +EBX: 017FFFF8 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFEC: 0000002A -017FFFF0: 00000000 -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFE8: 0000002B +017FFFEC: 00000000 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 26 -1000031: 58 pop eax -EIP: 01000032 -ESP: 017FFFF0 -EBP: 017FFFF4 -EAX: 0000002A -EBX: 017FFFF0 +01000074: 01000000 +-- iteration 28 +1000031: 8B03 mov eax, dword ptr [ebx] +EIP: 01000033 +ESP: 017FFFE8 +EBP: 017FFFF0 +EAX: 00000001 +EBX: 017FFFF8 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF0: 00000000 -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFE8: 0000002B +017FFFEC: 00000000 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 27 -1000032: 8903 mov dword ptr [ebx], eax +01000074: 01000000 +-- iteration 29 +1000033: 50 push eax EIP: 01000034 -ESP: 017FFFF0 -EBP: 017FFFF4 -EAX: 0000002A -EBX: 017FFFF0 +ESP: 017FFFE4 +EBP: 017FFFF0 +EAX: 00000001 +EBX: 017FFFF8 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF0: 0000002A -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFE4: 00000001 +017FFFE8: 0000002B +017FFFEC: 00000000 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 28 -1000034: 55 push ebp +01000074: 01000000 +-- iteration 30 +1000034: 5B pop ebx EIP: 01000035 +ESP: 017FFFE8 +EBP: 017FFFF0 +EAX: 00000001 +EBX: 00000001 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFE8: 0000002B +017FFFEC: 00000000 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B +data: +01000074: 01000000 +-- iteration 31 +1000035: 58 pop eax +EIP: 01000036 +ESP: 017FFFEC +EBP: 017FFFF0 +EAX: 0000002B +EBX: 00000001 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFEC: 00000000 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B +data: +01000074: 01000000 +-- iteration 32 +1000036: 29D8 sub eax, ebx +EIP: 01000038 ESP: 017FFFEC -EBP: 017FFFF4 +EBP: 017FFFF0 EAX: 0000002A -EBX: 017FFFF0 +EBX: 00000001 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFEC: 017FFFF4 -017FFFF0: 0000002A -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFEC: 00000000 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 29 -1000035: 5B pop ebx -EIP: 01000036 -ESP: 017FFFF0 -EBP: 017FFFF4 +01000074: 01000000 +-- iteration 33 +1000038: 50 push eax +EIP: 01000039 +ESP: 017FFFE8 +EBP: 017FFFF0 EAX: 0000002A -EBX: 017FFFF4 +EBX: 00000001 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF0: 0000002A -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFE8: 0000002A +017FFFEC: 00000000 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 30 -1000036: B804000000 mov eax, 4 +01000074: 01000000 +-- iteration 34 +1000039: 55 push ebp +EIP: 0100003A +ESP: 017FFFE4 +EBP: 017FFFF0 +EAX: 0000002A +EBX: 00000001 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFE4: 017FFFF0 +017FFFE8: 0000002A +017FFFEC: 00000000 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B +data: +01000074: 01000000 +-- iteration 35 +100003A: 5B pop ebx EIP: 0100003B -ESP: 017FFFF0 -EBP: 017FFFF4 -EAX: 00000004 -EBX: 017FFFF4 +ESP: 017FFFE8 +EBP: 017FFFF0 +EAX: 0000002A +EBX: 017FFFF0 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF0: 0000002A -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFE8: 0000002A +017FFFEC: 00000000 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 31 -100003B: 29C3 sub ebx, eax -EIP: 0100003D -ESP: 017FFFF0 -EBP: 017FFFF4 +01000074: 01000000 +-- iteration 36 +100003B: B804000000 mov eax, 4 +EIP: 01000040 +ESP: 017FFFE8 +EBP: 017FFFF0 EAX: 00000004 EBX: 017FFFF0 ECX: 00000000 @@ -591,72 +725,97 @@ EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF0: 0000002A -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFE8: 0000002A +017FFFEC: 00000000 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 32 -100003D: 8B03 mov eax, dword ptr [ebx] -EIP: 0100003F -ESP: 017FFFF0 -EBP: 017FFFF4 +01000074: 01000000 +-- iteration 37 +1000040: 29C3 sub ebx, eax +EIP: 01000042 +ESP: 017FFFE8 +EBP: 017FFFF0 +EAX: 00000004 +EBX: 017FFFEC +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFE8: 0000002A +017FFFEC: 00000000 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B +data: +01000074: 01000000 +-- iteration 38 +1000042: 58 pop eax +EIP: 01000043 +ESP: 017FFFEC +EBP: 017FFFF0 EAX: 0000002A -EBX: 017FFFF0 +EBX: 017FFFEC ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF0: 0000002A -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFEC: 00000000 +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 33 -100003F: 50 push eax -EIP: 01000040 +01000074: 01000000 +-- iteration 39 +1000043: 8903 mov dword ptr [ebx], eax +EIP: 01000045 ESP: 017FFFEC -EBP: 017FFFF4 +EBP: 017FFFF0 EAX: 0000002A -EBX: 017FFFF0 +EBX: 017FFFEC ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: 017FFFEC: 0000002A -017FFFF0: 0000002A -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 34 -1000040: 58 pop eax -EIP: 01000041 -ESP: 017FFFF0 -EBP: 017FFFF4 +01000074: 01000000 +-- iteration 40 +1000045: 55 push ebp +EIP: 01000046 +ESP: 017FFFE8 +EBP: 017FFFF0 EAX: 0000002A -EBX: 017FFFF0 +EBX: 017FFFEC ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF0: 0000002A -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFE8: 017FFFF0 +017FFFEC: 0000002A +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 01000000 --- iteration 35 -1000041: A35D000001 mov dword ptr [0x100005d], eax -EIP: 01000046 -ESP: 017FFFF0 -EBP: 017FFFF4 +01000074: 01000000 +-- iteration 41 +1000046: 5B pop ebx +EIP: 01000047 +ESP: 017FFFEC +EBP: 017FFFF0 EAX: 0000002A EBX: 017FFFF0 ECX: 00000000 @@ -664,17 +823,18 @@ EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF0: 0000002A -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFEC: 0000002A +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 2A000000 --- iteration 36 -1000046: B804000000 mov eax, 4 -EIP: 0100004B -ESP: 017FFFF0 -EBP: 017FFFF4 +01000074: 01000000 +-- iteration 42 +1000047: B804000000 mov eax, 4 +EIP: 0100004C +ESP: 017FFFEC +EBP: 017FFFF0 EAX: 00000004 EBX: 017FFFF0 ECX: 00000000 @@ -682,70 +842,188 @@ EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF0: 0000002A -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFEC: 0000002A +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 2A000000 --- iteration 37 -100004B: 01C4 add esp, eax -EIP: 0100004D -ESP: 017FFFF4 -EBP: 017FFFF4 +01000074: 01000000 +-- iteration 43 +100004C: 29C3 sub ebx, eax +EIP: 0100004E +ESP: 017FFFEC +EBP: 017FFFF0 EAX: 00000004 -EBX: 017FFFF0 +EBX: 017FFFEC ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF4: 01800000 -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFEC: 0000002A +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 2A000000 --- iteration 38 -100004D: 5D pop ebp -EIP: 0100004E -ESP: 017FFFF8 +01000074: 01000000 +-- iteration 44 +100004E: 8B03 mov eax, dword ptr [ebx] +EIP: 01000050 +ESP: 017FFFEC +EBP: 017FFFF0 +EAX: 0000002A +EBX: 017FFFEC +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFEC: 0000002A +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B +data: +01000074: 01000000 +-- iteration 45 +1000050: 50 push eax +EIP: 01000051 +ESP: 017FFFE8 +EBP: 017FFFF0 +EAX: 0000002A +EBX: 017FFFEC +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFE8: 0000002A +017FFFEC: 0000002A +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B +data: +01000074: 01000000 +-- iteration 46 +1000051: 58 pop eax +EIP: 01000052 +ESP: 017FFFEC +EBP: 017FFFF0 +EAX: 0000002A +EBX: 017FFFEC +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFEC: 0000002A +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B +data: +01000074: 01000000 +-- iteration 47 +1000052: A374000001 mov dword ptr [0x1000074], eax +EIP: 01000057 +ESP: 017FFFEC +EBP: 017FFFF0 +EAX: 0000002A +EBX: 017FFFEC +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFEC: 0000002A +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B +data: +01000074: 2A000000 +-- iteration 48 +1000057: B804000000 mov eax, 4 +EIP: 0100005C +ESP: 017FFFEC +EBP: 017FFFF0 +EAX: 00000004 +EBX: 017FFFEC +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFEC: 0000002A +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B +data: +01000074: 2A000000 +-- iteration 49 +100005C: 01C4 add esp, eax +EIP: 0100005E +ESP: 017FFFF0 +EBP: 017FFFF0 +EAX: 00000004 +EBX: 017FFFEC +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF0: 01800000 +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B +data: +01000074: 2A000000 +-- iteration 50 +100005E: 5D pop ebp +EIP: 0100005F +ESP: 017FFFF4 EBP: 01800000 EAX: 00000004 -EBX: 017FFFF0 +EBX: 017FFFEC ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF8: 0100005C -017FFFFC: 0000002A +017FFFF4: 01000073 +017FFFF8: 00000001 +017FFFFC: 0000002B data: -0100005D: 2A000000 --- iteration 39 -100004E: C20400 ret 4 -EIP: 0100005C +01000074: 2A000000 +-- iteration 51 +100005F: C20800 ret 8 +EIP: 01000073 ESP: 01800000 EBP: 01800000 EAX: 00000004 -EBX: 017FFFF0 +EBX: 017FFFEC ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: data: -0100005D: 2A000000 --- iteration 40 -100005C: F4 hlt -EIP: 0100005D +01000074: 2A000000 +-- iteration 52 +1000073: F4 hlt +EIP: 01000074 ESP: 01800000 EBP: 01800000 EAX: 00000004 -EBX: 017FFFF0 +EBX: 017FFFEC ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: data: -0100005D: 2A000000 +01000074: 2A000000 -- cgit v1.2.3-54-g00ecf