From 2d78510b9af6f70ec34d77f0e047c698bdf061a9 Mon Sep 17 00:00:00 2001 From: Mikhail Osipov Date: Sat, 12 Oct 2019 00:23:50 +0300 Subject: draft --- restore.s | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 restore.s (limited to 'restore.s') diff --git a/restore.s b/restore.s new file mode 100644 index 0000000..da1ec03 --- /dev/null +++ b/restore.s @@ -0,0 +1,32 @@ +.ifndef __RESTORE__ +.set __RESTORE__, 1 + +.macro __restore_next n, args:vararg +.ifnb \args + __restore\n \args +.endif +.endm + +.macro __restore4 arg:req, args:vararg +.ifnb \args +.error "restore: too many arguments" +.endif + popq \arg +.endm + +.macro __restore3 arg:req, args:vararg + __restore_next 4, \args + popq \arg +.endm + +.macro __restore2 arg:req, args:vararg + __restore_next 3, \args + popq \arg +.endm + +.macro restore arg:req, args:vararg + __restore_next 2, \args + popq \arg +.endm + +.endif -- cgit v1.2.3-70-g09d2