@@ -1,18 +1,15 @@ -;; abi definition file -;; macros: -;; * sys: syscall64 wrapper -;; * ccall: automatically generate code to call a C function -;; with any number of arguments +;; abi definition file for x86 linux 64-bit +; vim: ft=nasm + +; syscall64 numbers - syscall table must be created first! +%include "calls.x86.lin.64.s" ; syscall ops %define sys.call syscall -; syscall numbers -%define sys.write 1 -%define sys.brk 12 -%define sys.exit 60 ; register order for syscall convention +%define sys.reg.n 7 %define sys.reg.0 rax %define sys.reg.1 rdi %define sys.reg.2 rsi %define sys.reg.3 rdx @@ -29,8 +26,9 @@ %define ccall.reg.4 r8 %define ccall.reg.5 r9 %macro sys 1-8 +; syscall64 wrapper, ex. `sys sys.write, 1, msg, msg.len` %assign i 0 %rep %0 mov sys.reg. %+ i, %1 ; i'm actually shocked this worked %rotate 1