Pobierz lr wywołującego z podprogramu do zmiennej C - ramię

Mam funkcję C, która ma uzyskać wartość rejestru lr wywołującego w zmiennej lokalnej.

Wypróbowałem następujący kod:

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

Jednak nic to nie zmienia. Nie chodzi o to, że otrzymuję niewłaściwą wartość, tylko że wartość zmiennej lokalnej lr w ogóle się nie zmienia (zawiera śmieci).

Jakieś pomysły?

Dzięki!

questionAnswers(2)

yourAnswerToTheQuestion