summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2020-08-09 20:54:03 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2020-08-09 20:54:03 +0200
commit3e51c4b9c32425a435d090636ea04dce25c3bf24 (patch)
tree04cf783de4f27149878ead78232510ec26dda607
parent1da96894b6c25c3be9c1a1549befbfe1b8efd8a6 (diff)
downloadcompilertests-3e51c4b9c32425a435d090636ea04dce25c3bf24.tar.gz
compilertests-3e51c4b9c32425a435d090636ea04dce25c3bf24.tar.bz2
got local variables right (also with arrays)
-rw-r--r--ecomp-c/ec.c71
-rw-r--r--ecomp-c/tests/procedure_local_variables.e2
-rw-r--r--ecomp-c/tests/procedure_local_variables.easm55
-rw-r--r--ecomp-c/tests/procedure_local_variables.easm_err0
-rw-r--r--ecomp-c/tests/procedure_local_variables.ecomp_err0
-rw-r--r--ecomp-c/tests/procedure_local_variables.erun751
-rw-r--r--ecomp-c/tests/procedure_scoping.e2
-rw-r--r--ecomp-c/tests/procedure_scoping.easm26
-rw-r--r--ecomp-c/tests/procedure_scoping.erun1831
9 files changed, 2279 insertions, 459 deletions
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
--- /dev/null
+++ b/ecomp-c/tests/procedure_local_variables.easm_err
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
--- /dev/null
+++ b/ecomp-c/tests/procedure_local_variables.ecomp_err
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