tutorial raspberry instruction ensamblador data assembly arm

assembly - raspberry - ¿El programa GAS ARM(linux) más corto posible?



ensamblador en raspberry pi (2)

Hay alguna información sobre las llamadas al sistema en http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=3105/4 . También puede consultar la página 5 de http://isec.pl/papers/into_my_arms_dsls.pdf .

He jugado con la idea de aprender un lenguaje ensamblador, y he decidido probar ARM. Decidí ir con el ensamblador GNU, principalmente porque está disponible en el repositorio de mi teléfono celular, para poder jugar con el ensamblaje en cualquier parte, si estoy aburrido.

De todos modos, he buscado en la web, pero no encuentro ningún tipo de referencia sobre cómo salir correctamente de un binario de ARM Linux. Entendí que el equivalente x86 básicamente establece el registro eax en un número que especifica la llamada al sistema, y ​​luego llama a la interrupción del sistema 0x80 para realmente realizar la llamada al sistema, salir del programa correctamente; ahora quiero hacer algo similar para ARM (y obviamente el mismo código no funciona, ya que usa registros específicos x86 y otras cosas).

Entonces, básicamente, ¿cómo escribiría un ejecutable GAS ARM mínimo, simplemente saliendo normalmente con el valor de salida 0?


teensy.s

.global _start .thumb_func _start: mov r0, #42 mov r7, #1 svc #0

Makefile

CROSS_COMPILE?=arm-linux-gnueabihf- teensy: $(CROSS_COMPILE)as teensy.s -o teensy.o $(CROSS_COMPILE)ld teensy.o -o teensy ls -l teensy $(CROSS_COMPILE)objdump -d teensy.o $(CROSS_COMPILE)readelf -W -a teensy clean: rm teensy teensy.o