anchor.diff:    (funcall reg value-scale))
   
   (defmarco (define-register name . variants)
  -  `(defvar ,name (lambda (scale) (elt ',variants scale))))
  +  (quasiquote (define (unquote name)
  +                (lambda (scale) (elt (quote (unquote variants)) scale)))))
   
   (define-register %a "%al" "%ax" "%eax" "%rax")
   (define-register %b "%bl" "%bx" "%ebx" "%rbx")
  
positive.code:   (emit out "set~A ~A" cc (funcall reg 0)))
  
  (defmarco (define-insn-1 name insn)
    `(define (,name out oper . scale)
       (emit-insn-1 out ,insn oper (and scale (car scale)))))
  
  (define (emit-insn-1 insn oper scale)
    (unless scale
  
negative.code: (define-insn-1 emit-idiv "idiv")
  
  (defmarco (define-insn-0 name insn)
    (quasiquote
      (define ((unquote name) out . scale)
        (emit out "~A~A" (unquote insn)
              (elt insn-size-suffix (if scale (car scale) value-scale))))))
  
  (define-insn-0 emit-rep-movs "rep ; movs")
  (define-insn-0 emit-pushf "pushf")
  