Estado inicial de los registros del programa y la pila en Linux ARM

Actualmente estoy jugando con el ensamblaje ARM en Linux como un ejercicio de aprendizaje. Estoy usando un ensamblaje 'pelado', es decir, no libcrt o libgcc. ¿Alguien puede indicarme la información sobre el estado en el que apilarán la pila y otros registros al inicio del programa antes de que se llame la primera instrucción? Obviamente, los puntos pc / r15 en _start, y el resto parece estar inicializado a 0, con dos excepciones; sp / r13 apunta a una dirección que está muy lejos de mi programa, y ​​r1 apunta a una dirección ligeramente más alta.

Así que para algunas preguntas sólidas:

¿Cuál es el valor en r1?¿El valor en sp es una pila legítima asignada por el kernel?Si no es así, ¿cuál es el método preferido para asignar una pila? ¿Usar brk o asignar una sección .bss estática?

Cualquier indicador sería apreciada.

Respuestas a la pregunta(4)

Su respuesta a la pregunta