cons example

This commit is contained in:
2026-05-18 10:12:55 -06:00
parent afc68e2a55
commit f5fe6b5b20
6 changed files with 34 additions and 1 deletions

View File

@@ -329,7 +329,7 @@ lowerArithmetic r p = QBE.BinaryOp r bop x y
PrimMul a b -> (QBE.Mul,a,b)
_ -> _
sizeofScm :: Int
sizeofScm :: Integral a => a
sizeofScm = 8
lowerCons

BIN
example/cons Executable file

Binary file not shown.

4
example/cons.anf Normal file
View File

@@ -0,0 +1,4 @@
;;; -*- mode:scheme -*-
(let ((x0 (prim:cons 4 5)) (x1 (prim:write x0))) x1)

18
example/cons.s Normal file
View File

@@ -0,0 +1,18 @@
.text
.globl main
main:
pushq %rbp
movq %rsp, %rbp
movl $16, %edi
callq GC_malloc
movq %rax, %rdi
movq $18, (%rdi)
movq $22, 8(%rdi)
callq scm_write
leave
ret
.type main, @function
.size main, .-main
/* end function main */
.section .note.GNU-stack,"",@progbits

1
example/cons.scm Normal file
View File

@@ -0,0 +1 @@
(prim:write (prim:cons 4 5))

10
example/cons.ssa Normal file
View File

@@ -0,0 +1,10 @@
export
function w $main () {
@start
%x0 =l call $GC_malloc (l 16)
%.2 =l add %x0, 8
storel 18, %x0
storel 22, %.2
%x1 =l call $scm_write (l %x0)
ret %x1
}