v8a v7a teléfono saber que procesador cómo como celulares armv8l armeabi arm system-calls arm64

v7a - ¿Cómo implementar la llamada al sistema en ARM64?



procesador arm en celulares (1)

Estoy trabajando con la codificación de ensamblaje Arm64 y deseo implementar llamadas al sistema utilizando la instrucción svc. No puedo encontrar ninguna implementación de llamada al sistema arm64 en línea. Además, no puedo encontrar la lista de llamadas del sistema para arm64. También explica la implementación.


Puede pasar seis argumentos en x0 a x5 , el valor de retorno se guarda en x0 .

Para dar un fragmento de ensamblador, se trata de write syscall desde la implementación de libc de Android Bionic . los tres argumentos de write ya estarían en x0-x2 . El número de Syscall se pasa en x8 .

/* Generated by gensyscalls.py. Do not edit. */ #include <private/bionic_asm.h> .hidden __set_errno ENTRY(write) mov x8, __NR_write svc #0 cmn x0, #(MAX_ERRNO + 1) cneg x0, x0, hi b.hi __set_errno ret END(write)

Dale una mirada a AArch64 ABI .

La generación más nueva de arquitecturas usa números de include / uapi / asm-generic / unistd.h .

También puede verificar arch / arm64 / include / asm / syscall.h para el argumento y el manejo del valor devuelto.

Otro ejemplo:

Si tiene as y ld en la mano, puede crear un ejecutable simple que acaba de salir con un valor de salida.

Aquí 42 es nuestro valor de retorno y 93 es la llamada al sistema de exit .

$cat answer.s .global _start _start: mov x0, #42 mov x8, #93 svc #0 $as answer.s -o answer.o $ld answer.o -o answer $./answer $echo $? 42