X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=impl.asm;h=659d98ed7258b90b82e7a74061b6364948c15a8a;hb=1878070fedd3dec11082913df12a57f97b69cb12;hp=f6a25cf5b54d420cc016582e6f3d41e0661636a2;hpb=7677dbbdce584a64e63946b39879f5edd114f36a;p=rrq%2Fjonasforth.git diff --git a/impl.asm b/impl.asm index f6a25cf..659d98e 100644 --- a/impl.asm +++ b/impl.asm @@ -6,11 +6,9 @@ macro printlen msg, len { push rsi add rsp, 8 - mov rsi, msg + mov rcx, msg mov rdx, len - mov rax, 1 - mov rdi, 1 - syscall + sys_print_string sub rsp, 8 pop rsi @@ -25,12 +23,6 @@ macro print msg { printlen msg, msg#.len } -macro exit code { - mov rax, $3C - mov rdi, code - syscall -} - 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. - mov rax, 0 - mov rdi, 0 mov rsi, .char_buffer - mov rdx, 1 - syscall + sys_read_char ;; We consider newlines and spaces to be whitespace. cmp [.char_buffer], ' ' @@ -112,11 +101,8 @@ read_word: mov [rsi], al inc [.length] - mov rax, 0 - mov rdi, 0 mov rsi, .char_buffer - mov rdx, 1 - syscall + sys_read_char cmp [.char_buffer], ' ' je .end @@ -243,7 +229,7 @@ parse_number: pop rdi printlen rdi, [.length] newline - exit 100 + sys_terminate 100 segment readable writable