summaryrefslogtreecommitdiff
path: root/tnslc/c_wrap.tnsl
diff options
context:
space:
mode:
authorKyle Gunger <kgunger12@gmail.com>2023-08-31 01:00:44 -0400
committerKyle Gunger <kgunger12@gmail.com>2023-08-31 01:00:44 -0400
commit3bfdbd26958e3b8193500dd5fad8dcd58c5a8457 (patch)
tree59329ed9c362afc504d20f38a51e95bf93704202 /tnslc/c_wrap.tnsl
parent346bc784bedcd00ca8037b5c5a4194c0af9757fb (diff)
Updates to include new c_wrap
Diffstat (limited to 'tnslc/c_wrap.tnsl')
-rw-r--r--tnslc/c_wrap.tnsl283
1 files changed, 0 insertions, 283 deletions
diff --git a/tnslc/c_wrap.tnsl b/tnslc/c_wrap.tnsl
deleted file mode 100644
index ac516da..0000000
--- a/tnslc/c_wrap.tnsl
+++ /dev/null
@@ -1,283 +0,0 @@
-# Must be included at the top of the file
-asm "extern malloc"
-asm "extern realloc"
-asm "extern free"
-
-asm "extern printf"
-
-asm "extern CreateFileA"
-asm "extern ReadFile"
-asm "extern WriteFile"
-asm "extern CloseHandle"
-
-{}uint8 _alert = "Alert!\n\0"
-{}uint8 _dec = "%d\n\0"
-{}uint8 _ptr = "%p\n\0"
-
-/; _alloc (uint size) [~void]
- ~void out
-
- asm "mov rax, rsp"
- asm "xor rdx, rdx"
- asm "mov rcx, 32"
- asm "div rcx"
- asm "sub rsp, rdx"
- asm "sub rsp, 32"
-
- # Mov size into proper register, and set all extras to zero
- asm "mov rcx, r8"
- asm "mov rdx, 0"
- asm "mov r8, 0"
- asm "mov r9, 0"
-
- asm "call malloc"
- # Set out to the returned value
- # (The compiler assignes spaces sequentially, and we have a uint in r8)
- asm "mov r9, rax"
- return out
-;/
-
-/; _realloc (~void ptr, uint new_size) [~void]
- ~void out
-
- asm "mov rax, rsp"
- asm "xor rdx, rdx"
- asm "mov rcx, 32"
- asm "div rcx"
- asm "sub rsp, rdx"
- asm "sub rsp, 32"
-
- # Mov ptr and new size into proper registers, and set all extras to zero
- asm "mov rcx, r8"
- asm "mov rdx, r9"
- asm "mov r8, 0"
- asm "mov r9, 0"
- # Do call
- asm "call realloc"
- # Set out to the returned value
- # (The compiler assignes spaces sequentially. We have a ptr in r8, and a uint in r9)
- asm "mov r10, rax"
- return out
-;/
-
-/; _delete (~void ptr)
-
- asm "mov rax, rsp"
- asm "xor rdx, rdx"
- asm "mov rcx, 32"
- asm "div rcx"
- asm "sub rsp, rdx"
- asm "sub rsp, 32"
-
- # setup call by clearing most values
- asm "mov rcx, r8"
- asm "mov rdx, 0"
- asm "mov r8, 0"
- asm "mov r9, 0"
- # do call
- asm "call free"
- # there's no more to do 'cause free returns nothing
-;/
-
-/; _printf (~void str)
-
- asm "mov rax, rsp"
- asm "xor rdx, rdx"
- asm "mov rcx, 32"
- asm "div rcx"
- asm "sub rsp, rdx"
- asm "push qword 0"
- asm "push qword 0"
- asm "push qword 0"
- asm "push qword 0"
-
- # setup call by clearing most values
- asm "mov rcx, r8"
- asm "mov rdx, 0"
- asm "mov r8, 0"
- asm "mov r9, 0"
- # do call
- asm "call printf"
- # there's no more to do 'cause printf returns nothing
-;/
-
-/; _print_num (~void str, int num)
-
- asm "mov rax, rsp"
- asm "xor rdx, rdx"
- asm "mov rcx, 32"
- asm "div rcx"
- asm "sub rsp, rdx"
- asm "push qword 0"
- asm "push qword 0"
- asm "push qword 0"
- asm "push qword 0"
-
- # setup call by clearing most values
- asm "mov rcx, r8"
- asm "mov rdx, r9"
- asm "mov rdi, 0"
- asm "mov rsi, 0"
- asm "mov r8, 0"
- asm "mov r9, 0"
- # do call
- asm "call printf"
- # there's no more to do 'cause printf returns nothing
-;/
-
-
-# Create file for writing (overwrite)
-/; _create_file (~void name) [~void]
- ~void out
-
- asm "mov rax, rsp"
- asm "xor rdx, rdx"
- asm "mov rcx, 32"
- asm "div rcx"
- asm "sub rsp, rdx"
-
- asm "mov rcx, r8" # lpFileName
- asm "mov rdx, 1" # dwDesiredAccess
- asm "shl rdx, 28" # (GENERIC_READ 1 << 31 | GENERIC_WRITE 1 << 30)
- asm "mov r8, 3" # dwShareMode
- asm "mov r9, 0" # lpSecurityAttributes
-
- asm "push qword 0" # hTemplateFile
- asm "push qword 128" # dwFlagsAndAttributes (NORMAL_FILE = 128)
- asm "push qword 2" # dwCreationDisposition (CREATE_ALWAYS = 2)
-
- # Shadow space
- asm "push r9"
- asm "push r8"
- asm "push rdx"
- asm "push rcx"
-
- # Do call
- asm "call CreateFileA"
-
- # Set out to the returned value
- # (The compiler assignes spaces sequentially. We have a ptr in r8)
- asm "mov r9, rax"
-
- return out
-;/
-
-# Open file for reading or writing (no overwrite)
-/; _open_file (~void name) [~void]
- ~void out
-
- asm "mov rax, rsp"
- asm "xor rdx, rdx"
- asm "mov rcx, 32"
- asm "div rcx"
- asm "sub rsp, rdx"
-
- asm "mov rcx, r8" # lpFileName
- asm "mov rdx, 1" # dwDesiredAccess
- asm "shl rdx, 28" # (GENERIC_READ 1 << 31 | GENERIC_WRITE 1 << 30)
- asm "mov r8, 3" # dwShareMode
- asm "mov r9, 0" # lpSecurityAttributes
-
- asm "push qword 0" # hTemplateFile
- asm "push qword 128" # dwFlagsAndAttributes (NORMAL_FILE = 128)
- asm "push qword 3" # dwCreationDisposition (OPEN_EXISTING = 3)
-
- # Shadow space
- asm "push r9"
- asm "push r8"
- asm "push rdx"
- asm "push rcx"
-
- # Do call
- asm "call CreateFileA"
-
- # Set out to the returned value
- # (The compiler assignes spaces sequentially. We have a ptr in r8, and a uint in r9)
- asm "mov r9, rax"
-
- return out
-;/
-
-/; _close_file (~void handle)
-
- asm "mov rax, rsp"
- asm "xor rdx, rdx"
- asm "mov rcx, 32"
- asm "div rcx"
- asm "sub rsp, rdx"
-
- asm "mov rcx, r8" # handle
- asm "mov rdx, 0"
- asm "mov r8, 0"
- asm "mov r9, 0"
-
- # Shadow space
- asm "push r9"
- asm "push r8"
- asm "push rdx"
- asm "push rcx"
-
- asm "call CloseHandle"
-
- asm "add rsp, 32"
-;/
-
-/; _read_byte (~void handle, ~uint8 byte, ~int read) [bool]
- int out
-
- asm "mov rax, rsp"
- asm "xor rdx, rdx"
- asm "mov rcx, 32"
- asm "div rcx"
- asm "sub rsp, rdx"
-
- asm "mov rcx, r8" # handle
- asm "mov rdx, r9" # buffer
- asm "mov r8, 1" # one byte
- asm "mov r9, r10" # read bytes buffer
- asm "push qword 0"
-
- # Shadow space
- asm "push r9"
- asm "push r8"
- asm "push rdx"
- asm "push rcx"
-
- asm "call ReadFile"
-
- asm "mov r11, rax"
-
- return out
-;/
-
-/; _write_byte (~void handle, ~uint8 byte) [int]
- int out
-
- asm "mov rax, rsp"
- asm "xor rdx, rdx"
- asm "mov rcx, 32"
- asm "div rcx"
- asm "sub rsp, rdx"
-
- asm "mov rcx, r8" # handle
- asm "mov rdx, r9" # buffer
- asm "mov r8, 1" # one byte
- asm "mov r9, 0"
- asm "push qword 0"
-
- # Shadow space
- asm "push r9"
- asm "push r8"
- asm "push rdx"
- asm "push rcx"
-
- asm "call WriteFile"
-
- asm "mov r10, rax"
-
- return out
-;/
-
-/; print_alert
- _printf(~_alert{0})
-;/