From 37b2864a7d3045793a82a7c7fa8b9e625f9a2b87 Mon Sep 17 00:00:00 2001 From: John Lorentzson Date: Thu, 8 May 2025 19:36:10 +0200 Subject: [PATCH] Add function to compute addresses of labels in instruction list --- wip-duuqnd/user-side-compiler/instruction.lisp | 8 ++++++++ 1 file changed, 8 insertions(+) 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))