Login
7 branches 0 tags
Ben (X13/Arch) Simplified things a little 0643405 9 days ago 1260 Commits
nujel / tests / testsuite / bytecode.nuj
(:bytecode-array (:type-name (:bytecode-array [#x0 #x9 #xF #x10 #xFF] [])))
(#x0 (ref (:array (:bytecode-array [#x0 #x9 #xF #x10 #xFF] [])) 0))
(0    (bytecode-eval* (:bytecode-array [#x2 #x0 #x1] []) (environment*)))
(127  (bytecode-eval* (:bytecode-array [#x2 #x7F #x1] []) (environment*)))
(-1   (bytecode-eval* (:bytecode-array [#x2 #xFF #x1] []) (environment*)))
(-128 (bytecode-eval* (:bytecode-array [#x2 #x80 #x1] []) (environment*)))
(5    (bytecode-eval* (assemble ($push/int 3) ($push/int 2) ($add/int) ($ret)) (environment*)))
(3    (bytecode-eval* (assemble ($push/int 3) ($ret)) (environment*)))
(0    (bytecode-eval* (assemble ($push/int 0) ($ret)) (environment*)))
(-3   (bytecode-eval* (assemble ($push/int -3) ($ret)) (environment*)))
(-128 (bytecode-eval* (assemble ($push/int -128) ($nop) ($ret)) (environment*)))
(127  (bytecode-eval* (assemble ($push/int 127) ($ret)) (environment*)))
('(123 asd) (asmrun ($push/val '(123 asd)) ($ret)))
('test (asmrun ($push/val 'test) ($ret)))
(2 ((asmrun ($push/val (fn (a) (+ 1 a))) ($ret)) 1))
('(test list) (let ((code (assemble ($push/val (list 'test 'list)) ($ret)))) (bytecode-eval* code (environment*))))
;;(5 (asmrun ($push/int 2) ($push/int 3) ($apply 2 add/int) ($ret)))
;;(4 (asmrun ($push/int 2) ($dup) ($apply 2 add/int) ($ret)))
(26 (asmrun ($nop) ($push/int 26) ($jmp :asd) ($push/int 99) (list :label :asd) ($ret)))
(26 (asmrun ($nop) ($push/int 26) ($push/val #t) ($jt :asd) ($push/int 99) (list :label :asd) ($ret)))
(99 (asmrun ($nop) ($push/int 26) ($push/val #f) ($jt :asd) ($push/int 99) (list :label :asd) ($ret)))
(55 (+ 1 (+ 2 (+ 3 (+ 4 (+ 5 (+ 6 (+ 7 (+ 8 (+ 9 10))))))))))
(:asd (try (fn (a) (car a)) (throw '(:asd "Test")) :error))
(:asd (try car (throw '(:asd "Test")) :error))
(3 (asmrun ($jmp :start) (list :label :ret) ($push/int 3) ($ret) (list :label :start) ($push/int 2) ($jmp :ret) ($ret)))
(5 (asmrun ($jmp :start) (list :label :func) ($push/int 2) ($add/int) ($ret) (list :label :start) ($push/int 3) ($jmp :func)))
;;('(1 . 2) (asmrun ($push/int 1) ($push/int 2) ($apply 2 cons) ($ret)))
;;(1 (asmrun ($push/int 1) ($push/int 2) ($apply 2 cons) ($apply 1 car) ($ret)))
;;(1 (apply (environment*) (apply assemble (list ($push/int 1) ($push/int 2) ($apply 2 cons) ($apply 1 car) ($ret)))))
(37 (asmrun ($push/val +) ($push/int 12) ($push/int 25) ($apply 2) ($ret)))
(3 (bytecode-eval* (:bytecode-array (apply array/new (flatten (list ($push/int 1) ($push/int 2) ($add/int) ($ret)))) []) (environment*)))
('test (asmrun ($push/val 'test) ($ret)))
(#nil (asmrun ($push/nil) ($ret)))
(:invalid-bc-op (try car (asmrun ($push/val #nil) ($ret))))
(4 (def min* (fn (a b) (if (< a b) a b))) (+ (min* 1 3) (min* 10 3)))
(:vm-error (try car (apply return '(:test))))
(1 ((fn () (return 1) 3)))
;;('(:a :b) (asmrun ($push/val :a) ($push/val '(:b)) ($apply 2 cons) ($ret)))
('(:a :b) (asmrun ($push/val :a) ($push/val '(:b)) ($cons) ($ret)))
(:a (asmrun ($push/val '(:a :b)) ($car) ($ret)))
('(:b) (asmrun ($push/val '(:a :b)) ($cdr) ($ret)))