diff --git a/wip-duuqnd/user-side-compiler/instruction.lisp b/wip-duuqnd/user-side-compiler/instruction.lisp index 1f51449..3657206 100644 --- a/wip-duuqnd/user-side-compiler/instruction.lisp +++ b/wip-duuqnd/user-side-compiler/instruction.lisp @@ -96,6 +96,14 @@ '(branching-mixin))) ((%opcode :allocation :class :initform ,code))))))) +(defun fix-label-addresses-in-instruction-list (instruction-list origin) + (loop :with address := origin + :for obj :in instruction-list + :if (typep obj 'label) + :do (setf (address obj) address) + :else + :do (incf address (instruction-length obj)))) + ;;; Testing (define-instruction "TXA" nil (:implied 0))