Compare commits
No commits in common. "6f0b19720d6be8af4276a32a332ba43a46a291b4" and "dd32f294d0f2ff960d4ca1198fa77f350f613ccc" have entirely different histories.
6f0b19720d
...
dd32f294d0
1 changed files with 1 additions and 25 deletions
|
@ -16,42 +16,23 @@
|
|||
(defclass reference-constant (reference)
|
||||
((%value :accessor ref-value :initarg :value)))
|
||||
|
||||
(defmethod print-object ((object reference-constant) stream)
|
||||
(print-unreadable-object (object stream :type t)
|
||||
(format stream "~D" (ref-value object))))
|
||||
|
||||
(defmethod dereference ((ref reference-constant))
|
||||
(format-inst t "LDA #~D" (ref-value ref)))
|
||||
|
||||
(defclass reference-variable (reference)
|
||||
((%index :accessor ref-index :initarg :index)))
|
||||
|
||||
(defmethod print-object ((object reference-variable) stream)
|
||||
(print-unreadable-object (object stream :type t)
|
||||
(format stream "@~D" (ref-index object))))
|
||||
|
||||
(defmethod dereference ((ref reference-variable))
|
||||
(format-inst t "LDY #~D" (ref-index ref))
|
||||
(format-inst t "LDA VARVEC,Y"))
|
||||
|
||||
|
||||
(defclass node ()
|
||||
((%next :accessor next :accessor normal-next :initform nil)))
|
||||
|
||||
(defmethod generate-code :before ((node node))
|
||||
(format t ";; ~A~%" node))
|
||||
|
||||
(defmethod generate-code :after ((node node))
|
||||
(terpri))
|
||||
((%next :accessor next :accessor normal-next)))
|
||||
|
||||
(defclass node-call (node)
|
||||
((%callee :accessor callee :initarg :callee)
|
||||
(%arguments :accessor arguments :initarg :arguments)))
|
||||
|
||||
(defmethod print-object ((object node-call) stream)
|
||||
(print-unreadable-object (object stream :type t :identity t)
|
||||
(format stream "~A~A" (callee object) (arguments object))))
|
||||
|
||||
(defmethod generate-code ((node node-call))
|
||||
(loop :for ref :in (arguments node)
|
||||
:for index :from 0
|
||||
|
@ -91,11 +72,6 @@
|
|||
(format-inst t "PLA")
|
||||
(format-inst t "TAX"))
|
||||
|
||||
(defmethod compile-starting-at ((node node))
|
||||
(generate-code node)
|
||||
(unless (null (next node))
|
||||
(compile-starting-at (next node))))
|
||||
|
||||
(defun make-call (callee args)
|
||||
(let ((arguments
|
||||
(loop :for (constp value) :in args
|
||||
|
|
Loading…
Add table
Reference in a new issue