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