5 from string
import printable
8 heap, set_str_ansi, set_str_unic, get_str_ansi, get_str_unic
13 base_addr = 0x20000000
28 checks for any printable character including space.
30 ret_addr, args = jitter.func_args_stdcall([
'c'])
31 ret = 1
if chr(args.c & 0xFF)
in printable
else 0
32 return jitter.func_ret_stdcall(ret_addr, ret)
38 void *memcpy(void *dest, const void *src, size_t n);
40 copies n bytes from memory area src to memory area dest.
42 ret_addr, args = jitter.func_args_stdcall([
'dest',
'src',
'n'])
43 jitter.vm.set_mem(args.dest, jitter.vm.get_mem(args.src, args.n))
44 return jitter.func_ret_stdcall(ret_addr, args.dest)
50 void *memset(void *s, int c, size_t n);
52 fills the first n bytes of the memory area pointed to by s with the constant
55 ret_addr, args = jitter.func_args_stdcall([
'dest',
'c',
'n'])
56 jitter.vm.set_mem(args.dest, chr(args.c & 0xFF) * args.n)
57 return jitter.func_ret_stdcall(ret_addr, args.dest)
63 int puts(const char *s);
65 writes the string s and a trailing newline to stdout.
67 ret_addr, args = jitter.func_args_stdcall([
's'])
69 char = jitter.vm.get_mem(index, 1)
73 char = jitter.vm.get_mem(index, 1)
75 return jitter.func_ret_stdcall(ret_addr, 1)
81 char = jitter.vm.get_mem(fmt, 1)
88 char = jitter.vm.get_mem(fmt, 1)
91 if char.lower()
in '%cdfsux':
93 if token.endswith(
's'):
94 arg = jitter.get_str_ansi(jitter.get_arg_n_stdcall(cur_arg))
96 arg = jitter.get_arg_n_stdcall(cur_arg)
104 ret_addr, args = jitter.func_args_stdcall([
'string',
'size',
'fmt'])
105 cur_arg, fmt = 3, args.fmt
106 size = args.size
if args.size
else 1
108 output = output[:size - 1]
110 jitter.vm.set_mem(args.string, output +
'\x00')
111 return jitter.func_ret_stdcall(ret_addr, ret)
115 ret_addr, args = jitter.func_args_stdcall([
'string',
'fmt'])
116 cur_arg, fmt = 2, args.fmt
119 jitter.vm.set_mem(args.string, output +
'\x00')
120 return jitter.func_ret_stdcall(ret_addr, ret)
124 ret_addr, args = jitter.func_args_stdcall([
'fmt'])
125 cur_arg, fmt = 1, args.fmt
129 return jitter.func_ret_stdcall(ret_addr, ret)
133 ret_ad, args = jitter.func_args_stdcall([
"dst",
"src"])
134 str_src = jitter.get_str_ansi(args.src) +
'\x00'
135 jitter.vm.set_mem(args.dst, str_src)
136 jitter.func_ret_stdcall(ret_ad, args.dst)
140 ret_ad, args = jitter.func_args_stdcall([
"src"])
141 str_src = jitter.get_str_ansi(args.src)
142 jitter.func_ret_stdcall(ret_ad, len(str_src))
146 ret_ad, args = jitter.func_args_stdcall([
"msize"])
147 addr = linobjs.heap.alloc(jitter, args.msize)
148 jitter.func_ret_stdcall(ret_ad, addr)
152 ret_ad, args = jitter.func_args_stdcall([
"ptr"])
153 jitter.func_ret_stdcall(ret_ad, 0)
157 ret_ad, args = jitter.func_args_stdcall([
"ptr_str1",
"ptr_str2"])
160 jitter.func_ret_stdcall(ret_ad,
cmp(s1, s2))
164 ret_ad, args = jitter.func_args_stdcall([
"ptr_str1",
"ptr_str2",
"size"])
167 jitter.func_ret_stdcall(ret_ad,
cmp(s1, s2))