Atomic cps operations (ints lol)
This commit is contained in:
@@ -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))))
|
||||
Reference in New Issue
Block a user