Begin debugger

This commit is contained in:
2025-06-09 09:02:20 -05:00
parent 679b53d76e
commit a36eea12d0
3 changed files with 31 additions and 203 deletions

View File

@@ -5,7 +5,7 @@
#:use-module (rnrs io ports)
#:use-module ((scheme base)
#:select (write-u8 write-bytevector))
#:export (assemble))
#:export (assemble assemble-file))
(define (lookup-instruction inst)
(define inst-obj (assq inst *instruction-set*))
@@ -55,3 +55,12 @@
(write-word (cadr inst))
(write-word (assq-ref labels (cadr inst)))))
(loop (cdr seq)))])))))
(define (assemble-file file out)
(call-with-input-file file
(lambda (in)
(define (read-all next)
(if (eof-object? next)
'()
(cons next (read-all (read in)))))
(assemble (read-all (read in)) out))))

View File

@@ -127,7 +127,7 @@
;;; Execution
(define* (make-vm #:key stack-size memory-size)
(define* (make-vm #:key stack-size memory-size debugger)
"Create a fresh VM, with optional stack and memory sizes"
(define data-stack (if stack-size (make-stack stack-size) (make-stack)))
(define ret-stack (if stack-size (make-stack stack-size) (make-stack)))
@@ -157,6 +157,8 @@
(define (fetch-and-execute)
(define exit? #f)
(let lp ([op (fetch-byte)])
(when debugger
(debugger))
(case (op-lookup op)
[(push)
(push data-stack (fetch-word))]