anchor.diff:  (define usual-size-suffix (elt insn-size-suffix value-scale))
   
   (defmarco (define-insn-2 name insn)
  -  `(define (,name out src dest . scale)
  -     (emit-insn-2 out ,insn src dest (and scale (car scale)))))
  +  (quasiquote
  +    (define ((unquote name) out src dest . scale)
  +      (emit-insn-2 out (unquote insn) src dest (and scale (car scale))))))
   
   (define (emit-insn-2 out insn src dest scale)
     (unless scale
  
positive.code:   (funcall reg value-scale))
  
  (defmarco (define-register name . variants)
    `(defvar ,name (lambda (scale) (elt ',variants scale))))
  
  (define-register %a "%al" "%ax" "%eax" "%rax")
  (define-register %b "%bl" "%bx" "%ebx" "%rbx")
  
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")
  