From f5fe6b5b202c3625ce593fb518d3688e80b5cdaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Madeleine=20Sydney=20=C5=9Alaga?= Date: Mon, 18 May 2026 10:12:55 -0600 Subject: [PATCH] cons example --- app/Gyehoek/ANF/Syntax.hs | 2 +- example/cons | Bin 0 -> 16520 bytes example/cons.anf | 4 ++++ example/cons.s | 18 ++++++++++++++++++ example/cons.scm | 1 + example/cons.ssa | 10 ++++++++++ 6 files changed, 34 insertions(+), 1 deletion(-) create mode 100755 example/cons create mode 100644 example/cons.anf create mode 100644 example/cons.s create mode 100644 example/cons.scm create mode 100644 example/cons.ssa diff --git a/app/Gyehoek/ANF/Syntax.hs b/app/Gyehoek/ANF/Syntax.hs index dca3463..2b6a820 100644 --- a/app/Gyehoek/ANF/Syntax.hs +++ b/app/Gyehoek/ANF/Syntax.hs @@ -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 diff --git a/example/cons b/example/cons new file mode 100755 index 0000000000000000000000000000000000000000..26c03d7db4d06af5625cc3872eb4d0323e66a39e GIT binary patch literal 16520 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 K2ch63x_$up5kZsy literal 0 HcmV?d00001 diff --git a/example/cons.anf b/example/cons.anf new file mode 100644 index 0000000..b6008d9 --- /dev/null +++ b/example/cons.anf @@ -0,0 +1,4 @@ +;;; -*- mode:scheme -*- + +(let ((x0 (prim:cons 4 5)) (x1 (prim:write x0))) x1) + diff --git a/example/cons.s b/example/cons.s new file mode 100644 index 0000000..155dd85 --- /dev/null +++ b/example/cons.s @@ -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 diff --git a/example/cons.scm b/example/cons.scm new file mode 100644 index 0000000..172cb5d --- /dev/null +++ b/example/cons.scm @@ -0,0 +1 @@ +(prim:write (prim:cons 4 5)) diff --git a/example/cons.ssa b/example/cons.ssa new file mode 100644 index 0000000..f10a040 --- /dev/null +++ b/example/cons.ssa @@ -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 +} \ No newline at end of file