From: Bryan English Date: Mon, 2 Feb 2026 03:50:47 +0000 (+0000) Subject: working puts X-Git-Url: https://rethought.computer/gitweb//gitweb//git?a=commitdiff_plain;h=0412517544d4b63a90722aedcf9ca5be6bd5c47f;p=sorel-lang.git working puts --- diff --git a/rel-lang/a.out b/rel-lang/a.out deleted file mode 100644 index e69de29..0000000 diff --git a/rel-lang/rel-ir/src/lib.rs b/rel-lang/rel-ir/src/lib.rs index bb25502..699dbba 100644 --- a/rel-lang/rel-ir/src/lib.rs +++ b/rel-lang/rel-ir/src/lib.rs @@ -33,7 +33,6 @@ pub enum IR { Drop, Over, Rot, - PutS, PutN, If, Else, diff --git a/rel-lang/relc/src/ir.rs b/rel-lang/relc/src/ir.rs index 003194b..2330920 100644 --- a/rel-lang/relc/src/ir.rs +++ b/rel-lang/relc/src/ir.rs @@ -121,7 +121,6 @@ impl ImportTree { "drop" => IR::Drop, "over" => IR::Over, "rot" => IR::Rot, - "puts" => IR::PutS, "putn" => IR::PutN, "if" => IR::If, "else" => IR::Else, diff --git a/rel-lang/relc/src/riscv_asm_codegen.rs b/rel-lang/relc/src/riscv_asm_codegen.rs index 69b39b4..f2e9936 100644 --- a/rel-lang/relc/src/riscv_asm_codegen.rs +++ b/rel-lang/relc/src/riscv_asm_codegen.rs @@ -320,7 +320,7 @@ impl<'a> CodeGen<'a> { self.label(format!("_endloop_{}:", loop_counter)); stack.pop(); }, - _ => bail!("not implemented yet"), + _ => bail!("not implemented yet: {:?}", ir), } } diff --git a/rel-lang/stdlib/out.rel b/rel-lang/stdlib/out.rel index 381d690..28f745d 100644 --- a/rel-lang/stdlib/out.rel +++ b/rel-lang/stdlib/out.rel @@ -12,10 +12,19 @@ 1 + \ ( addr addr+1 ) dup \ ( addr addr+1 addr+1) @:8 \ ( addr addr+1 byte ) - endloop - drop \ ( addr addr+len ) + endloop \ ( addr addr+len ) swap \ ( addr+len addr ) - \ ( len ) ; -"this is a string" strlen +: puts ( addr -- addr) + dup dup \ ( addr addr addr ) + strlen \ ( addr addr len ) + 1 \ ( addr addr len 1 ) + rot \ ( addr len 1 addr ) + rot \ ( addr 1 addr len ) + write \ ( addr bytes-written-or-err ) + drop \ ( addr ) +; + +"Hello, World! \n" puts diff --git a/rel-lang/stdlib/test.sh b/rel-lang/stdlib/test.sh index c446927..0d32765 100644 --- a/rel-lang/stdlib/test.sh +++ b/rel-lang/stdlib/test.sh @@ -4,6 +4,6 @@ # ./test-mem.out ../target/debug/relc out.rel -riscv64-unknown-linux-gnu-as -o out.o out.asm -riscv64-unknown-linux-gnu-cc -O1 -no-pie -o test-out.out putn.c out.o -nostartfiles +as -o out.o out.asm +cc -O1 -no-pie -o test-out.out out.o putn.c -nostartfiles ./test-out.out