Utilize new implementation of vm
This commit is contained in:
48
tests.scm
48
tests.scm
@@ -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
|
||||
))
|
||||
|
||||
Reference in New Issue
Block a user