%ifndef ALLOC_INC %define ALLOC_INC %ifndef SYS_INC %include "sys.inc" %endif _alloc: xor rdi, rdi ; Let Kernel give Address mov rdx, 3 ; PROT_READ | PROT_WRITE mov r10, 0x1002 ; MAP_PRIVATE | MAP_ANONYMOUS xor r8, r8 ; fd = -1, Not backed by a file xor r9, r9 ; offset = 0 mov rax, SYS_MMAP syscall ret %macro alloc 0-1 rax %if "%1" != "%rsi" mov rsi, %1 ; Size to allocate %endif call _alloc %endm _free: mov rax, SYS_MUNMAP syscall ret %macro free 1-2 rax %if "%1" != "%rdi" mov rdi, %1 ; Address to free %endif %if "%1" != "%rsi" mov rsi, %2 ; Size allocated %endif call _free %endm %endif