retroforth/vm/nga-c-no-libc/obsd64.s
crc f1d8d866d8 vm/nga-c-no-libc: update sources and work on openbsd support (now builds, but does not run}
FossilOrigin-Name: 3df16411b8c768560c08602d7d88b7bc0dffffb636a099966477623a725075e8
2019-12-20 19:04:13 +00:00

53 lines
1,018 B
ArmAsm

; This is the minimal startup + I/O functionality needed to run
; RETRO on an OpenBSD x86-64 system.
; =============================================================
bits 64
section .note.openbsd.ident
align 2
dd 8,4,1
db "OpenBSD",0
dd 0
align 2
section .text
global putchar
global getchar
global _start
extern main
align 8
_start:
jmp main
jmp $
align 8
putchar:
mov rax, rdi
mov [buf], eax
mov rax, 4 ; sys_write
mov rdi, 1 ; stdout
mov rsi, buf ; address
mov rdx, 1 ; 1 byte
syscall
ret
align 8
getchar:
mov rax, 3 ; sys_read
mov rdi, 0 ; stdin
mov rsi, buf ; address
mov rdx, 1 ; 1 byte
syscall
mov rax, 0
mov eax, [buf]
ret
section .data
buf:
dd 0
dd 0
dd 0
dd 0