Скачиваний:
83
Добавлен:
01.05.2014
Размер:
817.66 Кб
Скачать
  1. Способы адресации и система команд

    1. Типы данных

Процессор ARM7TDMI поддерживает следующие типы данных:

  • слова: 32 бит;

  • полуслова: 16 бит;

  • байты: 8 бит.

Их необходимо выровнять следующим образом:

  • Значения слов необходимо выровнять в пределах 4 байт

  • Значения полуслов необходимо выровнять в пределах 2 байт

  • Значения байт могут располагаться в любых пределах байта.

Системы памяти, как правило, поддерживают все типы данных. В частности, система должна поддерживать запись подслов без повреждения смежных байт в слове.

    1. Режимы адресации

Процессор ARM7TDMI поддерживает 5 режимов адресации:

Режим 1 - Сдвиговые операнды для инструкций обработки данных.

Режим 2 - Чтение и запись слова или беззнакового байта.

Режим 3 - Чтение и запись полуслова или загрузка знакового байта.

Режим 4 - Множественные чтение и запись.

Режим 5 - Чтение и запись сопроцессора.

Режимы адресации с указанием их типов и мнемонических кодов представлены в табл. 4.

Таблица 4. Режимы адресации

Режим адресации

Тип или режим адресации

Мнемонический код или тип стека

Режим 2 <a_mode2>

Константа смещения

[Rn, #+/-12bit_Offset]

Регистр смещения

[Rn, +/-Rm]

Масштабный регистр смещения

[Rn, +/-Rm, LSL #5bit_shift_imm]

[Rn, +/-Rm, LSR #5bit_shift_imm]

[Rn, +/-Rm, ASR #5bit_shift_imm]

[Rn, +/-Rm, ROR #5bit_shift_imm]

[Rn, +/-Rm, RRX]

Предварительное индексированное смещение

-

Константа

[Rn, #+/-12bit_Offset]!

Регистр

[Rn, +/-Rm]!

Масштабный регистр

[Rn, +/-Rm, LSL #5bit_shift_imm]!

[Rn, +/-Rm, LSR #5bit_shift_imm]!

[Rn, +/-Rm, ASR #5bit_shift_imm]!

[Rn, +/-Rm, ROR #5bit_shift_imm]!

[Rn, +/-Rm, RRX]!

Смещение с последующим индексированием

-

Константа

[Rn], #+/-12bit_Offset

Регистр

[Rn], +/-Rm

Масштабный регистр

[Rn], +/-Rm, LSL #5bit_shift_imm

[Rn], +/-Rm, LSR #5bit_shift_imm

[Rn], +/-Rm, ASR #5bit_shift_imm

[Rn], +/-Rm, ROR #5bit_shift_imm

[Rn, +/-Rm, RRX]

Режим 2, привилегированный <a_mode2P>

Константа смещения

[Rn, #+/-12bit_Offset]

Регистр смещения

[Rn, +/-Rm]

Масштабный регистр смещения

[Rn, +/-Rm, LSL #5bit_shift_imm]

[Rn, +/-Rm, LSR #5bit_shift_imm]

[Rn, +/-Rm, ASR #5bit_shift_imm]

[Rn, +/-Rm, ROR #5bit_shift_imm]

[Rn, +/-Rm, RRX]

Смещение с последующим индексированием

-

Константа

[Rn], #+/-12bit_Offset

Регистр

[Rn], +/-Rm

Масштабный регистр

[Rn], +/-Rm, LSL #5bit_shift_imm

[Rn], +/-Rm, LSR #5bit_shift_imm

[Rn], +/-Rm, ASR #5bit_shift_imm

[Rn], +/-Rm, ROR #5bit_shift_imm

[Rn, +/-Rm, RRX]

Режим 3, <a_mode3>>

Константа смещения

[Rn, #+/-8bit_Offset]

Предварительное индексирование

[Rn, #+/-8bit_Offset]!

Последующее индексирование

[Rn], #+/-8bit_Offset

Регистр

[Rn, +/-Rm]

Предварительное индексирование

[Rn, +/-Rm]!

Последующее индексирование

[Rn], +/-Rm

Режим 4, чтение <a_mode4L>

IA, последующий инкремент

FD, full descending

IB, предварительный инкремент

ED, empty descending

DA, последующий декремент

FA, full ascending

DB предварительный декремент

EA, empty ascending

Режим 4, запись <a_mode4S>

IA, последующий инкремент

FD, full descending

IB, предварительный инкремент

ED, empty descending

DA, последующий декремент

FA, full ascending

DB предварительный декремент

EA, empty ascending

Режим 5, передача данных сопроцессора <a_mode5>

Константа смещения

[Rn, #+/-(8bit_Offset*4)]

Предварительное индексирование

[Rn, #+/-(8bit_Offset*4)]!

Последующее индексирование

[Rn], #+/-(8bit_Offset*4)