diff --git a/wip-duuqnd/user-side-compiler/instruction.lisp b/wip-duuqnd/user-side-compiler/instruction.lisp index af444d9..1ad2488 100644 --- a/wip-duuqnd/user-side-compiler/instruction.lisp +++ b/wip-duuqnd/user-side-compiler/instruction.lisp @@ -44,12 +44,21 @@ (:zero-page zero-page-mixin) (:zero-page-x zero-page-x-mixin) (:zero-page-y zero-page-y-mixin) + (:relative relative-mixin) (:absolute absolute-mixin) (:absolute-x absolute-x-mixin) (:absolute-y absolute-y-mixin) (:indirect-x indirect-x-mixin) (:indirect-y indirect-y-mixin)))))) +(defgeneric instruction-length (object) + (:method (immediate-mixin) 1) + (:method (implied-mixin) 1) + (:method (accumulator-mixin) 1) + (:method (zero-page-mixin) 2) + (:method (relative-mixin) 2) + (:method (absolute-mixin) 3)) + (defclass branching-mixin () ((%branch-next :accessor branch-next :initarg :branch-next))) @@ -77,7 +86,7 @@ (define-instruction "PLA" nil (:implied 0)) (define-instruction "TAX" nil (:implied 0)) (define-instruction "DEX" nil (:implied 0)) -(define-instruction "BNE" t (:zero-page 0)) +(define-instruction "BNE" t (:relative 0)) (define-instruction "LDA" nil (:absolute 0) (:zero-page 0)