diff options
Diffstat (limited to 'ecomp-c/tests/example_reverse_array.easm')
-rw-r--r-- | ecomp-c/tests/example_reverse_array.easm | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/ecomp-c/tests/example_reverse_array.easm b/ecomp-c/tests/example_reverse_array.easm new file mode 100644 index 0000000..e4d0c54 --- /dev/null +++ b/ecomp-c/tests/example_reverse_array.easm @@ -0,0 +1,74 @@ +format binary +use32 +org $1000000 +; CONST N -> integer, 10 +; DECL i -> integer, 0 +; DECL a -> array 10 of integer, array 10 of integer = { ... } +; LET i <- 0 +mov eax, 0 +push eax +pop eax +mov [i], eax +; WHILE i 10 < +__global_0: +mov eax, [i] +push eax +mov eax, 10 +push eax +pop ebx +pop eax +cmp eax, ebx +jb __global_4 +mov eax, 0 +jmp __global_5 +__global_4: mov eax, 1 +__global_5: +push eax +pop eax +mov ebx, 0 +cmp eax, ebx +je __global_2 +jmp __global_3 +__global_2: jmp __global_1 +__global_3: +; LET a[i ] <- i +mov eax, [i] +push eax +pop eax +mov ebx, 4 +mul ebx +push eax +mov eax, a +pop ebx +add eax, ebx +push eax +mov eax, [i] +push eax +pop eax +pop ebx +mov [ebx], eax +; LET i <- i 1 + +mov eax, [i] +push eax +mov eax, 1 +push eax +pop ebx +pop eax +add eax, ebx +push eax +pop eax +mov [i], eax +jmp __global_0 +__global_1: +hlt +a: dd $00000000 +dd $00000000 +dd $00000000 +dd $00000000 +dd $00000000 +dd $00000000 +dd $00000000 +dd $00000000 +dd $00000000 +dd $00000000 +i: dd $00000000 |