Предыдущая Следующая

Суффикс

Установка

Примечание

Битовая маска битов управления

SPSR[7:0] или CPSR[7:0]

_f

Битовая маска битов флагов

SPSR[31:24] или CPSR[31:24]

_s

Битовая маска битов состояния

SPSR[23:16] или CPSR[23:16]

Битовая маска дополнительных битов

SPSR[15:8] или CPSR[15:8]

1.4.3. Регистровые модели процессора в состоянии THUMB

Как было сказано выше, переход процессора из состояния ARM в состояние THUMB и обратно производится с помощью команды ВХ. Состояние THUMB отличается от состояния ARM длиной команд: в состоянии THUMB

команды не 32-, а 16-битные. При выполнении программы, встроенный декодер преобразует команды, записанные в системе THUMB, в команды ARM. Вследствие компактности используемых форматов, система команд THUMB имеет ряд особенностей и ограничений по сравнению с системой ARM. Набор регистров в состоянии THUMB сокращен по сравнению с набором регистров, доступных в состоянии ARM. Все возможные регистровые модели для состояния THUMB приведены в Табл. 1.16.

Таблица 1.16. Регистровые модели процессорного ядра ARM7TDMI-S в различных режимах состояния THUMB

User, System

FIQ

Supervisor

Abort

IRQ

Undefined

RO (al)

RO

RO

RO

RO

RO

Rl (a2)

Rl

Rl

Rl

Rl

Rl

R2(a3)

R2

R2

R2

R2

R2

R3 (a4)

R3

R3

R3

R3

R3

R4 (vl)

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_flq

SP_svc

SP_abt

SP_irq

SP_und

LR

LRfiq

LR_svc

LR_abt

LR_irq

LR_und

PC

PC

PC

PC

PC

PC

CPSR

CPSR

CPSR

CPSR

CPSR

CPSR

 

SPSR_fiq

SPSR_svc

SPSR_abt

SPSRJrq

SPSR und

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

1.4.4. Система команд THUMB

Полный список команд ARM7TDMI-S для состояния THUMB приведен в Табл. 1.17. Для того чтобы уточнить синтаксис ассемблерных команд ARM7TDMI-S состояния THUMB, можно обратиться к источникам [10, 11], а также к файлам документации, которые находятся на прилагаемом к данной книге компакт-диске.

Таблица 1.17. Список команд THUMB

Описание

Ассемблерная мнемоника

Обновление флагов

Действие

Команды пересылки

Непосредственное значение

MOV Rd, #<8bit_Imm>

N.Z

Rd:= 8bit_Imm (8-битное непосредственное значение)

Из Lo в Lo

MOV Rd, Rm

N,Z

Rd:= Rm (сбрасываются флаги ChV)

Из Hi в Lo, из Lo в Hi, из Hi в Hi

MOV Rd, Rm

 

Rd:= Rm (нет из Lo в Lo; флаги не изменяются)

Команды арифметические

Сложение с непосредственным 3-бит-ным значением

ADD Rd, Rn, #<3bit_Imm>

N, Z, С, V

Rd:= Rn + 3bit_Imm (3-битное непосредственное значение)

Сложение Lo с Lo

ADD Rd, Rn, Rm

N, Z, С, V

Rd:= Rn + Rm

Сложение Hi с Lo, LocHi, HicHi

ADD Rd, Rm

 

Rd:= Rn + Rm (нет Lo с Lo; флаги не изменяются)

Сложение с непосредственным 8-битным значением

ADD Rd, #<8bit_Imm>

N, Z, С, V

Rd:= Rd + 8bit_Imm (8-битное непосредственное значение)

Сложение с учетом переноса

ADC Rd, Rm

N,Z,C,V

Rd:= Rd + Rm + Carry

Сложения значения с SP

ADD SP, #<7*4bit_Imm >

 

R13:= R13 + 7 * 4bit_Imm (9-битное непосредственное значение, выровненное в границах слова. Флаги не изменяются)

Формирование адреса через SP

ADD Rd, SP, #<8*4bit_Imm >

 

Rd:= R13 + 8*4bit_Imm (10-битное непосредственное значение, выровненное в границах слова. Флаги не изменяются)

Формирование адреса через PC

ADD Rd, PC, #<8*4bit_Imm >

 

Rd:= (R15 AND OxFFFFFFFC)+ + 8*4bit_Imm (10-битное непосредственное значение, выровненное в границах слова. Флаги не изменяются)

Вычитание

SUB Rd, Rn, Rm

N, Z, С, V

Rd:= Rn - Rm

Вычитание непосредственного 3-битногозначения

SUB Rd, Rn, #<3bit_lmm>

N, Z, С, V

Rd:= Rn - 3bit_Imm (3-битное непосредственное значение)

Вычитание непосредственного 8-битного значения

SUB Rd, #<8bit_Imm>

N, Z, С, V

Rd:= Rd - 8bit_Imm (8-битное непосредственное значение)

Вычитание с учетом заема

SBC Rd, Rm

N, Z, С, V

Rd:= Rd - Rm - NOT(Carry)

Вычитание значения из SP

SUB SP, #<7*4bit_lmm >

 

R13:= R13 - 7*4bit_Imm (9-битное непосредственное значение, выровненное в границах слова. Флаги не изменяются)

Смена знака (негатив)

NEG Rd, Rm

N,Z, C,V

Rd:= - Rm

Умножение

MUL Rd, Rm

N, Z,

Rd:= Rd * Rm (флаги С и V)

Таблица 1.17. Список команд THUMB (продолжение)


Предыдущая Следующая

Медицина и технологии детский отит onclinic.ru.




Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book4_28.html on line 897

Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book4_28.html on line 897

Warning: include() [function.include]: Failed opening './news.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/picprof/data/www/picprof.com/book/book4_28.html on line 897