Процессор может функционировать в двух режимах, двух уровнях доступа и может находиться в двух операционных состояниях:
Всего существует два уровня доступа в работе процессора:
При работе на непривелегированном уровне доступа процессор:
MSR, MRS инструкциям и не имеет возможности использовать CPS инструкции,
При работе на привелегированном уровне доступа процессор имеет доступ ко всем ресурсам и может использовать любые инструкции.
В Handler mode процессор всегда находится на привелегированном уровне доступа.
Непривелегированное ПО может использовать SVC инструкции для осуществления вызова супервизора с целью передачи управления привелегированной части загруженного ПО.
Процессор может находиться либо в Thumb State — это обычное состояние, в котором процессор выполняет инструкции в соответствии с логикой загруженного ПО или в Отладочном (Debug State) состоянии. В этом случае процессор остановлен для осуществления одной из процедур отладки или просмотра отладочной информации.
Процессор использует полный убывающий стек. Это означает, что указатель стека показывает на последний помещённый в стек элемент. Когда процессор заталкивает в стек очередной элемент, указатель на вершину стека уменьшается на размер этого элемента и показывает на новую “вершину” стека.
Процессор реализует два стека: главный стек и процессный стек с индивидуальными копиями указателей стека.
В Tread state, регистр CONTROL контролирует какой из стеков используется сейчас. В Handler state, процессор всегда использует главный стек.
Просуммируем изученные на этом этапе сведения:
| Состояние процессора | Использование | Уровень доступа | Используемый стек |
|---|---|---|---|
| Thread | Приложение | привелегированный и непривелегированный | Основной или процессный стеки |
| Handler | Обработка исключений/прерываний | привелегированный | главный стек |
| Карта памяти | Буфер записи DCode и System шины |