anchor.diff:        (sicl-mir:immediate-input
          (etypecase output
   	 (sicl-mir:register-location
  -	  (format stream "     MOV ~a, ~d~%"
  -		  (sicl-mir:name output)
  -		  (sicl-mir:value input)))
  -	 (sicl-mir:dynamic-location
  -	  (format stream "     MOV [RBP ~d], ~d~%"
  -		  (* -8 (1+ (sicl-mir:index output)))
  -		  (sicl-mir:value input)))))
  +	  (add-code "MOV" (list (make-reg output) (make-imm input))))
  +	 (sicl-mir:dynamic-location
  +	  (add-code "MOV"
  +		    (list (make-mem 'rbp (* -8 (1+ (sicl-mir:index output))))
  +			  (make-imm input))))))
         (sicl-mir:register-location
          (etypecase output
   	 (sicl-mir:register-location
  -	  (format stream "     MOV ~a, ~a~%"
  -		  (sicl-mir:name output)
  -		  (sicl-mir:name input)))
  -	 (sicl-mir:dynamic-location
  -	  (format stream "     MOV [RBP ~d], ~a~%"
  -		  (* -8 (1+ (sicl-mir:index output)))
  -		  (sicl-mir:name input)))))
  +	  (add-code "MOV" (list (make-reg output) (make-reg input))))
  +	 (sicl-mir:dynamic-location
  +	  (add-code "MOV"
  +		    (list (make-mem 'rbp (* -8 (1+ (sicl-mir:index output))))
  +			  (make-reg input))))))
         (sicl-mir:dynamic-location
          (etypecase output
   	 (sicl-mir:register-location
  -	  (format stream "     MOV ~a, [RBP ~d]~%"
  -		  (sicl-mir:name output)
  -		  (* -8 (1+ (sicl-mir:index input)))))
  -	 (sicl-mir:dynamic-location
  -	  (format stream "     MOV RAX, [RBP ~d]~%"
  -		  (* -8 (1+ (sicl-mir:index input))))
  -	  (format stream "     MOV [RBP ~d], RAX~%"
  -		  (* -8 (1+ (sicl-mir:index output))))))))))
  +	  (add-code "MOV"
  +		    (list (make-reg output)
  +			  (make-mem 'rbp (* -8 (1+ (sicl-mir:index input)))))))
  +	 (sicl-mir:dynamic-location
  +	  (add-code "MOV"
  +		    (list  (make-reg 'rax)
  +			   (make-mem 'rbp (* -8 (1+ (sicl-mir:index input))))))
  +	  (add-code "MOV"
  +		    (list (make-mem 'rbp (* -8 (1+ (sicl-mir:index output))))
  +			  (make-reg 'rax)))))))))
   
   (defmethod generate-instruction
       ((instruction sicl-mir:memref-instruction) stream)
  
positive.code:       (sicl-mir:immediate-input
         (etypecase input2
  	 (sicl-mir:register-location
  	  (format stream "     CMP ~d, ~a~%"
  		  (sicl-mir:value input1)
  		  (sicl-mir:name input2)))
  	 (sicl-mir:dynamic-location
  	  (format stream "     CMP ~d, [RBP ~d]~%"
  		  (sicl-mir:value input1)
  		  (* -8 (1+ (sicl-mir:index input2)))))))
        (sicl-mir:register-location
         (etypecase input2
  	 (sicl-mir:immediate-input
  	  (format stream "     CMP ~a, ~d~%"
  		  (sicl-mir:name input1)
  		  (sicl-mir:value input2)))
  	 (sicl-mir:register-location
  	  (format stream "     CMP ~a, ~a~%"
  		  (sicl-mir:name input1)
  		  (sicl-mir:name input2)))
  	 (sicl-mir:dynamic-location
  	  (format stream "     CMP ~a, [RBP ~d]~%"
  		  (sicl-mir:name input1)
  		  (* -8 (1+ (sicl-mir:index input2)))))))
        (sicl-mir:dynamic-location
         (etypecase input2
  	 (sicl-mir:immediate-input
  	  (format stream "     CMP [RBP ~d], ~d~%"
  		  (* -8 (1+ (sicl-mir:index input2)))
  		  (sicl-mir:value input1)))
  	 (sicl-mir:register-location
  	  (format stream "     CMP [RBP ~d], ~a~%"
  		  (* -8 (1+ (sicl-mir:index input2)))
  		  (sicl-mir:name input1)))
  	 (sicl-mir:dynamic-location
  	  (format stream "     MOV RAX, [RBP ~d]~%"
  		  (* -8 (1+ (sicl-mir:index input1))))
  	  (format stream "     CMP RAX, [RBP ~d]~%"
  		  (* -8 (1+ (sicl-mir:index input2))))))))
      (assign-label (cadr successors))
      (format stream "     JNE ~a~%"
  	    (gethash (cadr successors) *label-table*))))
  
  (defmethod generate-instruction
      ((instruction sicl-mir:enter-instruction) stream)
  
negative.code:     (assign-label instruction))
    (let ((label (gethash instruction *label-table*)))
      (unless (null label)
        (add-item label)))
    (setf (gethash instruction *processed-p-table*) t))
  
  (defmethod generate-instruction :after (instruction stream)
  