Код: Выделить всё
.global main
.section .text
.align 2
main:
ldr x0, =GamepadPath
mov x1, #0
mov x8, #56
svc #0
cmp x0, #0
blt FailExit
mov x0, #1
ldr x1, =SuccessMsg
mov x2, #25
mov x8, #64
svc #0
mov x0, #0
mov x8, #93
svc #0
FailExit:
mov x0, #1
ldr x1, =ErrorMsg
mov x2, #25
mov x8, #64
svc #0
mov x0, #0
mov x8, #93
svc #0
.section .data
.section .rodata
GamepadPath: .asciz "/dev/input/js0"
SuccessMsg: .asciz "Gamepad Connected\n\n"
ErrorMsg: .asciz "Gamepad Not Available\n\n"
.section .bss
openat(2) — справочная страница Linux
ARM64.Syscall.sh
Что меня смущает, так это то, что первый аргумент Syscall 56, OpenAt в x0 должен быть возвращаемым значением, установленным системным вызовом Open, который я не могу найти ни в одной ссылке на ARMv8 Linux.
Подробнее здесь: https://stackoverflow.com/questions/786 ... rmv8-fails
Мобильная версия