anchor.diff:  (defmacro def-inst-type (name inst-layout)
     `(progn
        (defun ,name (stream instruction arguments enc)
  +       (declare (optimize debug))
          (let ((code 0))
   	 ,(when (first inst-layout)
   		;; Generate the let for all the registers
  
positive.code:       (loop for i = (read stream nil end)
  	 while (not (eq i end)) collect i)))) 
  
  (defun test-loop ()
    (dotimes (test 100)
      (format t "test ~a~%" test)))
  
  ; test code
  
  (defparameter *test-code* '(def-ee-fun test-ee-code (test1)
  			    (addi loop-counter test1 0)
     			    (:loop)
     			      (addi loop-counter loop-counter -1)
     			      (bne loop-counter :loop)
     			      (addi r0 r0 r0)
  			      (jr r31)))
  
  (defparameter *test-code2* '(def-ee-fun test-ee-code (test1)
  			     (addi loop-counter test1 0)
  		             (addi loop-counter loop-counter -1)
     			     (bne r0 loop-counter -1)
     			     (addi r0 r0 r0)
  			     (jr r31)))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;; Implements a very basic register allocator for given code.
  
negative.code:   	     (let ((code-offset (gethash (car (last i)) label-table)))
  	       (unless code-offset 
  	          (error (format nil "Unable to find ~a label" (car (last i)))))
  	       (setf new-code (append new-code (list (append (nbutlast i) (list (- code-offset offset))))))))
  	   (setf new-code (append new-code (list i))))))
      (values new-code)))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  