anchor.diff:                     (elt (elt '(("b")
                                  ("zbw" "w")
                                  ("zbl" "zwl" "l")) dest-scale) src-scale)
  -                   (funcall src src-scale)
  -                   (funcall dest dest-scale))))
  +                   (insn-operand src src-scale)
  +                   (insn-operand dest dest-scale))))
       (if (= dest-scale 3)
           (if (= src-scale 3)
               (emit-mov out src dest 3)
  
positive.code: 
  ;;; Registers
  
  (define (value-sized reg)
    (funcall reg value-scale))
  
  (defmarco (define-register name . variants)
    (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")
  
negative.code: (define (emit-insn-1 out insn oper scale)
    (unless scale
      (set! scale value-scale))
    (emit out "~A~A ~A" insn (insn-size-suffix scale) (insn-operand oper scale)))
  
  (define-insn-1 emit-neg "neg")
  (define-insn-1 emit-idiv "idiv")
  