;;; TODO ;;; ;;; remove the duplicate labels ;;; - from calls of assembler-new-label where no new label should be made ;;; - from labels corresponding to $ and $$ ;;; ;;; make .proc params and .locals be local to the enclosing .proc ;;; ;;; make (.proc name ...) enter name into a list of procs storing signature, nlocals and narguments ;;; .leave updates the proc struct with current -locals and -arguments ;;; if different, there is a phase change ;;; .enter uses the struct copies of -locals and -arguments ;;; ;;; .call verifies calls against signatures ;;; ;;; labels should evaluate to structures not to s ;;; ;;; figure out a way to specify the address of a label for pushing addresses of message buffers (require "buffer.k") (require "scope.k") (require "define-class.l") (define-structure (name sections)) ;;(define-method do-print () (print "")) (define-method do-print () (print self.name)) (define-structure
(name segment data origin pc org-relocation)) ;;(define-method do-print
() (print "
")) ;;(define-method do-print
() (print self.segment"."self.name)) (define-method do-print
() (print self.name)) (define-function section-set-origin (section addr) (set (
-origin section) addr) (set (
-pc section) addr)) (define-function section-reset (section) (buffer-reset (
-data section)) (section-set-origin section (buffer-address (
-data section))) section) (define-function section-write-byte (sec byte) (incr (
-pc sec)) (buffer-write (
-data sec) byte)) (define-structure (value)) (define-method do-print () (print "")) (define-structure