Процесор ARM7TDMI містить регістр CPSR і п'ять регістрів SPSR для використання в обробниках виняткових ситуацій. Регістри статусу програми:
- зберігають інформацію про більшість недавно виконаних операціях АЛУ
- керують включенням і відключенням переривань
- встановлюють режим роботи процесора.
Призначення біт показано на малюнку 2.6.
Малюнок 2.6. Формат регістра статусу програми
Прим. З метою сумісності з майбутніми процесорами ARM не рекомендується торкатися значення зарезервованих біт. Один із способів збереження незмінності цих біт - використання послідовності "читання-модифікація-запис" при зміні вмісту CPSR.
Далі будуть розглянуті: прапори коду умови, біти управління і зарезервовані біти.
6.1 Прапори коду умови
Біти N, Z, C і V є прапорами коду умови, вони встановлюються при виконанні арифметичних і логічних операцій. Крім того, вони оновлюються при виконанні інструкцій MSR і LDM. Процесор ARM7TDMI перевіряє дані прапори для визначення необхідності виконання інструкції. Всі інструкції можуть виконуватися за умовою в стані ARM. У стані Thumb тільки інструкція переходу може виконуватися за умовою. Більш детальна інформація за умовним виконання інструкцій приведена в "ARM Architecture Reference Manual".
6.2 Біти управління
Нижні 8 біт регістра PSR спільно називаються бітами управління.
До них відносяться:
- біти відключення переривань
- біт T
- біти режиму
Біти управління змінюють свій стан при виникненні виняткових ситуацій. Якщо процесор працює привілейованому режимі, то програма може маніпулювати даними битами.
Біти відключення переривань
Біти I і F є бітами відключення переривань:
- якщо біт I = 1, то відключаються переривання IRQ;
- якщо біт F = 1, то відключаються переривання FIQ.
Біт T відображає робочий стан:
- якщо T = 1, то процес працює в стані Thumb
- якщо T = 0, то процесора працює в стані ARM.
Стан роботи також відображається зовнішнім сигналом TBIT.
Увага: не користуйтеся інструкцією MSR для примусового зміни стану біта T в регістрі CPSR. В цьому випадку, процесор перейде в непередбачуване стан.
Біти M [4: 0] визначають режим роботи процесора (див. Таблицю 2.2). Не всі поєднання даних біт визначають дійсний режим процесора, тому, необхідно використовувати тільки наведені нижче значення.
Таблиця 2.2. Значення біт режиму регістра PSR