projects
/
rrq
/
jonasforth.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Get rid of remaining "loose" syscalls
[rrq/jonasforth.git]
/
impl.asm
diff --git
a/impl.asm
b/impl.asm
index f6a25cf5b54d420cc016582e6f3d41e0661636a2..659d98ed7258b90b82e7a74061b6364948c15a8a 100644
(file)
--- a/
impl.asm
+++ b/
impl.asm
@@
-6,11
+6,9
@@
macro printlen msg, len {
push rsi
add rsp, 8
push rsi
add rsp, 8
- mov r
si
, msg
+ mov r
cx
, msg
mov rdx, len
mov rdx, len
- mov rax, 1
- mov rdi, 1
- syscall
+ sys_print_string
sub rsp, 8
pop rsi
sub rsp, 8
pop rsi
@@
-25,12
+23,6
@@
macro print msg {
printlen msg, msg#.len
}
printlen msg, msg#.len
}
-macro exit code {
- mov rax, $3C
- mov rdi, code
- syscall
-}
-
struc string bytes {
. db bytes
.len = $ - .
struc string bytes {
. db bytes
.len = $ - .
@@
-88,11
+80,8
@@
find:
read_word:
.skip_whitespace:
;; Read characters into .char_buffer until one of them is not whitespace.
read_word:
.skip_whitespace:
;; Read characters into .char_buffer until one of them is not whitespace.
- mov rax, 0
- mov rdi, 0
mov rsi, .char_buffer
mov rsi, .char_buffer
- mov rdx, 1
- syscall
+ sys_read_char
;; We consider newlines and spaces to be whitespace.
cmp [.char_buffer], ' '
;; We consider newlines and spaces to be whitespace.
cmp [.char_buffer], ' '
@@
-112,11
+101,8
@@
read_word:
mov [rsi], al
inc [.length]
mov [rsi], al
inc [.length]
- mov rax, 0
- mov rdi, 0
mov rsi, .char_buffer
mov rsi, .char_buffer
- mov rdx, 1
- syscall
+ sys_read_char
cmp [.char_buffer], ' '
je .end
cmp [.char_buffer], ' '
je .end
@@
-243,7
+229,7
@@
parse_number:
pop rdi
printlen rdi, [.length]
newline
pop rdi
printlen rdi, [.length]
newline
-
exit
100
+
sys_terminate
100
segment readable writable
segment readable writable