bits 64 section .text mmap equ 9 munmap equ 11 ; asm/unistd_64.h PROT_READ equ 0x1 PROT_WRITE equ 0x2 MAP_PRIVATE equ 0x02 MAP_ANONYMOUS equ 0x20 ; bits/mman.h global mmap_alloc ; void *mmap_alloc(size_t size [rdi]) mmap_alloc: push rbp mov rbp, rsp mov rax, mmap mov rsi, rdi ; size_t length xor rdi, rdi ; void *addr (NULLujemy zeby dac kernelowi dowolnosc) mov rdx, PROT_READ | PROT_WRITE ; int prot mov r10, MAP_PRIVATE | MAP_ANONYMOUS ; int flags mov r8, -1 ; int fd (ignorowany) xor r9, r9 ; off_t offset (ignorowany) sysenter mov rsp, rbp pop rbp ret global mmap_free ; int mmap_free(void *addr [rdi],size_t size [rsi]) mmap_free: push rbp mov rbp, rsp mov rax, munmap ; wszystko jest juz w odpowiednich rejestrach syscall mov rsp, rbp pop rbp ret