Holen Sie sich das lr des Aufrufers aus dem Unterprogramm in die Variable C - arm

Ich habe eine C-Funktion, die den Wert des lr-Registers des Aufrufers in eine lokale Variable schreiben soll.

Ich habe den folgenden Code ausprobiert:

volatile long lr;
asm(
    "str %0, [sp, #4]\n" :
    "=r", (lr)
);

Dies ändert jedoch nichts. Es ist nicht so, dass ich den falschen Wert erhalte, es ist nur so, dass sich der Wert der lokalen Variablen lr überhaupt nicht ändert (enthält Müll).

Irgendwelche Ideen?

Vielen Dank!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage