(defmacro push (&rest addrs) `(progn (lod sp) (sub ',(length addrs)) (sto sp) ,@(loop for k below (length addrs) collect `(add ',(if (= k 0) '(sto 0) 1)) collect `(sto (+ @ ,(* 2 (length addrs))))) ,@(loop for a in (reverse addrs) collect `(lod ,a) collect `(sto 0)) )) (defmacro pop (&rest addrs) `(progn (lod sp) (add ',(length addrs)) (sto sp) ,@(loop for k below (length addrs) collect `(add ',(if (= k 0) '(- (lod 0) 1) -1)) collect `(sto (+ @ ,(1- (* 2 (length addrs)))))) ,@(loop for a in addrs collect `(lod 0) collect `(sto ,a))))