From 1248eae0617555a4f13f7bbee9f120ad3d46c5f3 Mon Sep 17 00:00:00 2001 From: Mikhail Osipov Date: Mon, 7 Oct 2019 13:25:32 +0300 Subject: hello --- sys.s | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 sys.s (limited to 'sys.s') diff --git a/sys.s b/sys.s new file mode 100644 index 0000000..2a76e09 --- /dev/null +++ b/sys.s @@ -0,0 +1,69 @@ +.ifndef __SYS__ +.set __SYS__, 1 + +.include "syscall.s" + +# sys call args: +# %rdi +# %rsi +# %rdx +# %rcx +# %r8 +# %r9 + +.macro __putargs6 arg:req, args:vararg + movq \arg, %r9 +.endm + +.macro __putargs5 arg:req, args:vararg + movq \arg, %r8 +.ifnb \args + __putargs6 \args +.endif +.endm + +.macro __putargs4 arg:req, args:vararg + movq \arg, %rcx +.ifnb \args + __putargs5 \args +.endif +.endm + +.macro __putargs3 arg:req, args:vararg + movq \arg, %rdx +.ifnb \args + __putargs4 \args +.endif +.endm + +.macro __putargs2 arg:req, args:vararg + movq \arg, %rsi +.ifnb \args + __putargs3 \args +.endif +.endm + +.macro __putargs1 arg:req, args:vararg + movq \arg, %rdi +.ifnb \args + __putargs2 \args +.endif +.endm + +.macro sysargs args:vararg +.ifnb \args + __putargs1 \args +.endif +.endm + +.macro sys func:req, args:vararg + sysargs \args + movq $__NR_\func, %rax + syscall +.endm + +.set STDIN, 0 +.set STDOUT, 1 +.set STDERR, 2 + +.endif -- cgit v1.2.3-70-g09d2