Atomic cps operations (ints lol)

This commit is contained in:
Dane Johnson 2025-09-08 19:05:25 -05:00
parent 883ee645c4
commit 5915c42fe3
3 changed files with 28 additions and 1 deletions

View File

@ -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
View 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))))

View File

@ -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))))