ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
1321470 Топик полностью
VVB (18.06.2023 22:19, просмотров: 221) ответил st256 на Я что-то запутался... Сохранять в стеке указатель на этот же стек? А просто отминусовать SP в начале, а потом прибавить в конце, не проще ли?
SP это немного необычный РОН (R13). 

Для разных архитектур ARM имеются разные теневые регистры SP. Для ARM7/9/11/Cortex-R/Cortex-A имеются отдельные стеки каждого прерывания.

Часто нужно сохранить любой ненужный регистр для гарантирования выравнивания стека по 8 байтам (в соответствие с ARM ABI), возможно, сохранение SP для этого и сделано.


LR это обычный РОН, R14, который может использоваться в общем случае как угодно

команда "B" не использует R14.

"BL" использует. То есть любой вызов функции из ISR перепишет R14, который содержит адрес возврата из прерывания. Поэтому R14 надо сохранять в начале прерывания и восстанавливать в конце.