Utilize new implementation of vm

This commit is contained in:
2026-02-15 13:24:30 -06:00
parent d44f5d2851
commit b50d3109c0
6 changed files with 318 additions and 34 deletions

View File

@@ -1,6 +1,6 @@
(use-modules (d- test)
(scmvm assembler)
(scmvm vm)
(scmvm vm forth)
(scmvm util stack)
(scmvm debugger)
(scmvm language assembly)
@@ -120,51 +120,51 @@
(define-test-suite "vm"
(define-test "adder"
(define my-vm (make-vm forth-instruction-set))
(vm-load-program! my-vm adder-program-bytecode)
(vm-pc-set! my-vm 5)
(run-vm my-vm)
(assert-equal 3 (vm-memory-ref my-vm 1)))
(define my-vm (make-forth-vm forth-instruction-set))
(forth-vm-load-program! my-vm adder-program-bytecode)
(forth-vm-pc-set! my-vm 5)
(forth-vm-run! my-vm)
(assert-equal 3 (forth-vm-memory-ref my-vm 1)))
(define-test "fib"
(define my-vm (make-vm forth-instruction-set))
(vm-load-program! my-vm fib-program-bytecode)
(vm-memory-set! my-vm 1 10)
(vm-pc-set! my-vm 5)
(run-vm my-vm)
(assert-equal 55 (vm-memory-ref my-vm 1))))
(define my-vm (make-forth-vm forth-instruction-set))
(forth-vm-load-program! my-vm fib-program-bytecode)
(forth-vm-memory-set! my-vm 1 10)
(forth-vm-pc-set! my-vm 5)
(forth-vm-run! my-vm)
(assert-equal 55 (forth-vm-memory-ref my-vm 1))))
(define-test-suite "debugger"
(define-test "modify-running-program"
(define fib-program-asm (make-assembler forth-instruction-set))
(assemble-instructions! fib-program-asm fib-program-assembly)
(assembler-backpatch! fib-program-asm)
(define my-debugger (make-debugger fib-program-asm))
(define my-debugger (make-forth-debugger fib-program-asm))
(define my-vm (debugger-vm my-debugger))
(define my-data (vm-data-stack my-vm))
(vm-memory-set! my-vm 1 10)
(vm-pc-set! my-vm 5)
(define my-data (forth-vm-data-stack my-vm))
(forth-vm-memory-set! my-vm 1 10)
(forth-vm-pc-set! my-vm 5)
(debugger-breakpoint-add! my-debugger 'fib)
(debugger-continue my-debugger)
(assert-equal 10 (stack-peek my-data))
(stack-pop my-data)
(stack-push my-data 1)
(debugger-continue my-debugger)
(assert-equal 1 (vm-memory-ref my-vm 1)))
(assert-equal 1 (forth-vm-memory-ref my-vm 1)))
(define-test "stepping"
(define fib-program-asm (make-assembler forth-instruction-set))
(assemble-instructions! fib-program-asm fib-program-assembly)
(assembler-backpatch! fib-program-asm)
(define my-debugger (make-debugger fib-program-asm))
(define my-debugger (make-forth-debugger fib-program-asm))
(define my-vm (debugger-vm my-debugger))
(vm-memory-set! my-vm 1 10)
(vm-pc-set! my-vm 5)
(forth-vm-memory-set! my-vm 1 10)
(forth-vm-pc-set! my-vm 5)
(debugger-breakpoint-add! my-debugger 'fib)
(debugger-continue my-debugger)
(assert-equal 23 (vm-pc my-vm))
(assert-equal 23 (forth-vm-pc my-vm))
(debugger-step my-debugger)
(assert-equal 24 (vm-pc my-vm)) ;; dup is a 1 byte instruction
(assert-equal 24 (forth-vm-pc my-vm)) ;; dup is a 1 byte instruction
(debugger-step my-debugger)
(assert-equal 29 (vm-pc my-vm)) ;; push is a 5 byte instruction
(assert-equal 29 (forth-vm-pc my-vm)) ;; push is a 5 byte instruction
(debugger-continue my-debugger)
(assert-equal 23 (vm-pc my-vm)) ;; continue stops stepping
(assert-equal 23 (forth-vm-pc my-vm)) ;; continue stops stepping
))