program RandomSquares {
section module {
sdl,
std
}
section data {
int rax = 0
int rbx = 0
int rdx = 0
int rsi = 0
int rdi = 0
int r8 = 0
int r9 = 0
int r10 = 0
int r11 = 0
int r12 = 0
string str_0 = "failed to init SDL"
string str_1 = "sdl init passed"
string str_2 = "Hello SDL"
string str_3 = "failed to create window"
string str_4 = "window created"
string str_5 = "failed to create renderer"
string str_6 = "renderer created"
string fmt_str = "%s "
string newline = "\n"
int result = 0
int window_id = 0
int renderer = 0
int event_type_result = 0
int running = 0
int color_value_r = 0
int color_value_g = 0
int color_value_b = 0
int i = 0
int z = 0
}
section code {
start:
invoke init
return rbx
mov result, rbx
cmp result, 0
je ELSE_0
print fmt_str, str_0
print newline
exit 0
jmp ENDIF_1
ELSE_0:
print fmt_str, str_1
print newline
ENDIF_1:
mov rsi, 100
mov rdi, 100
mov r8, 640
mov r9, 480
mov r10, 4
invoke create_window, str_2, rsi, rdi, r8, r9, r10
return rdx
mov window_id, rdx
mov rsi, 0
sub rsi, 1
cmp window_id, rsi
jne ELSE_4
print fmt_str, str_3
print newline
invoke quit
exit 0
jmp ENDIF_5
ELSE_4:
print fmt_str, str_4
print newline
ENDIF_5:
mov r8, 0
sub r8, 1
mov r10, 2
invoke create_renderer, window_id, r8, r10
return r9
mov renderer, r9
mov r8, 0
sub r8, 1
cmp renderer, r8
jne ELSE_8
print fmt_str, str_5
print newline
invoke destroy_window, window_id
invoke quit
exit 0
jmp ENDIF_9
ELSE_8:
print fmt_str, str_6
print newline
ENDIF_9:
invoke get_ticks
return r9
invoke srand, r9
mov running, 1
WHILE_12:
cmp running, 0
je ENDWHILE_13
WHILE_14:
invoke poll_event
return r9
cmp r9, 0
je ENDWHILE_15
invoke get_event_type
return r9
mov event_type_result, r9
cmp event_type_result, 256
jne ELSE_18
mov running, 0
ELSE_18:
cmp event_type_result, 768
jne ELSE_22
invoke get_key_code
return r10
cmp r10, 27
jne ELSE_22
mov running, 0
ELSE_22:
jmp WHILE_14
ENDWHILE_15:
mov r9, 0
mov r10, 0
mov r11, 0
mov r12, 255
invoke set_draw_color, renderer, r9, r10, r11, r12
invoke clear, renderer
mov z, 0
FOR_30:
cmp z, 29
jg ENDFOR_31
mov i, 0
FOR_33:
cmp i, 19
jg ENDFOR_34
invoke rand
return r9
mod r9, 255
mov color_value_r, r9
invoke rand
return r9
mod r9, 255
mov color_value_g, r9
invoke rand
return r9
mod r9, 255
mov color_value_b, r9
mov r9, 255
invoke set_draw_color, renderer, color_value_r, color_value_g, color_value_b, r9
mov r9, i
mul r9, 32
mov r10, z
mul r10, 16
mov r11, 32
mov r12, 16
invoke fill_rect, renderer, r9, r10, r11, r12
FOR_CONTINUE_35:
add i, 1
jmp FOR_33
ENDFOR_34:
FOR_CONTINUE_32:
add z, 1
jmp FOR_30
ENDFOR_31:
invoke present, renderer
mov r9, 1
invoke delay, r9
jmp WHILE_12
ENDWHILE_13:
invoke destroy_renderer, renderer
invoke destroy_window, window_id
invoke quit
done
}
}