From fbc57cad5622039654b95590ab1efb464984c71b Mon Sep 17 00:00:00 2001 From: Mirek Kratochvil Date: Tue, 31 Oct 2023 21:07:03 +0100 Subject: debug the gc --- sum.s | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 sum.s (limited to 'sum.s') diff --git a/sum.s b/sum.s new file mode 100644 index 0000000..4cc709f --- /dev/null +++ b/sum.s @@ -0,0 +1,43 @@ + + +.include "include/uskel.s" + +.include "include/data.s" +.include "include/io.s" +.include "include/intops.s" + +.primop1 sumn + needs_alloc $0110 + + mov 010(%rsi), %rax + test %rax, %rax + jz sumn_zero + + dec %rax + thunkto %r10, $INT_code, %rax + thunkto %r10, $sumn, $1, %r10 + thunkto %r10, $plus, $2, %rsi, %r10 #TODO try the other way? + primop1_cont_indirect %r10 + + sumn_zero: + primop1_ret_int $0 + +# || -> cont +.thunkcode main + needs_alloc $0160 + # push a new integer + thunkto %r11, $INT_code, $10000000 + + # push the plus + thunkto %r11, $sumn, $1, %r11 + + # push the print + thunkto %r11, $print, $1, %r11 + + # push a cont thunk for main_exit + thunkto %rsi, $main_exit, $0 + + # evaluate into main_exit + enter %r11 + +.include "include/main_exit.s" -- cgit v1.2.3