anchor.diff: -;(format t "~{~a~}" *code*)
   ;;Setting up stuff with all the registers and shit
   (defparameter *number-registers* 12)
   
  
positive.code:       (cons
         (evaluate (first operands) env)
         (list-of-values (rest operands) env))))
  
  
  
  
  ;(format t "Given arguments are ~&~S~&" *args*)
  (defparameter *output* (make-array 0 
  
negative.code: 	  (setf (gethash (car var-val) frame) (cdr var-val) )
  	  (setf (gethash var-val frame) 0)))))
  
  
  (defparameter *procedures* (make-hash-table))
  
  (defmacro defprocedure (func &body body)
  `(setf (gethash ,func *procedures*) (lambda (params)
  				  (let ((output ( find-empty-t-register)))
  				    (with-output-to-string (s *output*)
  				      ,@body)
  				    (free-temp-register params)
  				    output)))
    )
  
  (defprocedure '+
    (format s "add ~{~a~^,  ~} ~%" (cons output params) ))
  
  (defprocedure '-
    (format s "sub ~{~a~^,  ~} ~%" (cons output params) ))
  
  (defprocedure '*
    (format s "mul ~{~a~^,  ~} ~%" (cons output params) ))
  
  (defprocedure '/
    (format s "div ~{~a~^,  ~} ~%"  params )
       (format s "mflo ~a~%" output))
  
  (defprocedure '%
    (format s "div ~{~a~^,  ~} ~%"  params )
    (format s "mfhi ~a~%") output)
  
  
  (defun operator (expr)
    (first expr))
  