6. Регистры статуса программы
Процессор 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 отражает рабочее состояние:
- если T = 1, то процесс работает в состоянии Thumb
- если T = 0, то процессора работает в состоянии ARM.
Рабочее состояние также индицируется внешним сигналом TBIT.
Внимание: не пользуйтесь инструкцией MSR для принудительного изменения состояния бита T в регистре CPSR. В этом случае, процессор перейдет в непредсказуемое состояние.
Биты режима
Биты M[4:0] определяют режим работы процессора (см. таблицу 2.2). Не все сочетания данных бит определяют действительный режим процессора, поэтому, необходимо использовать только приведенные ниже значения.
Таблица 2.2. Значения бит режима регистра PSR
M[4:0] |
Режим |
Регистры, видимые в состоянии Thumb |
Регистры, видимые в состоянии ARM |
10000 |
пользователя |
r0-r7, SP, LR, PC, CPSR |
r0-r14, PC, CPSR |
10001 |
FIQ |
r0-r7, SP_fiq, LR_fiq, PC, CPSR, SPSR_fiq |
r0-r7, r8_fiq-r14_fiq, PC, CPSR, SPSR_fiq |
10010 |
IRQ |
r0-r7, SP_irq, LR_irq, PC, CPSR, SPSR_irq |
r0-r12, r13_irq, r14_irq, PC, CPSR, SPSR_irq |
10011 |
супервизорный |
r0-r7, SP_svc, LR_svc, PC, CPSR, SPSR_svc |
r0-r12, r13_svc, r14_svc, PC, CPSR, SPSR_svc |
10111 |
аварийный |
r0-r7, SP_abt, LR_abt, PC, CPSR, SPSR_abt |
r0-r12, r13_abt, r14_abt, PC, CPSR, SPSR_abt |
11011 |
неопределенный |
r0-r7, SP_und, LR_und, PC, CPSR, SPSR_und |
r0-r12, r13_und, r14_und, PC, CPSR, SPSR_und |
11111 |
системный |
r0-r7, SP, LR, PC, CPSR |
r0-r14, PC, CPSR |
Если в M[4:0] запрограммировать некорректное значение, то это приведет к переходу процессора в необратимое состояние, выйти из которого можно только инициировав состояние сброса.
7.3 Зарезервированные биты
Оставшиеся биты в регистрах PSR не используются, но зарезервированы. При изменении флага PSR или бит управления необходимо гарантировать, что значения зарезервированных бит не затрагиваются. Также необходимо гарантировать, чтобы ход выполнения программы не зависел от значения данных бит, т.к. в будущих процессорах они могут иметь 1 или 0-ое значение.
|