aboutsummaryrefslogtreecommitdiff
path: root/src/main.S
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2026-02-18 09:11:17 +0100
committerFelix Morgner <felix.morgner@gmail.com>2026-02-18 09:11:17 +0100
commit4165404f85bf542d5f7a42d81b7288a91a72296d (patch)
tree0a25342460cfca9da700dc81cfc22c8160c1452e /src/main.S
parent6e6ee64bb4cf10a98c7bd92e06090502eb67e402 (diff)
downloadsnake.s-4165404f85bf542d5f7a42d81b7288a91a72296d.tar.xz
snake.s-4165404f85bf542d5f7a42d81b7288a91a72296d.zip
feat: extract some function helpers
Diffstat (limited to 'src/main.S')
-rw-r--r--src/main.S46
1 files changed, 22 insertions, 24 deletions
diff --git a/src/main.S b/src/main.S
index 0a21f83..50e894d 100644
--- a/src/main.S
+++ b/src/main.S
@@ -1,4 +1,5 @@
-#include "SDL_interface.S"
+#include "helpers/function.S"
+#include "libs/sdl.S"
#define SCREEN_WIDTH 800
#define SCREEN_HEIGHT 600
@@ -14,13 +15,9 @@
window_title: .string "snake.s"
.section .text
- .global main
- // void _print_sdl_error(char const * format)
- .type _print_sdl_error, @function
- _print_sdl_error:
- push %rbp
- mov %rsp, %rbp
+ //! @function _print_sdl_error(char const * format)
+ function_begin _print_sdl_error
push %rdi
sub $8, %rsp
@@ -32,27 +29,25 @@
pop %rdi
call printf@PLT
- jmp .Lexit
- leave
- ret
+ function_end
- .type main, @function
- main:
- push %rbp
- mov %rsp, %rbp
+ function_begin main
+
+ define_local window_handle, 8
+ allocate_locals
// initialize SDL
mov $SDL_INIT_VIDEO, %rdi
call SDL_Init@PLT
// check if initialization was successful
- cmp $0, %rax
+ test %rax, %rax
jae 1f
lea failed_to_initialize_sdl(%rip), %rdi
call _print_sdl_error@PLT
mov $1, %rax
- jmp .Lexit
+ function_exit
1:
// create a window
@@ -64,17 +59,21 @@
mov $SDL_WINDOW_SHOWN, %r9
call SDL_CreateWindow@PLT
- cmp $0, %rax
+ store_local %rax, window_handle
+
+ // check if window creation was successful
+ test %rax, %rax
jne 1f
lea failed_to_create_window(%rip), %rdi
call _print_sdl_error@PLT
mov $1, %rax
- jmp .Lexit
+ function_exit
1:
- mov %rax, %rdi
- call SDL_DestroyWindow@PLT
- call SDL_Quit@PLT
+ load_local window_handle, %rdi
+ call SDL_DestroyWindow@PLT
+
+ call SDL_Quit@PLT
.Lsuccess:
lea greeting(%rip), %rdi
@@ -83,6 +82,5 @@
xor %rax, %rax
- .Lexit:
- leave
- ret
+ function_end
+