format binary use32 org $1000000 jmp __global_0 ; CONST N -> integer, 10 ; DECL i -> integer, 0 ; DECL tmp -> integer, 0 ; DECL a -> array 10 of integer, array 10 of integer = { ... } __global_0: ; LET i <- 0 mov eax, 0 push eax pop eax mov [i], eax ; WHILE i 10 < __global_1: mov eax, [i] push eax mov eax, 10 push eax pop ebx pop eax cmp eax, ebx jb __global_5 mov eax, 0 jmp __global_6 __global_5: mov eax, 1 __global_6: push eax pop eax mov ebx, 0 cmp eax, ebx je __global_3 jmp __global_4 __global_3: jmp __global_2 __global_4: ; 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_1 __global_2: ; LET i <- 0 mov eax, 0 push eax pop eax mov [i], eax ; WHILE i 10 2 div < __global_7: mov eax, [i] push eax mov eax, 10 push eax mov eax, 2 push eax pop ebx pop eax div ebx push eax pop ebx pop eax cmp eax, ebx jb __global_11 mov eax, 0 jmp __global_12 __global_11: mov eax, 1 __global_12: push eax pop eax mov ebx, 0 cmp eax, ebx je __global_9 jmp __global_10 __global_9: jmp __global_8 __global_10: ; LET tmp <- 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 pop ebx mov eax, [ebx] push eax pop eax mov [tmp], eax ; LET a[i ] <- 10 1 - 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, 10 push eax mov eax, 1 push eax pop ebx pop eax sub eax, ebx push eax mov eax, [i] push eax pop ebx pop eax sub eax, ebx push eax pop eax mov ebx, 4 mul ebx push eax mov eax, a pop ebx add eax, ebx push eax pop ebx mov eax, [ebx] push eax pop eax pop ebx mov [ebx], eax ; LET a[10 1 - i - ] <- tmp mov eax, 10 push eax mov eax, 1 push eax pop ebx pop eax sub eax, ebx push eax mov eax, [i] push eax pop ebx pop eax sub eax, ebx push eax pop eax mov ebx, 4 mul ebx push eax mov eax, a pop ebx add eax, ebx push eax mov eax, [tmp] 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_7 __global_8: hlt a: dd $00000000 dd $00000000 dd $00000000 dd $00000000 dd $00000000 dd $00000000 dd $00000000 dd $00000000 dd $00000000 dd $00000000 tmp: dd $00000000 i: dd $00000000