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))
|
||||
#:export ((make-assembler* . make-assembler)
|
||||
assembler?
|
||||
assembler-pos
|
||||
assembler-buf
|
||||
assembler-labels
|
||||
emit-label
|
||||
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)
|
||||
(scmvm assembler)
|
||||
(scmvm language assembly)
|
||||
(scmvm vm)
|
||||
(scmvm debugger)
|
||||
(scmvm language assembly)
|
||||
(scmvm language cps)
|
||||
(rnrs bytevectors)
|
||||
(rnrs io ports)
|
||||
((scheme base)
|
||||
@ -166,3 +167,13 @@
|
||||
(debugger-continue my-debugger)
|
||||
(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