Atomic cps operations (ints lol)
This commit is contained in:
parent
883ee645c4
commit
5915c42fe3
@ -6,6 +6,8 @@
|
|||||||
#:use-module ((scheme base) #:select (write-bytevector))
|
#:use-module ((scheme base) #:select (write-bytevector))
|
||||||
#:export ((make-assembler* . make-assembler)
|
#:export ((make-assembler* . make-assembler)
|
||||||
assembler?
|
assembler?
|
||||||
|
assembler-pos
|
||||||
|
assembler-buf
|
||||||
assembler-labels
|
assembler-labels
|
||||||
emit-label
|
emit-label
|
||||||
emit-instruction
|
emit-instruction
|
||||||
|
14
scmvm/language/cps.scm
Normal file
14
scmvm/language/cps.scm
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
(define-module (scmvm language cps)
|
||||||
|
#:use-module (scmvm assembler)
|
||||||
|
#:use-module (ice-9 match)
|
||||||
|
#:export (compile-cps))
|
||||||
|
|
||||||
|
(define (compile-atom asm atom)
|
||||||
|
(cond
|
||||||
|
[(number? atom) (emit-literal asm atom)]))
|
||||||
|
|
||||||
|
(define (compile-cps asm soup)
|
||||||
|
(when (not (null? soup))
|
||||||
|
(match (car soup)
|
||||||
|
[(? (negate pair?) atom) (compile-atom asm atom)])
|
||||||
|
(compile-cps asm (cdr soup))))
|
13
tests.scm
13
tests.scm
@ -1,8 +1,9 @@
|
|||||||
(use-modules (d- test)
|
(use-modules (d- test)
|
||||||
(scmvm assembler)
|
(scmvm assembler)
|
||||||
(scmvm language assembly)
|
|
||||||
(scmvm vm)
|
(scmvm vm)
|
||||||
(scmvm debugger)
|
(scmvm debugger)
|
||||||
|
(scmvm language assembly)
|
||||||
|
(scmvm language cps)
|
||||||
(rnrs bytevectors)
|
(rnrs bytevectors)
|
||||||
(rnrs io ports)
|
(rnrs io ports)
|
||||||
((scheme base)
|
((scheme base)
|
||||||
@ -166,3 +167,13 @@
|
|||||||
(debugger-continue my-debugger)
|
(debugger-continue my-debugger)
|
||||||
(assert-equal 23 (vm-pc my-vm)) ;; continue stops stepping
|
(assert-equal 23 (vm-pc my-vm)) ;; continue stops stepping
|
||||||
))
|
))
|
||||||
|
|
||||||
|
(define-test-suite "cps"
|
||||||
|
(define-test "atomics"
|
||||||
|
(define asm (make-assembler))
|
||||||
|
(compile-cps asm '(1))
|
||||||
|
(assert-equal 1 (bytevector-u32-native-ref (assembler-buf asm) 0)))
|
||||||
|
(define-test "atomics"
|
||||||
|
(define asm (make-assembler))
|
||||||
|
(compile-cps asm '(1))
|
||||||
|
(assert-equal 1 (bytevector-u32-native-ref (assembler-buf asm) 0))))
|
||||||
|
Loading…
Reference in New Issue
Block a user