Add alternative Linux backend
[rrq/jonasforth.git] / os / linux.asm
index 12795971055be6625e18500d579ca77b142c3a7c..2ea3d16f87e12d1b969bfabeb563418472617495 100644 (file)
@@ -1,4 +1,5 @@
 format ELF64 executable
+entry main
 
 macro os_code_section {
   segment readable executable
@@ -8,15 +9,37 @@ macro os_data_section {
   segment readable writable
 }
 
+os_code_section
+
 os_initialize:
   ret
 
 os_print_string:
+  push rsi
+  mov rax, 1
+  mov rdi, 1
+  mov rsi, rcx
+  syscall
+  pop rsi
   ret
 
 os_read_char:
+  push rsi
+  mov rax, 0
+  mov rdi, 0
+  mov rsi, .buffer
+  mov rdx, 1
+  syscall
+  pop rsi
+  movzx rax, byte [.buffer]
   ret
 
 os_terminate:
-  ret
+  mov rdi, rax
+  mov rax, $3C
+  syscall
+
+os_data_section
+
+os_read_char.buffer db ?