anchor.diff:    (unless scale
       (set! scale value-scale))
     (emit out "~A~A ~A, ~A" insn (insn-size-suffix scale)
  -        (funcall src scale) (funcall dest scale)))
  +        (insn-operand src scale) (insn-operand dest scale)))
   
   (define-insn-2 emit-mov "mov")
   (define-insn-2 emit-lea "lea")
  
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: ;;; Address modes
  
  (define (immediate x)
    (format nil "$~A" x))
  
  (define (dispmem correction offset reg . reg2)
    (if (null reg2)
        (format nil "~A(~A)" (- offset correction) (value-sized reg))
        (format nil "~A(~A,~A)" (- offset correction) (value-sized reg)
                (value-sized (first reg2)))))
  
  (define (mem reg)
    (format nil "(~A)" (value-sized reg)))
  
  (define (insn-operand operand scale)
    (cond ((symbol? operand)
           (elt (cdr (assoc operand register-operands)) scale))
          ((string? operand) operand)
          (true (error "strange operand ~S" operand))))
  
  (define (value-sized operand)
    (insn-operand operand value-scale))
  
  ;;; Condition codes
  
  