Поиск по сайту:

 


По базе:  

микроэлектроника, микросхема, микроконтроллер, память, msp430, MSP430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, SED1335, mega128, avr, mega128  
  Главная страница > Обзоры по типам > Микроконтроллеры > ARM > ARM7TDMI

реклама

 




Мероприятия:




5. Регистры

Процессор ARM7TDMI содержит всего 37 регистров:

  • 31 32-разрядных регистра общего назначения
  • 6 регистров статуса.

Не все регистры доступны в одно и тоже время. Доступность регистров для программиста зависит от состояния процессора и рабочего режима.

5.1 Набор регистров в состоянии ARM

В состоянии ARM доступны 16 регистров общего назначения, один или два регистра статуса. В привилегированных режимах становятся доступными специфические банки регистров. На рисунке 2.3 демонстрируется, какие регистры доступны в каждом режиме.

В набор регистров в состоянии ARM входят 16 регистров r0...r15. Еще один регистр, CPSR, содержит флаги условия кода и биты текущего режима. Регистры r0...r13 являются регистрами общего назначения и могут использоваться как для хранения данных, так и для хранения адреса. Регистры r14 и r15 выполняют следующие специальные функции:

Регистр связи

Регистр 14 используется как регистр связи (LR) подпрограммы.

Регистр r14 принимает копию регистра r15 при выполнении инструкции переход по ссылке (BL).

Во всех остальных случаях регистр r14 может использоваться как регистр общего назначения. Соответствующие банкированные регистры r14_svc, r14_irq, r14_fiq, r14_abt и r14_und аналогичным образом используются для запоминания значений возврата r15 при возникновении прерываний и исключительных ситуаций или при выполнении инструкции BL внутри процедур обработки прерываний или исключительных ситуаций.

Счетчик программы

Регистр 15 хранит значение PC.

В состоянии ARM биты [1:0] регистра r15 имеют неопределенное значение и должны игнорироваться. Биты [31:2] содержат значение PC.

В состоянии Thumb бит [0] имеет неопределенное значение и должен игнорироваться. Биты [31:1] содержат значение PC.

Регистр r13 iиспользуется в качестве указателя стека (SP).

В привилегированных режимах доступен еще один регистр - регистр хранения статуса программы (SPSR). Он содержит флаги кода условия и биты режима, являющиеся результатом исключительной ситуации, которое вызвало вхождение в текущий режим.

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

В режиме FIQ имеется семь банкированных регистров в позициях r8-r14 (r8_fiq-r14_fiq).

В состоянии ARM несколько обработчиков быстрых прерываний (FIQ) не должны выполнять запись в какой-либо регистр.

В режимах пользователя, IRQ, супервизорном, аварийном и неопределенном имеется два банкированных регистра в позиции r13 и r14, позволяя хранить собственное значение SP и LR в каждом режиме.

В системном режиме используются те же регистры, что и в режиме пользователя.

На рисунке 2.3 представлены регистры для состояния ARM.

Организация регистров в состоянии ARM
Рисунок 2.3. Организация регистров в состоянии ARM

5.2 Набор регистров в состоянии Thumb

Набор регистров в состоянии Thumb является поднабором по отношению к набору регистров в состоянии ARM. Программист имеет доступ к:

  • 8 регистрам общего назначения r0-r7
  • Счетчику программ PC
  • Указателю стека SP
  • Регистру связи LR
  • Регистру текущего состояния программы CPSR.

В каждом привилегированном режиме имеются банкированные регистры SP, LR и SPSR. Данный набор регистров показан на рисунке 2.4.

Организация регистров в состоянии Thumb
Рисунок 2.4. Организация регистров в состоянии Thumb

5.3 Соотношение между регистрами в состояниях ARM и Thumb

Регистры в состоянии Thumb связаны с регистрами в состоянии ARM следующим образом:

  • Регистры r0-r7 в состоянии Thumb и регистры r0-r7 в состоянии ARM идентичны
  • Регистры CPSR и SPSR в состоянии Thumb и регистры CPSR и SPSR в состоянии ARM идентичны
  • Указатель стека SP в режиме Thumb совпадает с позицией r13 в состоянии ARM
  • Регистр связи LR в режиме Thumb совпадает с позицией r14 в состоянии ARM
  • Счетчика программы PC в режиме Thumb совпадает с положением счетчика программы PC в состоянии ARM (r15).

Данные соотношения показаны на рисунке 2.5.

Расположение регистров  в состояниях Thumb и ARM
Рисунок 2.5. Расположение регистров в состояниях Thumb и ARM

Прим.: Регистры r0-r7 называются младшими регистрами, а регистры r8-r15 - старшими регистрами.

5.4 Доступ к старшим регистрам в состоянии Thumb

В состоянии Thumb старшие регистры r8-r15 не являются частью стандартного набора регистров. Программисту на языке Ассемблер ограничивается доступ к ним, но их можно использовать для кратковременного хранения.

Можно использовать специальные варианты инструкции MOV для передачи значений из младших регистров r0-r7 в старшие и, наоборот, из старших регистров в младшие. Инструкция CMP позволяет сравнивать значения старших регистров со значениями младших регистров, а инструкция ADD позволяет сложить значения старших регистров со значениями младших регистров. Более подробная информация приведена в "ARM Architecture Reference Manual".



<-- Предыдущая страница Оглавление Следующая страница -->





 
Впервые? | Реклама на сайте | О проекте | Карта портала
тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru
©1998-2023 Рынок Микроэлектроники