В настоящее время я работаю с Cortex-M3, и у меня возникли проблемы с пониманием использования xPSR. Я не уверен, почему номер ISR хранится в младших 8 бит.Статус регистрации программы ARM
Источники в Интернете и таблицы данных не дают понять, почему номер должен храниться в xPSR. На ARM7-TDMI текущий режим (FIQ, IRQ, SVC, USR, ABT, UND) сохраняется в младших 8 бит CPSR. Я предполагаю, что он хранится там, поэтому, когда возникает исключение и режим переключается, процессор знает, какой банк регистров должен сохранить состояние CPSR. Однако Cortex-M3 не имеет банковских регистров, и xPSR сохраняется в стеке, когда требуется ISR для обслуживания.
Может ли кто-нибудь просветить меня?
Где вы это видите? Я не вижу cpsr в armv7m, я вижу APSR и по отношению к исключениям xPSR помещается в стек, чтобы сохранить флаги запущенного кода, который был прерван (не редкость, что или программное обеспечение должно это сделать). –
Извините, что в моем вопросе я неправильно назвал терминологию. Регистр статуса текущей программы присутствует в ARM7-TDMI и сохраняется в соответствующем регистре состояния сохраненной программы в зависимости от текущего режима работы. Однако мой вопрос заключается в том, почему на Cortex-M3 есть номер ISR, присутствующий в xPSR. – user2476983