51 lines
1008 B
ArmAsm
51 lines
1008 B
ArmAsm
bits 64
|
|
|
|
section .data
|
|
hello db 0x0A, 0x0D, "TEST PROGRAM...", 0x0A, 0x0D, 0
|
|
filename db "wow.txt", 0
|
|
|
|
section .text
|
|
|
|
_start:
|
|
mov rax, 0x1 ;sys_write
|
|
mov rdi, 0x1 ;stdout
|
|
lea rsi, [rel hello]
|
|
mov rdx, 19 ;count
|
|
int 0x80
|
|
|
|
; Open a file
|
|
mov rax, 0x2 ;sys_open
|
|
lea rdi, [rel filename] ;filename
|
|
mov rsi, 0x0 ;flags
|
|
int 0x80
|
|
|
|
mov rdi, rax ;fd
|
|
mov rax, 0x0 ;sys_read
|
|
lea rsi, [rel buf] ;buf
|
|
mov rdx, 33 ;count
|
|
int 0x80
|
|
|
|
mov rax, 0x1 ;sys_write
|
|
mov rdi, 0x1 ;stdout
|
|
lea rsi, [rel buf] ;buf
|
|
mov rdx, 33 ;count
|
|
int 0x80
|
|
|
|
mov rax, 0x3 ;sys_close
|
|
mov rdi, 0x3 ;fd
|
|
int 0x80
|
|
|
|
; when we are ready to have an os specific toolchain,
|
|
; this bit (exit & loop) should be appended at the end of every
|
|
; C program we compile.
|
|
|
|
.end:
|
|
mov rax, 0x3C
|
|
mov rdi, 0x0
|
|
int 0x80
|
|
|
|
.loop:
|
|
jmp .loop
|
|
|
|
section .bss
|
|
buf resb 10 |