Debugger, begin runtime stuff

This commit is contained in:
2025-06-11 10:50:38 -05:00
parent a36eea12d0
commit f939d1b08b
6 changed files with 277 additions and 104 deletions

49
scmvm.scm Executable file → Normal file
View File

@@ -1,26 +1,27 @@
#! /bin/sh
exec guile -L . -e main -s "$0" "$@"
!#
(define-module (scmvm)
#:use-module (scmvm vm)
#:use-module (scmvm assembler)
#:use-module (scmvm debugger)
#:use-module (ice-9 ports)
#:re-export ( ;; vm
make-vm run-vm vm-load-program!
vm-memory-ref vm-memory-set!
vm-pc vm-pc-set!
;; assembler
assemble
;; debugger
make-debugger debugger-continue
debugger-vm
debugger-breakpoints debugger-breakpoints-set!
debugger-breakpoint-add! debugger-breakpoint-ref
debugger-breakpoint-enable! debugger-breakpoint-disable!)
#:export (read-all-instructions instructions-from-file))
(use-modules (scmvm vm)
(scmvm assembler)
(srfi srfi-11)
(srfi srfi-26)
(ice-9 control))
(define (read-all-instructions)
(let ([inst (read)])
(if (eof-object? inst)
'()
(cons inst (read-all-instructions)))))
(define (make-debugger source asm)
())
(define (debug file)
(let*-values ([(source) (open-file file)]
[(asm) (call-with-output-bytevector (cut assemble-file file <>))]
[(begin-debugger resume-debugger) (make-debugger source asm)])
(% (begin-debugger)
(resume-debugger))))
(define (main . args)
(when (null? args)
(usage))
(case (car args)
[(help) (usage)]
[(debug) (apply debug (cdr args))]))
(define (instructions-from-file file)
(with-input-from-file file read-all-instructions))