From fe7d97a0a608398f500b1c64ff885acecf2541d5 Mon Sep 17 00:00:00 2001 From: Kyle Gunger Date: Thu, 18 May 2023 23:30:18 -0400 Subject: File reading/writing --- tnslc/hello.tnsl | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) (limited to 'tnslc/hello.tnsl') diff --git a/tnslc/hello.tnsl b/tnslc/hello.tnsl index 8fb98a3..0742564 100644 --- a/tnslc/hello.tnsl +++ b/tnslc/hello.tnsl @@ -1,8 +1,33 @@ :include "c_wrap.tnsl" -{}uint8 hello = "Hello World!\n\0" +{}uint8 star = "hello.tnsl\0" +{}uint8 space = " \0" +{}uint8 new_line = "\n\0" -/; main [int] - _printf(~hello{0}) +/; print_triangle (int argc) + /; loop (int i = 0; i < argc) [i++] + /; loop (int j = 0; j < argc - i) [j++] + _printf(~space{0}) + ;/ + /; loop (int j = 0; j < 1 + 2*i) [j++] + _printf(~star{0}) + ;/ + _printf(~new_line{0}) + ;/ +;/ + +/; main (int argc, ~~uint8 argv) [int] + # On windows, the first two arguments are passed in RCX and RDX, so we need to + # update their positions here or else tnsl will have garbage values in r8 and r9 + asm "mov r8, rcx" + asm "mov r9, rdx" + + # If on linux, you would use rdi and rsi instead of rcx and rdx, respectively + # simply comment out the bove asm, and uncomment the below lines + # asm "mov r8, rdi" + # asm "mov r9, rsi" + + print_triangle(argc) + return 0 ;/ \ No newline at end of file -- cgit v1.2.3