Я понимаю, что мне нужно нажать Link Register в начале вызова функции и поместить это значение в Program Couter перед возвратом, так что выполнение может нести одно из того, где оно было до вызова функции.
Я не понимаю, почему большинство людей делают это, добавляя дополнительный регистр в push/pop. Например:
push {ip, lr}
...
pop {ip, pc}
Например, здесь Hello World в ARM, предоставленном официальным блоком ARM
Вопрос 2: какой регистр является "ip" (т.е. r7 или что?)