Anfangszustand der Programmregister und -stapel unter Linux ARM

Ich spiele zurzeit mit ARM Assembly unter Linux als Lernübung. Ich verwende 'Bare'-Assembly, d. H. Kein libcrt oder libgcc. Kann jemand auf Informationen verweisen, welchen Status der Stapelzeiger und andere Register beim Start des Programms haben, bevor der erste Befehl aufgerufen wird? Offensichtlich zeigt pc / r15 bei _start, und der Rest scheint mit zwei Ausnahmen auf 0 initialisiert zu sein; sp / r13 zeigt auf eine Adresse weit außerhalb meines Programms und r1 zeigt auf eine etwas höhere Adresse.

Also zu einigen festen Fragen:

Was ist der Wert in r1?Ist der Wert in sp ein legitimer Stapel, der vom Kernel zugewiesen wurde?Wenn nicht, welche Methode wird zum Zuweisen eines Stapels bevorzugt? Verwenden Sie brk oder weisen Sie einen statischen .bss-Abschnitt zu?

Alle Hinweise wäre dankbar.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage