From 664d68a2dc67ebde325f5fa52d9ac1ed341485cc Mon Sep 17 00:00:00 2001 From: NukeBird Date: Sun, 23 Nov 2025 19:12:06 +0300 Subject: [PATCH] Add axl_memory --- Makefile | 2 +- axl.h | 14 ++------------ axl.c => axl_memory.c | 28 ++++++++++++++-------------- axl_memory.h | 15 +++++++++++++++ 4 files changed, 32 insertions(+), 27 deletions(-) rename axl.c => axl_memory.c (72%) create mode 100644 axl_memory.h diff --git a/Makefile b/Makefile index 0e76165..ddb9e30 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ CC = clang CFLAGS = -Wall -Wextra -Werror -pedantic -std=c11 -nostdlib -static -Oz -ffreestanding LDFLAGS = -Wl,/SUBSYSTEM:CONSOLE,/ENTRY:_start -fuse-ld=lld LIBS = -lkernel32 -luser32 -SOURCES = main.c axl.c +SOURCES = main.c axl_memory.c TARGET = prog.exe all: $(TARGET) diff --git a/axl.h b/axl.h index 2f2fdf5..bd26d55 100644 --- a/axl.h +++ b/axl.h @@ -1,17 +1,7 @@ #ifndef AXL_H #define AXL_H -#ifndef AXL_HEAP_SIZE -#define AXL_HEAP_SIZE 1024 * 1024 * 16 -#endif - -#include -#include -#include - -void axl_init(void); -void* axl_malloc(uint32_t size); -void* axl_memset(void* ptr, int8_t c, int32_t n); -void axl_free(void* ptr); +#include "axl_types.h" +#include "axl_memory.h" #endif diff --git a/axl.c b/axl_memory.c similarity index 72% rename from axl.c rename to axl_memory.c index b8347d4..17db5b1 100644 --- a/axl.c +++ b/axl_memory.c @@ -1,11 +1,11 @@ -#include "axl.h" +#include "axl_memory.h" -static uint8_t memory[AXL_HEAP_SIZE]; +static u8 memory[AXL_HEAP_SIZE]; struct mb_header { - uint32_t size; - bool is_free; + u32 size; + b8 is_free; struct mb_header* next; }; @@ -15,13 +15,13 @@ typedef struct mb_header mb_header; static mb_header* root = 0; -void* axl_memset(void* ptr, int8_t c, int32_t n) +void* axl_memset(void* ptr, i8 c, u32 n) { if(ptr) { - for(int32_t i = 0; i < n; i++) + for(u32 i = 0; i < n; i++) { - ((int8_t*)ptr)[i] = c; + ((i8*)ptr)[i] = c; } } @@ -30,7 +30,7 @@ void* axl_memset(void* ptr, int8_t c, int32_t n) void axl_init(void) { - static bool axl_initialized = false; + static b8 axl_initialized = false; if(!axl_initialized) { @@ -43,7 +43,7 @@ void axl_init(void) } } -mb_header* axl_find_mb(uint32_t req_size) +mb_header* axl_find_mb(u32 req_size) { mb_header* block = root; @@ -59,11 +59,11 @@ mb_header* axl_find_mb(uint32_t req_size) return NULL; } -void axl_split_mb(mb_header* block, uint32_t size) +void axl_split_mb(mb_header* block, u32 size) { if(block->size > size + MB_HEADER_SIZE) { - mb_header* new_block = (mb_header*)((uint8_t*)block + MB_HEADER_SIZE + size); + mb_header* new_block = (mb_header*)((u8*)block + MB_HEADER_SIZE + size); new_block->size = block->size - size - MB_HEADER_SIZE; new_block->is_free = true; new_block->next = block->next; @@ -73,7 +73,7 @@ void axl_split_mb(mb_header* block, uint32_t size) } } -void* axl_malloc(uint32_t size) +void* axl_malloc(u32 size) { if(size > AXL_HEAP_SIZE - MB_HEADER_SIZE) { @@ -90,7 +90,7 @@ void* axl_malloc(uint32_t size) axl_split_mb(free_block, size); free_block->is_free = false; - return (void*)((uint8_t*)free_block + MB_HEADER_SIZE); + return (void*)((u8*)free_block + MB_HEADER_SIZE); } void axl_free(void* ptr) @@ -100,7 +100,7 @@ void axl_free(void* ptr) return; } - mb_header* block = (mb_header*)((uint8_t*)ptr - MB_HEADER_SIZE); + mb_header* block = (mb_header*)((u8*)ptr - MB_HEADER_SIZE); mb_header* next_block = block->next; block->is_free = true; diff --git a/axl_memory.h b/axl_memory.h new file mode 100644 index 0000000..ba36ac8 --- /dev/null +++ b/axl_memory.h @@ -0,0 +1,15 @@ +#ifndef AXL_MEMORY_H +#define AXL_MEMORY_H + +#ifndef AXL_HEAP_SIZE +#define AXL_HEAP_SIZE 1024 * 1024 * 16 +#endif + +#include "axl_types.h" + +void axl_init(void); +void* axl_malloc(u32 size); +void* axl_memset(void* ptr, i8 c, u32 n); +void axl_free(void* ptr); + +#endif