self.label(format!("_endloop_{}:", loop_counter));
stack.pop();
},
- _ => bail!("not implemented yet"),
+ _ => bail!("not implemented yet: {:?}", ir),
}
}
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
# ./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