Debugger, begin runtime stuff
This commit is contained in:
49
scmvm.scm
Executable file → Normal file
49
scmvm.scm
Executable file → Normal 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))
|
||||
|
||||
Reference in New Issue
Block a user