Basic constructor macro for instruction-unary structures.
(make-instruction-unary [:op <op>]
[:arg <arg>]
[:into <into>])
This is the usual way to construct instruction-unary structures. It simply conses together a structure with the specified fields.
This macro generates a new instruction-unary structure from scratch. See also change-instruction-unary, which can "change" an existing structure, instead.
This is an ordinary
Macro:
(defmacro make-instruction-unary (&rest args) (std::make-aggregate 'instruction-unary args '((:op) (:arg) (:into)) 'make-instruction-unary nil))
Function:
(defun instruction-unary (op arg into) (declare (xargs :guard (and (unary-opp op) (operandp arg) (registerp into)))) (declare (xargs :guard t)) (let ((__function__ 'instruction-unary)) (declare (ignorable __function__)) (b* ((op (mbe :logic (unary-op-fix op) :exec op)) (arg (mbe :logic (operand-fix arg) :exec arg)) (into (mbe :logic (register-fix into) :exec into))) (cons :unary (list op arg into)))))