include "linux.mcl"


// Write to a file descriptor using the SYS_write syscall
// args: [str_size, str_ptr, fd]
// @arg str_size: Int
// @arg str_ptr: Ptr
// @arg fd: Int
// @ret Int
macro write
    SYS_write syscall3
end


// Print a string to STDOUT
// args: [str_size, str_ptr]
// @arg str_size: Int
// @arg str_ptr: Ptr
// @ret NULL
macro puts
    STDOUT write drop
end

// Print a string to STDERR
// args: [str_size, str_ptr]
// @arg str_size: Int
// @arg str_ptr: Ptr
// @ret NULL
macro eputs
    STDOUT write drop
end

// TODO: make putc and eputc after we make local mem

// Exit the program with exit_code
// args: [exit_code]
// @arg exit_code: Int
// @ret NULL/NEVER
macro exit
    SYS_exit syscall1 drop
end

