40 lines
768 B
ArmAsm
40 lines
768 B
ArmAsm
.intel_syntax noprefix
|
|
.text
|
|
.globl _start, syscall5
|
|
|
|
_start:
|
|
xor rbp,rbp
|
|
pop rdi
|
|
mov rsi,rsp
|
|
and rsp,-16
|
|
call main__main
|
|
|
|
mov rdi,rax /* syscall param 1 = rax (ret value of main) */
|
|
mov rax,60 /* SYS_exit */
|
|
syscall
|
|
|
|
ret /* should never be reached, but if the OS somehow fails
|
|
to kill us, it will cause a segmentation fault */
|
|
|
|
syscall5:
|
|
mov rax,rdi
|
|
mov rdi,rsi
|
|
mov rsi,rdx
|
|
mov rdx,rcx
|
|
mov r10,r8
|
|
mov r8,r9
|
|
syscall
|
|
ret
|
|
|
|
syscall6:
|
|
mov rax,rdi
|
|
mov rdi,rsi
|
|
mov rsi,rdx
|
|
mov rdx,rcx
|
|
mov r10,r8
|
|
mov r8,r9
|
|
mov r9, [rsp+8]
|
|
syscall
|
|
ret
|
|
|