program Skeleton {
section module {
sdl,
std
}
section data {
int rax = 0
int rbx = 0
int rcx = 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
int r13 = 0
int r14 = 0
ptr arg0 = null
string str_0 = "Hello, World"
string str_1 = "font subsystem could not initalized"
string str_2 = "./font.ttf"
string str_3 = "Error loading font"
string fmt_str = "%s "
string newline = "\n"
int running = 0
int event_type_result = 0
int window_id = 0
int renderer = 0
int font_id = 0
ptr init_title = null
int init_x = 0
int init_y = 0
int init_w = 0
int init_h = 0
int __funcret_init = 0
}
section code {
start:
mov arg0, str_0
mov rbx, 100
mov rcx, 100
mov rdx, 1280
mov rsi, 720
call PROC_init
mov running, 1
WHILE_0:
cmp running, 1
jne ENDWHILE_1
WHILE_4:
invoke poll_event
return rcx
cmp rcx, 0
je ENDWHILE_5
invoke get_event_type
return rsi
mov event_type_result, rsi
cmp event_type_result, 256
jne ELSE_8
mov running, 0
ELSE_8:
cmp event_type_result, 768
jne ELSE_12
invoke get_key_code
return r9
cmp r9, 27
jne ELSE_12
mov running, 0
ELSE_12:
jmp WHILE_4
ENDWHILE_5:
mov r9, 0
mov r10, 0
mov r11, 0
mov r12, 255
invoke set_draw_color, renderer, r9, r10, r11, r12
invoke clear, renderer
push rbx
push rcx
push rdx
push rsi
push rdi
push r8
call PROC_render
pop r8
pop rdi
pop rsi
pop rdx
pop rcx
pop rbx
mov r9, 15
mov r10, 15
mov r11, 255
mov r12, 255
mov r13, 255
mov r14, 255
invoke draw_text, renderer, font_id, str_0, r9, r10, r11, r12, r13, r14
invoke present, renderer
mov r9, 16
invoke delay, r9
jmp WHILE_0
ENDWHILE_1:
push rbx
push rcx
push rdx
push rsi
push rdi
push r8
call PROC_cleanup
pop r8
pop rdi
pop rsi
pop rdx
pop rcx
pop rbx
done
function PROC_render:
PROC_END_render:
ret
function PROC_init:
mov init_title, arg0
mov init_x, rbx
mov init_y, rcx
mov init_w, rdx
mov init_h, rsi
invoke init
return rbx
mov __funcret_init, rbx
cmp __funcret_init, 0
je ELSE_20
exit 0
ELSE_20:
mov rsi, 4
invoke create_window, init_title, init_x, init_y, init_w, init_h, rsi
return rdx
mov window_id, rdx
mov rsi, 0
sub rsi, 1
cmp window_id, rsi
jne ELSE_24
invoke quit
exit 0
ELSE_24:
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_28
invoke destroy_window, window_id
invoke quit
exit 0
ELSE_28:
invoke get_ticks
return r9
invoke srand, r9
invoke init_text
return r9
cmp r9, 1
je ELSE_32
print fmt_str, str_1
print newline
mov r9, 0
sub r9, 1
exit r9
ELSE_32:
mov r10, 24
invoke load_font, str_2, r10
return r9
mov font_id, r9
mov r9, 0
sub r9, 1
cmp font_id, r9
jne ELSE_36
print fmt_str, str_3
print newline
mov r9, 0
sub r9, 1
exit r9
ELSE_36:
PROC_END_init:
ret
function PROC_cleanup:
invoke quit_text
invoke destroy_renderer, renderer
invoke destroy_window, window_id
invoke quit
PROC_END_cleanup:
ret
}
}