Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 Современные микропроцессоры (рабочий).doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
478.72 Кб
Скачать

Тема 5.3.3 Регистры

Процессор имеет архитектуру “load-and-store” (загрузка – сохранение), поэтому для выполнения любой обработки данных необходимо сначала перенести эти данные из памяти в определенные регистры, выполнить команду обработки данных и затем записать полученные значения обратно в память.

Основной регистровый файл состоит из 16 пользовательских регистров R0 – R15. Каждый из этих регистров является 32-битными. Регистры R0 – R12 имеют общее назначения и не выполняют ни каких других специальных функций. Регистры R13 – R15 имеют дополнительные функции.

Регистр R13 используется в качестве указателя стека (Stack Pointer – SP).

Регистр R14 является регистром связи (Link Register – LR). При вызове подпрограммы адрес возврата автоматически запоминается в регистре связи, откуда затем считывается при возврате. Такое решение позволяет быстро переходить к «концевым» функциям (функции, которые не вызывают других функций) и возвращаться из них. Если же функция входит в состав «ветви», т.е. вызывает другие функции, содержимое регистра связи необходимо сохранять в стеке.

Регистр R15 выполняет функции счетчика команд (PC).

Многие команды могут работать с регистрами R13 – R15 как с обычными пользовательскими регистрами.

Регистр текущего состояния программы

Наряду с банком регистров в процессоре имеется дополнительный 32-битный регистр, называемый регистром текущего состояния программы (Current Program Status Register – CPSR). Регистр CPSR содержит набор флагов, которые управляют функционированием ЦПУ ARM7 и отображают его состояние.

Как уже было замечено, в состоянии ARM процессор ARM7 поддерживает 7 режимов работы. Каждому режиму соответствует определенная регистровая модель, содержащая набор регистров, доступных процессору в этом режиме. Все возможные регистровые модели для состояния ARM показаны в таблице 5.1. Все регистры общего назначения имеют дополнительные имена, определенные стандартом фирмы ARM. Регистры, имена которых в таблице выделены фоновой заливкой, банкированны, их переключение осуществляется при переключении режимов работы процессора. При переходе из одного рабочего режима в другой, текущее состояние регистров, указанных в таблице без суффиксов, автоматически переписывается в соответствующие банкирующие регистры, а при возврате в прежний режим вновь используется содержимое регистров без суффиксов.

Таблица 5.1 Регистровая модель процессора ARM7TDMI в различных режимах состоянии ARM

user, system

supervisor

abort

undefined

IRQ

FIQ

R0 (a1)

R0

R0

R0

R0

R0

R1 (a2)

R1

R1

R1

R1

R1

R2 (a3)

R2

R2

R2

R2

R2

R3 (a4)

R3

R3

R3

R3

R3

R4 (v1)

R4

R4

R4

R4

R4

R5 (v2)

R5

R5

R5

R5

R5

R6 (v3)

R6

R6

R6

R6

R6

R7 (v4)

R7

R7

R7

R7

R7

R8 (v5)

R8

R8

R8

R8

R8_FIQ

R9 (v6)

R9

R9

R9

R9

R9_FIQ

R10 (v7)

R10

R10

R10

R10

R10_FIQ

R11 (v8)

R11

R11

R11

R11

R11_FIQ

R12 (IP)

R12

R12

R12

R12

R12_FIQ

R13 (SP)

R13_SVC

R13_ABORT

R13_UNDEF

R13_IRQ

R13_FIQ

R14 (LR)

R14_SVC

R14_ABORT

R14_UNDEF

R14_IRQ

R14_FIQ

R15 (PC)

PC

PC

PC

PC

PC

CPSR

CPSR

CPSR

CPSR

CPSR

CPSR

-

SPSR_SVC

SPSR_ABORT

SPSR_UNDEF

SPSR_IRQ

SPSR_FIQ

Получается, что суммарное количество физических 32-битных регистров общего назначения, доступных процессору во всех режимах состояния ARM, равно 31.

Переход процессора из состояния ARM в состояние Thumb производится с помощью команды BX. Набор регистров в состоянии Thumb сокращен по сравнению с набором регистров, доступных в состоянии ARM. Все возможные регистровые модели для состояния Thumb показаны в таблице 5.2.

В кодах операций большинства команд Thumb под номер регистра отведено только 3 бита, поэтому прямое обращение возможно только к восьми регистрам: R0 – R7. Регистры R8 – R12 доступны только через специальные команды загрузки. Регистры SP и LR выполняют фиксированные функции указателя вершины стека и регистра связи соответственно. Для работы с этими регистрами в состоянии Thumb имеются специальные команды.

Таблица 5.2 Регистровая модель процессора ARM7TDMI в состоянии Thumb

user, system

supervisor

abort

undefined

IRQ

FIQ

R0 (a1)

R0

R0

R0

R0

R0

R1 (a2)

R1

R1

R1

R1

R1

R2 (a3)

R2

R2

R2

R2

R2

R3 (a4)

R3

R3

R3

R3

R3

R4 (v1)

R4

R4

R4

R4

R4

R5 (v2)

R5

R5

R5

R5

R5

R6 (v3)

R6

R6

R6

R6

R6

R7 (v4)

R7

R7

R7

R7

R7

SP

SP_svc

SP_abt

SP_und

SP_irq

SP_fiq

LR

LR_svc

LR_abt

LR_und

LR_irq

LR_fiq

PC

PC

PC

PC

PC

PC

CPSR

CPSR

CPSR

CPSR

CPSR

CPSR

-

SPSR_svc

SPSR_abt

SPSR_und

SPSR_irq

SPSR_fiq

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]