From 3e51c4b9c32425a435d090636ea04dce25c3bf24 Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Sun, 9 Aug 2020 20:54:03 +0200 Subject: got local variables right (also with arrays) --- ecomp-c/ec.c | 71 +- ecomp-c/tests/procedure_local_variables.e | 2 +- ecomp-c/tests/procedure_local_variables.easm | 55 + ecomp-c/tests/procedure_local_variables.easm_err | 0 ecomp-c/tests/procedure_local_variables.ecomp_err | 0 ecomp-c/tests/procedure_local_variables.erun | 751 +++++++++ ecomp-c/tests/procedure_scoping.e | 2 +- ecomp-c/tests/procedure_scoping.easm | 26 +- ecomp-c/tests/procedure_scoping.erun | 1831 ++++++++++++++++----- 9 files changed, 2279 insertions(+), 459 deletions(-) create mode 100644 ecomp-c/tests/procedure_local_variables.easm create mode 100644 ecomp-c/tests/procedure_local_variables.easm_err create mode 100644 ecomp-c/tests/procedure_local_variables.ecomp_err create mode 100644 ecomp-c/tests/procedure_local_variables.erun diff --git a/ecomp-c/ec.c b/ecomp-c/ec.c index 46ee4b4..5b72bfc 100644 --- a/ecomp-c/ec.c +++ b/ecomp-c/ec.c @@ -911,11 +911,22 @@ static int get_size( Symbol *symbol ); static void EmitArrayAddress( Symbol *array ) { + /* expecting result of expression (the array index) on top of the stack + * and an array symbol */ Emit( "pop eax\n" ); Emit( "mov ebx, %d\n", get_size( array->type->type ) ); Emit( "mul ebx\n" ); Emit( "push eax\n" ); - Emit( "mov eax, %s\n", array->name ); + if( array->offset == 0 ) { + /* global variable */ + Emit( "mov eax, %s\n", array->name ); + } else { + /* local variable */ + Emit( "push ebp\n" ); + Emit( "pop eax\n" ); + Emit( "mov ebx, %d\n", array->offset ); + Emit( "sub eax, ebx\n" ); + } Emit( "pop ebx\n" ); Emit( "add eax, ebx\n" ); Emit( "push eax\n" ); @@ -1003,7 +1014,7 @@ static int get_size( Symbol *symbol ) case SYMBOL_CLASS_SIMPLE_TYPE: return symbol->size; case SYMBOL_CLASS_ARRAY_TYPE: - return symbol->dim * symbol->size; + return symbol->dim * get_size( symbol->type ); default: Abort( "No size for class '%d", symbol->class ); } @@ -2023,14 +2034,16 @@ static void parseProcedureBlock( Scope *scope ) parseProcedureDeclarationBlock( symbol->scope ); /* compute sizes of all locals */ - offset = 4; + offset = 0; scope->size_locals = 0; sym = symbol->scope->symbol; while( sym != NULL ) { if( sym->class == SYMBOL_CLASS_VARIABLE ) { int size = get_size( sym ); scope->size_locals += size; - sym->offset = offset; + sym->offset = offset + size; + Emit( "; local %s, offset: %d, size: %d\n", + sym->name, sym->offset, size ); offset += size; } sym = sym->next; @@ -2049,27 +2062,35 @@ static void parseProcedureBlock( Scope *scope ) if( sym->class == SYMBOL_CLASS_VARIABLE ) { /* TODO: use type here! */ int size = get_size( sym ); - switch( size ) { - case 4: - /* TODO: cleanup local global variable access */ - Emit( "push ebp\n" ); - Emit( "pop ebx\n" ); - Emit( "mov eax, %d\n", sym->offset ); - Emit( "sub ebx, eax\n" ); - Emit( "mov eax, %d\n", sym->integer_value ); - Emit( "mov [ebx], eax\n" ); - break; - case 1: - /* TODO: cleanup local global variable access */ - Emit( "push ebp\n" ); - Emit( "pop ebx\n" ); - Emit( "mov eax, %d\n", sym->offset ); - Emit( "sub ebx, eax\n" ); - Emit( "mov eax, %d\n", sym->boolean_value ); - Emit( "mov [ebx], al\n" ); - break; - default: - Abort( "Not handled case when initializing local variable '%s' on stack", symbol->name ); + if( sym->type == integer_type || sym->type == boolean_type ) { + switch( size ) { + case 4: + /* TODO: cleanup local global variable access */ + Emit( "push ebp\n" ); + Emit( "pop ebx\n" ); + Emit( "mov eax, %d\n", sym->offset ); + Emit( "sub ebx, eax\n" ); + Emit( "mov eax, %d\n", sym->integer_value ); + Emit( "mov [ebx], eax\n" ); + break; + case 1: + /* TODO: cleanup local global variable access */ + Emit( "push ebp\n" ); + Emit( "pop ebx\n" ); + Emit( "mov eax, %d\n", sym->offset ); + Emit( "sub ebx, eax\n" ); + Emit( "mov eax, %d\n", sym->boolean_value ); + Emit( "mov [ebx], al\n" ); + break; + default: + Abort( "Unhandled case when initializing local variable '%s' of primitive type on stack", sym->name ); + } + } else if( sym->type->class == SYMBOL_CLASS_ARRAY_TYPE ) { + /* TODO: we would need an internal memset here + * memset( ebp + offset, get_size, 0 ) + */ + } else { + Abort( "Unhandled case when initializing local variable '%s' of complex type on stack", sym->name ); } } sym = sym->next; diff --git a/ecomp-c/tests/procedure_local_variables.e b/ecomp-c/tests/procedure_local_variables.e index 31373ea..e8c9225 100644 --- a/ecomp-c/tests/procedure_local_variables.e +++ b/ecomp-c/tests/procedure_local_variables.e @@ -18,7 +18,7 @@ var begin j := i; - i := j; + i := k; end begin diff --git a/ecomp-c/tests/procedure_local_variables.easm b/ecomp-c/tests/procedure_local_variables.easm new file mode 100644 index 0000000..88312af --- /dev/null +++ b/ecomp-c/tests/procedure_local_variables.easm @@ -0,0 +1,55 @@ +format binary +use32 +org $1000000 +jmp __global_0 +; DECL i -> integer, 1 +; PROC proc +__global_proc: +push ebp +push esp +pop ebp +; CONST C -> integer, 42 +; DECL j -> integer, 0 +; DECL k -> integer, 42 +; local k, offset: 4, size: 4 +; local j, offset: 8, size: 4 +mov eax, 8 +sub esp, eax +push ebp +pop ebx +mov eax, 4 +sub ebx, eax +mov eax, 42 +mov [ebx], eax +push ebp +pop ebx +mov eax, 8 +sub ebx, eax +mov eax, 0 +mov [ebx], eax +; LET j <- i +mov eax, [i] +push eax +push ebp +pop ebx +mov eax, 8 +sub ebx, eax +pop eax +mov [ebx], eax +; LET i <- k +push ebp +pop ebx +mov eax, 4 +sub ebx, eax +mov eax, [ebx] +push eax +pop eax +mov [i], eax +mov eax, 8 +add esp, eax +pop ebp +ret +__global_0: +call __global_proc +hlt +i: dd $00000001 diff --git a/ecomp-c/tests/procedure_local_variables.easm_err b/ecomp-c/tests/procedure_local_variables.easm_err new file mode 100644 index 0000000..e69de29 diff --git a/ecomp-c/tests/procedure_local_variables.ecomp_err b/ecomp-c/tests/procedure_local_variables.ecomp_err new file mode 100644 index 0000000..e69de29 diff --git a/ecomp-c/tests/procedure_local_variables.erun b/ecomp-c/tests/procedure_local_variables.erun new file mode 100644 index 0000000..a9110d9 --- /dev/null +++ b/ecomp-c/tests/procedure_local_variables.erun @@ -0,0 +1,751 @@ +Read 99 bytes of code and static data.. +1000000: EB57 jmp 0x1000059 +1000002: 55 push ebp +1000003: 54 push esp +1000004: 5D pop ebp +1000005: B808000000 mov eax, 8 +100000A: 29C4 sub esp, eax +100000C: 55 push ebp +100000D: 5B pop ebx +100000E: B804000000 mov eax, 4 +1000013: 29C3 sub ebx, eax +1000015: B82A000000 mov eax, 0x2a +100001A: 8903 mov dword ptr [ebx], eax +100001C: 55 push ebp +100001D: 5B pop ebx +100001E: B808000000 mov eax, 8 +1000023: 29C3 sub ebx, eax +1000025: B800000000 mov eax, 0 +100002A: 8903 mov dword ptr [ebx], eax +100002C: A15F000001 mov eax, dword ptr [0x100005f] +1000031: 50 push eax +1000032: 55 push ebp +1000033: 5B pop ebx +1000034: B808000000 mov eax, 8 +1000039: 29C3 sub ebx, eax +100003B: 58 pop eax +100003C: 8903 mov dword ptr [ebx], eax +100003E: 55 push ebp +100003F: 5B pop ebx +1000040: B804000000 mov eax, 4 +1000045: 29C3 sub ebx, eax +1000047: 8B03 mov eax, dword ptr [ebx] +1000049: 50 push eax +100004A: 58 pop eax +100004B: A35F000001 mov dword ptr [0x100005f], eax +1000050: B808000000 mov eax, 8 +1000055: 01C4 add esp, eax +1000057: 5D pop ebp +1000058: C3 ret +1000059: E8A4FFFFFF call 0x1000002 +100005E: F4 hlt +data: +0100005F: 01000000 +core start 1000000 +data start 100005f +data size 4 +stack start 1800000 +Single step execution: +-- iteration 1 +1000000: EB57 jmp 0x1000059 +EIP: 01000059 +ESP: 01800000 +EBP: 01800000 +EAX: 00000000 +EBX: 00000000 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +data: +0100005F: 01000000 +-- iteration 2 +1000059: E8A4FFFFFF call 0x1000002 +EIP: 01000002 +ESP: 017FFFFC +EBP: 01800000 +EAX: 00000000 +EBX: 00000000 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 3 +1000002: 55 push ebp +EIP: 01000003 +ESP: 017FFFF8 +EBP: 01800000 +EAX: 00000000 +EBX: 00000000 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 4 +1000003: 54 push esp +EIP: 01000004 +ESP: 017FFFF4 +EBP: 01800000 +EAX: 00000000 +EBX: 00000000 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF4: 017FFFF8 +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 5 +1000004: 5D pop ebp +EIP: 01000005 +ESP: 017FFFF8 +EBP: 017FFFF8 +EAX: 00000000 +EBX: 00000000 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 6 +1000005: B808000000 mov eax, 8 +EIP: 0100000A +ESP: 017FFFF8 +EBP: 017FFFF8 +EAX: 00000008 +EBX: 00000000 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 7 +100000A: 29C4 sub esp, eax +EIP: 0100000C +ESP: 017FFFF0 +EBP: 017FFFF8 +EAX: 00000008 +EBX: 00000000 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF0: 00000000 +017FFFF4: 017FFFF8 +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 8 +100000C: 55 push ebp +EIP: 0100000D +ESP: 017FFFEC +EBP: 017FFFF8 +EAX: 00000008 +EBX: 00000000 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFEC: 017FFFF8 +017FFFF0: 00000000 +017FFFF4: 017FFFF8 +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 9 +100000D: 5B pop ebx +EIP: 0100000E +ESP: 017FFFF0 +EBP: 017FFFF8 +EAX: 00000008 +EBX: 017FFFF8 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF0: 00000000 +017FFFF4: 017FFFF8 +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 10 +100000E: B804000000 mov eax, 4 +EIP: 01000013 +ESP: 017FFFF0 +EBP: 017FFFF8 +EAX: 00000004 +EBX: 017FFFF8 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF0: 00000000 +017FFFF4: 017FFFF8 +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 11 +1000013: 29C3 sub ebx, eax +EIP: 01000015 +ESP: 017FFFF0 +EBP: 017FFFF8 +EAX: 00000004 +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF0: 00000000 +017FFFF4: 017FFFF8 +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 12 +1000015: B82A000000 mov eax, 0x2a +EIP: 0100001A +ESP: 017FFFF0 +EBP: 017FFFF8 +EAX: 0000002A +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF0: 00000000 +017FFFF4: 017FFFF8 +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 13 +100001A: 8903 mov dword ptr [ebx], eax +EIP: 0100001C +ESP: 017FFFF0 +EBP: 017FFFF8 +EAX: 0000002A +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF0: 00000000 +017FFFF4: 0000002A +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 14 +100001C: 55 push ebp +EIP: 0100001D +ESP: 017FFFEC +EBP: 017FFFF8 +EAX: 0000002A +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFEC: 017FFFF8 +017FFFF0: 00000000 +017FFFF4: 0000002A +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 15 +100001D: 5B pop ebx +EIP: 0100001E +ESP: 017FFFF0 +EBP: 017FFFF8 +EAX: 0000002A +EBX: 017FFFF8 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF0: 00000000 +017FFFF4: 0000002A +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 16 +100001E: B808000000 mov eax, 8 +EIP: 01000023 +ESP: 017FFFF0 +EBP: 017FFFF8 +EAX: 00000008 +EBX: 017FFFF8 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF0: 00000000 +017FFFF4: 0000002A +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 17 +1000023: 29C3 sub ebx, eax +EIP: 01000025 +ESP: 017FFFF0 +EBP: 017FFFF8 +EAX: 00000008 +EBX: 017FFFF0 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF0: 00000000 +017FFFF4: 0000002A +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 18 +1000025: B800000000 mov eax, 0 +EIP: 0100002A +ESP: 017FFFF0 +EBP: 017FFFF8 +EAX: 00000000 +EBX: 017FFFF0 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF0: 00000000 +017FFFF4: 0000002A +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 19 +100002A: 8903 mov dword ptr [ebx], eax +EIP: 0100002C +ESP: 017FFFF0 +EBP: 017FFFF8 +EAX: 00000000 +EBX: 017FFFF0 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF0: 00000000 +017FFFF4: 0000002A +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 20 +100002C: A15F000001 mov eax, dword ptr [0x100005f] +EIP: 01000031 +ESP: 017FFFF0 +EBP: 017FFFF8 +EAX: 00000001 +EBX: 017FFFF0 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF0: 00000000 +017FFFF4: 0000002A +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 21 +1000031: 50 push eax +EIP: 01000032 +ESP: 017FFFEC +EBP: 017FFFF8 +EAX: 00000001 +EBX: 017FFFF0 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFEC: 00000001 +017FFFF0: 00000000 +017FFFF4: 0000002A +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 22 +1000032: 55 push ebp +EIP: 01000033 +ESP: 017FFFE8 +EBP: 017FFFF8 +EAX: 00000001 +EBX: 017FFFF0 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFE8: 017FFFF8 +017FFFEC: 00000001 +017FFFF0: 00000000 +017FFFF4: 0000002A +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 23 +1000033: 5B pop ebx +EIP: 01000034 +ESP: 017FFFEC +EBP: 017FFFF8 +EAX: 00000001 +EBX: 017FFFF8 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFEC: 00000001 +017FFFF0: 00000000 +017FFFF4: 0000002A +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 24 +1000034: B808000000 mov eax, 8 +EIP: 01000039 +ESP: 017FFFEC +EBP: 017FFFF8 +EAX: 00000008 +EBX: 017FFFF8 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFEC: 00000001 +017FFFF0: 00000000 +017FFFF4: 0000002A +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 25 +1000039: 29C3 sub ebx, eax +EIP: 0100003B +ESP: 017FFFEC +EBP: 017FFFF8 +EAX: 00000008 +EBX: 017FFFF0 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFEC: 00000001 +017FFFF0: 00000000 +017FFFF4: 0000002A +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 26 +100003B: 58 pop eax +EIP: 0100003C +ESP: 017FFFF0 +EBP: 017FFFF8 +EAX: 00000001 +EBX: 017FFFF0 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF0: 00000000 +017FFFF4: 0000002A +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 27 +100003C: 8903 mov dword ptr [ebx], eax +EIP: 0100003E +ESP: 017FFFF0 +EBP: 017FFFF8 +EAX: 00000001 +EBX: 017FFFF0 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF0: 00000001 +017FFFF4: 0000002A +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 28 +100003E: 55 push ebp +EIP: 0100003F +ESP: 017FFFEC +EBP: 017FFFF8 +EAX: 00000001 +EBX: 017FFFF0 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFEC: 017FFFF8 +017FFFF0: 00000001 +017FFFF4: 0000002A +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 29 +100003F: 5B pop ebx +EIP: 01000040 +ESP: 017FFFF0 +EBP: 017FFFF8 +EAX: 00000001 +EBX: 017FFFF8 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF0: 00000001 +017FFFF4: 0000002A +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 30 +1000040: B804000000 mov eax, 4 +EIP: 01000045 +ESP: 017FFFF0 +EBP: 017FFFF8 +EAX: 00000004 +EBX: 017FFFF8 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF0: 00000001 +017FFFF4: 0000002A +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 31 +1000045: 29C3 sub ebx, eax +EIP: 01000047 +ESP: 017FFFF0 +EBP: 017FFFF8 +EAX: 00000004 +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF0: 00000001 +017FFFF4: 0000002A +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 32 +1000047: 8B03 mov eax, dword ptr [ebx] +EIP: 01000049 +ESP: 017FFFF0 +EBP: 017FFFF8 +EAX: 0000002A +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF0: 00000001 +017FFFF4: 0000002A +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 33 +1000049: 50 push eax +EIP: 0100004A +ESP: 017FFFEC +EBP: 017FFFF8 +EAX: 0000002A +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFEC: 0000002A +017FFFF0: 00000001 +017FFFF4: 0000002A +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 34 +100004A: 58 pop eax +EIP: 0100004B +ESP: 017FFFF0 +EBP: 017FFFF8 +EAX: 0000002A +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF0: 00000001 +017FFFF4: 0000002A +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 01000000 +-- iteration 35 +100004B: A35F000001 mov dword ptr [0x100005f], eax +EIP: 01000050 +ESP: 017FFFF0 +EBP: 017FFFF8 +EAX: 0000002A +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF0: 00000001 +017FFFF4: 0000002A +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 2A000000 +-- iteration 36 +1000050: B808000000 mov eax, 8 +EIP: 01000055 +ESP: 017FFFF0 +EBP: 017FFFF8 +EAX: 00000008 +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF0: 00000001 +017FFFF4: 0000002A +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 2A000000 +-- iteration 37 +1000055: 01C4 add esp, eax +EIP: 01000057 +ESP: 017FFFF8 +EBP: 017FFFF8 +EAX: 00000008 +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF8: 01800000 +017FFFFC: 0100005E +data: +0100005F: 2A000000 +-- iteration 38 +1000057: 5D pop ebp +EIP: 01000058 +ESP: 017FFFFC +EBP: 01800000 +EAX: 00000008 +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFFC: 0100005E +data: +0100005F: 2A000000 +-- iteration 39 +1000058: C3 ret +EIP: 0100005E +ESP: 01800000 +EBP: 01800000 +EAX: 00000008 +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +data: +0100005F: 2A000000 +-- iteration 40 +100005E: F4 hlt +EIP: 0100005F +ESP: 01800000 +EBP: 01800000 +EAX: 00000008 +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +data: +0100005F: 2A000000 diff --git a/ecomp-c/tests/procedure_scoping.e b/ecomp-c/tests/procedure_scoping.e index 31d1444..a627656 100644 --- a/ecomp-c/tests/procedure_scoping.e +++ b/ecomp-c/tests/procedure_scoping.e @@ -22,7 +22,7 @@ var z : integer; begin - x[N] := M; + x[N-1] := M; z := 4; end diff --git a/ecomp-c/tests/procedure_scoping.easm b/ecomp-c/tests/procedure_scoping.easm index 8f6dc6f..07106a7 100644 --- a/ecomp-c/tests/procedure_scoping.easm +++ b/ecomp-c/tests/procedure_scoping.easm @@ -15,16 +15,34 @@ pop ebp ; DECL x -> array 2 of integer, array 2 of integer = { ... } ; DECL y -> array 3 of integer, array 3 of integer = { ... } ; DECL z -> integer, 0 -mov eax, 4 +; local z, offset: 4, size: 4 +; local y, offset: 16, size: 12 +; local x, offset: 24, size: 8 +mov eax, 24 sub esp, eax -; LET x[2 ] <- 3 +push ebp +pop ebx +mov eax, 4 +sub ebx, eax +mov eax, 0 +mov [ebx], eax +; LET x[2 1 - ] <- 3 mov eax, 2 push eax +mov eax, 1 +push eax +pop ebx +pop eax +sub eax, ebx +push eax pop eax mov ebx, 4 mul ebx push eax -mov eax, x +push ebp +pop eax +mov ebx, 24 +sub eax, ebx pop ebx add eax, ebx push eax @@ -42,7 +60,7 @@ mov eax, 4 sub ebx, eax pop eax mov [ebx], eax -mov eax, 4 +mov eax, 24 add esp, eax pop ebp ret diff --git a/ecomp-c/tests/procedure_scoping.erun b/ecomp-c/tests/procedure_scoping.erun index f2685b5..4d12fa4 100644 --- a/ecomp-c/tests/procedure_scoping.erun +++ b/ecomp-c/tests/procedure_scoping.erun @@ -1,59 +1,94 @@ -Read 111 bytes of code and static data.. -1000000: EB30 jmp 0x1000032 -1000002: B802000000 mov eax, 2 -1000007: 50 push eax -1000008: 58 pop eax -1000009: BB04000000 mov ebx, 4 -100000E: F7E3 mul ebx -1000010: 50 push eax -1000011: B86B000001 mov eax, 0x100006b -1000016: 5B pop ebx -1000017: 01D8 add eax, ebx -1000019: 50 push eax -100001A: B803000000 mov eax, 3 -100001F: 50 push eax -1000020: 58 pop eax -1000021: 5B pop ebx -1000022: 8903 mov dword ptr [ebx], eax -1000024: C3 ret -1000025: B801000000 mov eax, 1 -100002A: 50 push eax -100002B: 58 pop eax -100002C: A36B000001 mov dword ptr [0x100006b], eax -1000031: C3 ret -1000032: B800000000 mov eax, 0 -1000037: 50 push eax -1000038: 58 pop eax -1000039: BB04000000 mov ebx, 4 -100003E: F7E3 mul ebx -1000040: 50 push eax -1000041: B85F000001 mov eax, 0x100005f -1000046: 5B pop ebx -1000047: 01D8 add eax, ebx -1000049: 50 push eax -100004A: B807000000 mov eax, 7 -100004F: 50 push eax -1000050: 58 pop eax -1000051: 5B pop ebx -1000052: 8903 mov dword ptr [ebx], eax -1000054: E8A9FFFFFF call 0x1000002 -1000059: E8C7FFFFFF call 0x1000025 -100005E: F4 hlt -data: -0100005F: 00000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +Read 182 bytes of code and static data.. +1000000: EB77 jmp 0x1000079 +1000002: 55 push ebp +1000003: 54 push esp +1000004: 5D pop ebp +1000005: B818000000 mov eax, 0x18 +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: B802000000 mov eax, 2 +1000021: 50 push eax +1000022: B801000000 mov eax, 1 +1000027: 50 push eax +1000028: 5B pop ebx +1000029: 58 pop eax +100002A: 29D8 sub eax, ebx +100002C: 50 push eax +100002D: 58 pop eax +100002E: BB04000000 mov ebx, 4 +1000033: F7E3 mul ebx +1000035: 50 push eax +1000036: 55 push ebp +1000037: 58 pop eax +1000038: BB18000000 mov ebx, 0x18 +100003D: 29D8 sub eax, ebx +100003F: 5B pop ebx +1000040: 01D8 add eax, ebx +1000042: 50 push eax +1000043: B803000000 mov eax, 3 +1000048: 50 push eax +1000049: 58 pop eax +100004A: 5B pop ebx +100004B: 8903 mov dword ptr [ebx], eax +100004D: B804000000 mov eax, 4 +1000052: 50 push eax +1000053: 55 push ebp +1000054: 5B pop ebx +1000055: B804000000 mov eax, 4 +100005A: 29C3 sub ebx, eax +100005C: 58 pop eax +100005D: 8903 mov dword ptr [ebx], eax +100005F: B818000000 mov eax, 0x18 +1000064: 01C4 add esp, eax +1000066: 5D pop ebp +1000067: C3 ret +1000068: 55 push ebp +1000069: 54 push esp +100006A: 5D pop ebp +100006B: B801000000 mov eax, 1 +1000070: 50 push eax +1000071: 58 pop eax +1000072: A3B2000001 mov dword ptr [0x10000b2], eax +1000077: 5D pop ebp +1000078: C3 ret +1000079: B800000000 mov eax, 0 +100007E: 50 push eax +100007F: 58 pop eax +1000080: BB04000000 mov ebx, 4 +1000085: F7E3 mul ebx +1000087: 50 push eax +1000088: B8A6000001 mov eax, 0x10000a6 +100008D: 5B pop ebx +100008E: 01D8 add eax, ebx +1000090: 50 push eax +1000091: B807000000 mov eax, 7 +1000096: 50 push eax +1000097: 58 pop eax +1000098: 5B pop ebx +1000099: 8903 mov dword ptr [ebx], eax +100009B: E862FFFFFF call 0x1000002 +10000A0: E8C3FFFFFF call 0x1000068 +10000A5: F4 hlt +data: +010000A6: 00000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 core start 1000000 -data start 100005f +data start 10000a6 data size 10 stack start 1800000 Single step execution: -- iteration 1 -1000000: EB30 jmp 0x1000032 -EIP: 01000032 +1000000: EB77 jmp 0x1000079 +EIP: 01000079 ESP: 01800000 -EBP: 00000000 +EBP: 01800000 EAX: 00000000 EBX: 00000000 ECX: 00000000 @@ -62,15 +97,15 @@ ESI: 00000000 EDI: 00000000 stack: data: -0100005F: 00000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 00000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 2 -1000032: B800000000 mov eax, 0 -EIP: 01000037 +1000079: B800000000 mov eax, 0 +EIP: 0100007E ESP: 01800000 -EBP: 00000000 +EBP: 01800000 EAX: 00000000 EBX: 00000000 ECX: 00000000 @@ -79,15 +114,15 @@ ESI: 00000000 EDI: 00000000 stack: data: -0100005F: 00000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 00000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 3 -1000037: 50 push eax -EIP: 01000038 +100007E: 50 push eax +EIP: 0100007F ESP: 017FFFFC -EBP: 00000000 +EBP: 01800000 EAX: 00000000 EBX: 00000000 ECX: 00000000 @@ -97,15 +132,15 @@ EDI: 00000000 stack: 017FFFFC: 00000000 data: -0100005F: 00000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 00000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 4 -1000038: 58 pop eax -EIP: 01000039 +100007F: 58 pop eax +EIP: 01000080 ESP: 01800000 -EBP: 00000000 +EBP: 01800000 EAX: 00000000 EBX: 00000000 ECX: 00000000 @@ -114,15 +149,15 @@ ESI: 00000000 EDI: 00000000 stack: data: -0100005F: 00000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 00000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 5 -1000039: BB04000000 mov ebx, 4 -EIP: 0100003E +1000080: BB04000000 mov ebx, 4 +EIP: 01000085 ESP: 01800000 -EBP: 00000000 +EBP: 01800000 EAX: 00000000 EBX: 00000004 ECX: 00000000 @@ -131,15 +166,15 @@ ESI: 00000000 EDI: 00000000 stack: data: -0100005F: 00000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 00000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 6 -100003E: F7E3 mul ebx -EIP: 01000040 +1000085: F7E3 mul ebx +EIP: 01000087 ESP: 01800000 -EBP: 00000000 +EBP: 01800000 EAX: 00000000 EBX: 00000004 ECX: 00000000 @@ -148,15 +183,15 @@ ESI: 00000000 EDI: 00000000 stack: data: -0100005F: 00000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 00000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 7 -1000040: 50 push eax -EIP: 01000041 +1000087: 50 push eax +EIP: 01000088 ESP: 017FFFFC -EBP: 00000000 +EBP: 01800000 EAX: 00000000 EBX: 00000004 ECX: 00000000 @@ -166,16 +201,16 @@ EDI: 00000000 stack: 017FFFFC: 00000000 data: -0100005F: 00000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 00000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 8 -1000041: B85F000001 mov eax, 0x100005f -EIP: 01000046 +1000088: B8A6000001 mov eax, 0x10000a6 +EIP: 0100008D ESP: 017FFFFC -EBP: 00000000 -EAX: 0100005F +EBP: 01800000 +EAX: 010000A6 EBX: 00000004 ECX: 00000000 EDX: 00000000 @@ -184,16 +219,16 @@ EDI: 00000000 stack: 017FFFFC: 00000000 data: -0100005F: 00000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 00000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 9 -1000046: 5B pop ebx -EIP: 01000047 +100008D: 5B pop ebx +EIP: 0100008E ESP: 01800000 -EBP: 00000000 -EAX: 0100005F +EBP: 01800000 +EAX: 010000A6 EBX: 00000000 ECX: 00000000 EDX: 00000000 @@ -201,16 +236,16 @@ ESI: 00000000 EDI: 00000000 stack: data: -0100005F: 00000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 00000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 10 -1000047: 01D8 add eax, ebx -EIP: 01000049 +100008E: 01D8 add eax, ebx +EIP: 01000090 ESP: 01800000 -EBP: 00000000 -EAX: 0100005F +EBP: 01800000 +EAX: 010000A6 EBX: 00000000 ECX: 00000000 EDX: 00000000 @@ -218,33 +253,33 @@ ESI: 00000000 EDI: 00000000 stack: data: -0100005F: 00000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 00000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 11 -1000049: 50 push eax -EIP: 0100004A +1000090: 50 push eax +EIP: 01000091 ESP: 017FFFFC -EBP: 00000000 -EAX: 0100005F +EBP: 01800000 +EAX: 010000A6 EBX: 00000000 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFFC: 0100005F +017FFFFC: 010000A6 data: -0100005F: 00000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 00000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 12 -100004A: B807000000 mov eax, 7 -EIP: 0100004F +1000091: B807000000 mov eax, 7 +EIP: 01000096 ESP: 017FFFFC -EBP: 00000000 +EBP: 01800000 EAX: 00000007 EBX: 00000000 ECX: 00000000 @@ -252,17 +287,17 @@ EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFFC: 0100005F +017FFFFC: 010000A6 data: -0100005F: 00000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 00000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 13 -100004F: 50 push eax -EIP: 01000050 +1000096: 50 push eax +EIP: 01000097 ESP: 017FFFF8 -EBP: 00000000 +EBP: 01800000 EAX: 00000007 EBX: 00000000 ECX: 00000000 @@ -271,17 +306,17 @@ ESI: 00000000 EDI: 00000000 stack: 017FFFF8: 00000007 -017FFFFC: 0100005F +017FFFFC: 010000A6 data: -0100005F: 00000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 00000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 14 -1000050: 58 pop eax -EIP: 01000051 +1000097: 58 pop eax +EIP: 01000098 ESP: 017FFFFC -EBP: 00000000 +EBP: 01800000 EAX: 00000007 EBX: 00000000 ECX: 00000000 @@ -289,481 +324,1421 @@ EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFFC: 0100005F +017FFFFC: 010000A6 data: -0100005F: 00000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 00000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 15 -1000051: 5B pop ebx -EIP: 01000052 +1000098: 5B pop ebx +EIP: 01000099 ESP: 01800000 -EBP: 00000000 +EBP: 01800000 EAX: 00000007 -EBX: 0100005F +EBX: 010000A6 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: data: -0100005F: 00000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 00000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 16 -1000052: 8903 mov dword ptr [ebx], eax -EIP: 01000054 +1000099: 8903 mov dword ptr [ebx], eax +EIP: 0100009B ESP: 01800000 -EBP: 00000000 +EBP: 01800000 EAX: 00000007 -EBX: 0100005F +EBX: 010000A6 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 17 -1000054: E8A9FFFFFF call 0x1000002 +100009B: E862FFFFFF call 0x1000002 EIP: 01000002 ESP: 017FFFFC -EBP: 00000000 +EBP: 01800000 EAX: 00000007 -EBX: 0100005F +EBX: 010000A6 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFFC: 01000059 +017FFFFC: 010000A0 data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 18 -1000002: B802000000 mov eax, 2 -EIP: 01000007 -ESP: 017FFFFC -EBP: 00000000 -EAX: 00000002 -EBX: 0100005F +1000002: 55 push ebp +EIP: 01000003 +ESP: 017FFFF8 +EBP: 01800000 +EAX: 00000007 +EBX: 010000A6 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFFC: 01000059 +017FFFF8: 01800000 +017FFFFC: 010000A0 data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 19 -1000007: 50 push eax -EIP: 01000008 -ESP: 017FFFF8 -EBP: 00000000 -EAX: 00000002 -EBX: 0100005F +1000003: 54 push esp +EIP: 01000004 +ESP: 017FFFF4 +EBP: 01800000 +EAX: 00000007 +EBX: 010000A6 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF8: 00000002 -017FFFFC: 01000059 +017FFFF4: 017FFFF8 +017FFFF8: 01800000 +017FFFFC: 010000A0 data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 20 -1000008: 58 pop eax -EIP: 01000009 -ESP: 017FFFFC -EBP: 00000000 -EAX: 00000002 -EBX: 0100005F +1000004: 5D pop ebp +EIP: 01000005 +ESP: 017FFFF8 +EBP: 017FFFF8 +EAX: 00000007 +EBX: 010000A6 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFFC: 01000059 +017FFFF8: 01800000 +017FFFFC: 010000A0 data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 21 -1000009: BB04000000 mov ebx, 4 -EIP: 0100000E -ESP: 017FFFFC -EBP: 00000000 -EAX: 00000002 -EBX: 00000004 +1000005: B818000000 mov eax, 0x18 +EIP: 0100000A +ESP: 017FFFF8 +EBP: 017FFFF8 +EAX: 00000018 +EBX: 010000A6 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFFC: 01000059 +017FFFF8: 01800000 +017FFFFC: 010000A0 data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 22 -100000E: F7E3 mul ebx -EIP: 01000010 -ESP: 017FFFFC -EBP: 00000000 -EAX: 00000008 -EBX: 00000004 +100000A: 29C4 sub esp, eax +EIP: 0100000C +ESP: 017FFFE0 +EBP: 017FFFF8 +EAX: 00000018 +EBX: 010000A6 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFFC: 01000059 +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 017FFFF8 +017FFFF8: 01800000 +017FFFFC: 010000A0 data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 23 -1000010: 50 push eax -EIP: 01000011 -ESP: 017FFFF8 -EBP: 00000000 -EAX: 00000008 -EBX: 00000004 +100000C: 55 push ebp +EIP: 0100000D +ESP: 017FFFDC +EBP: 017FFFF8 +EAX: 00000018 +EBX: 010000A6 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF8: 00000008 -017FFFFC: 01000059 +017FFFDC: 017FFFF8 +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 017FFFF8 +017FFFF8: 01800000 +017FFFFC: 010000A0 data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 24 -1000011: B86B000001 mov eax, 0x100006b -EIP: 01000016 -ESP: 017FFFF8 -EBP: 00000000 -EAX: 0100006B -EBX: 00000004 +100000D: 5B pop ebx +EIP: 0100000E +ESP: 017FFFE0 +EBP: 017FFFF8 +EAX: 00000018 +EBX: 017FFFF8 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF8: 00000008 -017FFFFC: 01000059 +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 017FFFF8 +017FFFF8: 01800000 +017FFFFC: 010000A0 data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 25 -1000016: 5B pop ebx -EIP: 01000017 -ESP: 017FFFFC -EBP: 00000000 -EAX: 0100006B -EBX: 00000008 +100000E: B804000000 mov eax, 4 +EIP: 01000013 +ESP: 017FFFE0 +EBP: 017FFFF8 +EAX: 00000004 +EBX: 017FFFF8 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFFC: 01000059 +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 017FFFF8 +017FFFF8: 01800000 +017FFFFC: 010000A0 data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 26 -1000017: 01D8 add eax, ebx -EIP: 01000019 -ESP: 017FFFFC -EBP: 00000000 -EAX: 01000073 -EBX: 00000008 +1000013: 29C3 sub ebx, eax +EIP: 01000015 +ESP: 017FFFE0 +EBP: 017FFFF8 +EAX: 00000004 +EBX: 017FFFF4 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFFC: 01000059 +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 017FFFF8 +017FFFF8: 01800000 +017FFFFC: 010000A0 data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 27 -1000019: 50 push eax +1000015: B800000000 mov eax, 0 EIP: 0100001A -ESP: 017FFFF8 -EBP: 00000000 -EAX: 01000073 -EBX: 00000008 +ESP: 017FFFE0 +EBP: 017FFFF8 +EAX: 00000000 +EBX: 017FFFF4 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF8: 01000073 -017FFFFC: 01000059 +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 017FFFF8 +017FFFF8: 01800000 +017FFFFC: 010000A0 data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 28 -100001A: B803000000 mov eax, 3 -EIP: 0100001F -ESP: 017FFFF8 -EBP: 00000000 -EAX: 00000003 -EBX: 00000008 +100001A: 8903 mov dword ptr [ebx], eax +EIP: 0100001C +ESP: 017FFFE0 +EBP: 017FFFF8 +EAX: 00000000 +EBX: 017FFFF4 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF8: 01000073 -017FFFFC: 01000059 +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 29 -100001F: 50 push eax -EIP: 01000020 -ESP: 017FFFF4 -EBP: 00000000 -EAX: 00000003 -EBX: 00000008 +100001C: B802000000 mov eax, 2 +EIP: 01000021 +ESP: 017FFFE0 +EBP: 017FFFF8 +EAX: 00000002 +EBX: 017FFFF4 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF4: 00000003 -017FFFF8: 01000073 -017FFFFC: 01000059 +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 30 -1000020: 58 pop eax -EIP: 01000021 -ESP: 017FFFF8 -EBP: 00000000 -EAX: 00000003 -EBX: 00000008 +1000021: 50 push eax +EIP: 01000022 +ESP: 017FFFDC +EBP: 017FFFF8 +EAX: 00000002 +EBX: 017FFFF4 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF8: 01000073 -017FFFFC: 01000059 +017FFFDC: 00000002 +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 31 -1000021: 5B pop ebx -EIP: 01000022 -ESP: 017FFFFC -EBP: 00000000 -EAX: 00000003 -EBX: 01000073 +1000022: B801000000 mov eax, 1 +EIP: 01000027 +ESP: 017FFFDC +EBP: 017FFFF8 +EAX: 00000001 +EBX: 017FFFF4 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFFC: 01000059 +017FFFDC: 00000002 +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 32 -1000022: 8903 mov dword ptr [ebx], eax -EIP: 01000024 -ESP: 017FFFFC -EBP: 00000000 -EAX: 00000003 -EBX: 01000073 +1000027: 50 push eax +EIP: 01000028 +ESP: 017FFFD8 +EBP: 017FFFF8 +EAX: 00000001 +EBX: 017FFFF4 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFFC: 01000059 +017FFFD8: 00000001 +017FFFDC: 00000002 +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 33 -1000024: C3 ret -EIP: 01000059 -ESP: 01800000 -EBP: 00000000 -EAX: 00000003 -EBX: 01000073 +1000028: 5B pop ebx +EIP: 01000029 +ESP: 017FFFDC +EBP: 017FFFF8 +EAX: 00000001 +EBX: 00000001 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: +017FFFDC: 00000002 +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 34 -1000059: E8C7FFFFFF call 0x1000025 -EIP: 01000025 -ESP: 017FFFFC -EBP: 00000000 -EAX: 00000003 -EBX: 01000073 +1000029: 58 pop eax +EIP: 0100002A +ESP: 017FFFE0 +EBP: 017FFFF8 +EAX: 00000002 +EBX: 00000001 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFFC: 0100005E +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 35 -1000025: B801000000 mov eax, 1 -EIP: 0100002A -ESP: 017FFFFC -EBP: 00000000 +100002A: 29D8 sub eax, ebx +EIP: 0100002C +ESP: 017FFFE0 +EBP: 017FFFF8 EAX: 00000001 -EBX: 01000073 +EBX: 00000001 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFFC: 0100005E +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 36 -100002A: 50 push eax -EIP: 0100002B -ESP: 017FFFF8 -EBP: 00000000 +100002C: 50 push eax +EIP: 0100002D +ESP: 017FFFDC +EBP: 017FFFF8 EAX: 00000001 -EBX: 01000073 +EBX: 00000001 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFF8: 00000001 -017FFFFC: 0100005E +017FFFDC: 00000001 +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 37 -100002B: 58 pop eax -EIP: 0100002C -ESP: 017FFFFC -EBP: 00000000 +100002D: 58 pop eax +EIP: 0100002E +ESP: 017FFFE0 +EBP: 017FFFF8 EAX: 00000001 -EBX: 01000073 +EBX: 00000001 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFFC: 0100005E +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 38 -100002C: A36B000001 mov dword ptr [0x100006b], eax -EIP: 01000031 -ESP: 017FFFFC -EBP: 00000000 +100002E: BB04000000 mov ebx, 4 +EIP: 01000033 +ESP: 017FFFE0 +EBP: 017FFFF8 EAX: 00000001 -EBX: 01000073 +EBX: 00000004 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: -017FFFFC: 0100005E +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 39 -1000031: C3 ret -EIP: 0100005E -ESP: 01800000 -EBP: 00000000 -EAX: 00000001 -EBX: 01000073 +1000033: F7E3 mul ebx +EIP: 01000035 +ESP: 017FFFE0 +EBP: 017FFFF8 +EAX: 00000004 +EBX: 00000004 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- iteration 40 -100005E: F4 hlt +1000035: 50 push eax +EIP: 01000036 +ESP: 017FFFDC +EBP: 017FFFF8 +EAX: 00000004 +EBX: 00000004 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFDC: 00000004 +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 41 +1000036: 55 push ebp +EIP: 01000037 +ESP: 017FFFD8 +EBP: 017FFFF8 +EAX: 00000004 +EBX: 00000004 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFD8: 017FFFF8 +017FFFDC: 00000004 +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 42 +1000037: 58 pop eax +EIP: 01000038 +ESP: 017FFFDC +EBP: 017FFFF8 +EAX: 017FFFF8 +EBX: 00000004 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFDC: 00000004 +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 43 +1000038: BB18000000 mov ebx, 0x18 +EIP: 0100003D +ESP: 017FFFDC +EBP: 017FFFF8 +EAX: 017FFFF8 +EBX: 00000018 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFDC: 00000004 +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 44 +100003D: 29D8 sub eax, ebx +EIP: 0100003F +ESP: 017FFFDC +EBP: 017FFFF8 +EAX: 017FFFE0 +EBX: 00000018 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFDC: 00000004 +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 45 +100003F: 5B pop ebx +EIP: 01000040 +ESP: 017FFFE0 +EBP: 017FFFF8 +EAX: 017FFFE0 +EBX: 00000004 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 46 +1000040: 01D8 add eax, ebx +EIP: 01000042 +ESP: 017FFFE0 +EBP: 017FFFF8 +EAX: 017FFFE4 +EBX: 00000004 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 47 +1000042: 50 push eax +EIP: 01000043 +ESP: 017FFFDC +EBP: 017FFFF8 +EAX: 017FFFE4 +EBX: 00000004 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFDC: 017FFFE4 +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 48 +1000043: B803000000 mov eax, 3 +EIP: 01000048 +ESP: 017FFFDC +EBP: 017FFFF8 +EAX: 00000003 +EBX: 00000004 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFDC: 017FFFE4 +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 49 +1000048: 50 push eax +EIP: 01000049 +ESP: 017FFFD8 +EBP: 017FFFF8 +EAX: 00000003 +EBX: 00000004 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFD8: 00000003 +017FFFDC: 017FFFE4 +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 50 +1000049: 58 pop eax +EIP: 0100004A +ESP: 017FFFDC +EBP: 017FFFF8 +EAX: 00000003 +EBX: 00000004 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFDC: 017FFFE4 +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 51 +100004A: 5B pop ebx +EIP: 0100004B +ESP: 017FFFE0 +EBP: 017FFFF8 +EAX: 00000003 +EBX: 017FFFE4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFE0: 00000000 +017FFFE4: 00000000 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 52 +100004B: 8903 mov dword ptr [ebx], eax +EIP: 0100004D +ESP: 017FFFE0 +EBP: 017FFFF8 +EAX: 00000003 +EBX: 017FFFE4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFE0: 00000000 +017FFFE4: 00000003 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 53 +100004D: B804000000 mov eax, 4 +EIP: 01000052 +ESP: 017FFFE0 +EBP: 017FFFF8 +EAX: 00000004 +EBX: 017FFFE4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFE0: 00000000 +017FFFE4: 00000003 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 54 +1000052: 50 push eax +EIP: 01000053 +ESP: 017FFFDC +EBP: 017FFFF8 +EAX: 00000004 +EBX: 017FFFE4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFDC: 00000004 +017FFFE0: 00000000 +017FFFE4: 00000003 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 55 +1000053: 55 push ebp +EIP: 01000054 +ESP: 017FFFD8 +EBP: 017FFFF8 +EAX: 00000004 +EBX: 017FFFE4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFD8: 017FFFF8 +017FFFDC: 00000004 +017FFFE0: 00000000 +017FFFE4: 00000003 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 56 +1000054: 5B pop ebx +EIP: 01000055 +ESP: 017FFFDC +EBP: 017FFFF8 +EAX: 00000004 +EBX: 017FFFF8 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFDC: 00000004 +017FFFE0: 00000000 +017FFFE4: 00000003 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 57 +1000055: B804000000 mov eax, 4 +EIP: 0100005A +ESP: 017FFFDC +EBP: 017FFFF8 +EAX: 00000004 +EBX: 017FFFF8 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFDC: 00000004 +017FFFE0: 00000000 +017FFFE4: 00000003 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 58 +100005A: 29C3 sub ebx, eax +EIP: 0100005C +ESP: 017FFFDC +EBP: 017FFFF8 +EAX: 00000004 +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFDC: 00000004 +017FFFE0: 00000000 +017FFFE4: 00000003 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 59 +100005C: 58 pop eax +EIP: 0100005D +ESP: 017FFFE0 +EBP: 017FFFF8 +EAX: 00000004 +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFE0: 00000000 +017FFFE4: 00000003 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000000 +017FFFF8: 01800000 +017FFFFC: 010000A0 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 60 +100005D: 8903 mov dword ptr [ebx], eax EIP: 0100005F +ESP: 017FFFE0 +EBP: 017FFFF8 +EAX: 00000004 +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFE0: 00000000 +017FFFE4: 00000003 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000004 +017FFFF8: 01800000 +017FFFFC: 010000A0 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 61 +100005F: B818000000 mov eax, 0x18 +EIP: 01000064 +ESP: 017FFFE0 +EBP: 017FFFF8 +EAX: 00000018 +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFE0: 00000000 +017FFFE4: 00000003 +017FFFE8: 00000000 +017FFFEC: 00000000 +017FFFF0: 00000000 +017FFFF4: 00000004 +017FFFF8: 01800000 +017FFFFC: 010000A0 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 62 +1000064: 01C4 add esp, eax +EIP: 01000066 +ESP: 017FFFF8 +EBP: 017FFFF8 +EAX: 00000018 +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF8: 01800000 +017FFFFC: 010000A0 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 63 +1000066: 5D pop ebp +EIP: 01000067 +ESP: 017FFFFC +EBP: 01800000 +EAX: 00000018 +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFFC: 010000A0 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 64 +1000067: C3 ret +EIP: 010000A0 +ESP: 01800000 +EBP: 01800000 +EAX: 00000018 +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 65 +10000A0: E8C3FFFFFF call 0x1000068 +EIP: 01000068 +ESP: 017FFFFC +EBP: 01800000 +EAX: 00000018 +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFFC: 010000A5 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 66 +1000068: 55 push ebp +EIP: 01000069 +ESP: 017FFFF8 +EBP: 01800000 +EAX: 00000018 +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF8: 01800000 +017FFFFC: 010000A5 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 67 +1000069: 54 push esp +EIP: 0100006A +ESP: 017FFFF4 +EBP: 01800000 +EAX: 00000018 +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF4: 017FFFF8 +017FFFF8: 01800000 +017FFFFC: 010000A5 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 68 +100006A: 5D pop ebp +EIP: 0100006B +ESP: 017FFFF8 +EBP: 017FFFF8 +EAX: 00000018 +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF8: 01800000 +017FFFFC: 010000A5 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 69 +100006B: B801000000 mov eax, 1 +EIP: 01000070 +ESP: 017FFFF8 +EBP: 017FFFF8 +EAX: 00000001 +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF8: 01800000 +017FFFFC: 010000A5 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 70 +1000070: 50 push eax +EIP: 01000071 +ESP: 017FFFF4 +EBP: 017FFFF8 +EAX: 00000001 +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF4: 00000001 +017FFFF8: 01800000 +017FFFFC: 010000A5 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 71 +1000071: 58 pop eax +EIP: 01000072 +ESP: 017FFFF8 +EBP: 017FFFF8 +EAX: 00000001 +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF8: 01800000 +017FFFFC: 010000A5 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 72 +1000072: A3B2000001 mov dword ptr [0x10000b2], eax +EIP: 01000077 +ESP: 017FFFF8 +EBP: 017FFFF8 +EAX: 00000001 +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFF8: 01800000 +017FFFFC: 010000A5 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 73 +1000077: 5D pop ebp +EIP: 01000078 +ESP: 017FFFFC +EBP: 01800000 +EAX: 00000001 +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +017FFFFC: 010000A5 +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 74 +1000078: C3 ret +EIP: 010000A5 +ESP: 01800000 +EBP: 01800000 +EAX: 00000001 +EBX: 017FFFF4 +ECX: 00000000 +EDX: 00000000 +ESI: 00000000 +EDI: 00000000 +stack: +data: +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 +-- iteration 75 +10000A5: F4 hlt +EIP: 010000A6 ESP: 01800000 -EBP: 00000000 +EBP: 01800000 EAX: 00000001 -EBX: 01000073 +EBX: 017FFFF4 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 stack: data: -0100005F: 07000000 -01000063: 00000000 -01000067: 00000000 -0100006B: 01000000 +010000A6: 07000000 +010000AA: 00000000 +010000AE: 00000000 +010000B2: 01000000 -- cgit v1.2.3-54-g00ecf