4. Краткое описание набора инструкций ядра ARM7TDMI

4. Краткое описание набора инструкций ядра ARM7TDMI

В данном разделе приводится описание наборов инструкций процессора ARM7TDMI.

4.1 Краткое описание формата

В данном разделе представлено краткое описание наборов инструкций ARM и Thumb.

Ключ к таблицам наборов инструкций представлен в таблице 1.1.

Процессор ARM7TDMI выполнен на основе архитектуры ARMv4T. Более полное описание обоих наборов инструкций представлено в "ARM Architecture Reference Manual".

Таблица 1.1. Ключ к таблицам

Тип Описание Поле условия, см. таблицу 1.6. <Oprnd2> Операнд 2, см. таблицу 1.4. Поле управления, см. таблицу 1.5. S Устанавливает коды условия, опционально. B Операция над байтами, опционально. H Операция над полусловами, опционально. T Принудительная трансляция адреса. Не может использоваться с предварительно индексированными адресами. Режимы адресации См. Режимы адресации. #32bit_Imm 32-разрядная константа, полученная путем сдвига вправо 8-разрядного значения на четное количество бит. <reglist> Список регистров, разделенных запятой, в фигурных скобках ( < and >).

Форматы набора инструкций ARM показаны на рисунке 1.5.

Более детальная информация относительно форматов набора инструкций ARM приведена в "ARM Architectural Reference Manual".

Рисунок 1.5. Форматы набора инструкций ARM

Некоторые коды инструкций не определены, но они не вызывают поиска неопределенных инструкций, например, инструкция умножения с битом 6 измененным к 1. Запрещается использовать такие инструкции, т.к. в будущем их действие может быть изменено. Результат выполнения данных кодов инструкций в составе процессора ARM7TDMI непредсказуем.

4.2 Краткое описание инструкций ARM

Набор инструкций ARM представлен в таблице 1.2.

Таблица 1.2. Краткое преставление инструкций ARM

Подробно ознакомиться с системой команд в режиме ARM можно здесь.

Режимы адресации - процедуры, которые используются различными инструкциями для генерации значений, используемых инструкциями. Процессор ARM7TDMI поддерживает 5 режимов адресации:

  • Режим 1 - Сдвиговые операнды для инструкций обработки данных.
  • Режим 2 - Чтение и запись слова или беззнакового байта.
  • Режим 3 - Чтение и запись полуслова или загрузка знакового байта.
  • Режим 4 - Множественные чтение и запись.
  • Режим 5 - Чтение и запись сопроцессора.

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

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

Режим адресации Тип или режим адресации Мнемонический код или тип стека Режим 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)

Операнд является частью инструкции, которая ссылается на данные или периферийное устройство. Операнды 2 представлены в таблице 1.4.

Таблица 1.4. Операнд 2

Операнд Тип Мнемонический код Операнд 2 <Oprnd2> Значение константы #32bit_Imm Логический сдвиг влево Rm LSL #5bit_Imm Логический сдвиг вправо Rm LSR #5bit_Imm Арифметический сдвиг вправо Rm ASR #5bit_Imm Вращение вправо Rm ROR #5bit_Imm Регистр Rm Логический сдвиг влево Rm LSL Rs Логический сдвиг вправо Rm LSR Rs Арифметический сдвиг вправо Rm ASR Rs Вращение вправо Rm ROR Rs Расширенное вращение вправо Rm RRX

Поля представлены в таблице 1.5.

Таблица 1.5. Поля

Тип Суффикс Установки Бит Поле _c Бит-маска поля управления 3 _f Бит-маска поля флагов 0 _s Бит-маска поля статуса 1 _x Бит-маска поля расширения 2

Поля условий представлены в таблице 1.6.

Таблица 1.6. Поля условий

Тип поля Суффикс Описание Условие Условие EQ Равно Z=1 NE Неравно Z=0 CS Беззнаковое больше или равно C=1 CC Беззнаковое меньше C=0 MI Отрицательное N=1 PL Положительное или ноль N=0 VS Переполнение V=1 VC Нет переполнения V=0 HI Беззнаковое больше C=1, Z=0 LS Беззнаковое меньше или равно C=0, Z=1 GE Больше или равно N=V (N=V=1 или N=V=0) LT Меньше NV (N=1 и V=0) или (N=0 и V=1) GT Больше Z=0, N=V (N=V=1 или N=V=0) LE Меньше или равно Z=0 или NV (N=1 и V=0) или (N=0 и V=1) AL Всегда истинный флаги игнорируются

4.3 Краткое описание набора инструкций Thumb

Форматы набора инструкций Thumb показаны на рисунке 1.6. Более подробная информация по форматам наборов инструкций ARM приведена "ARM Architectural Reference Manual".

📎📎📎📎📎📎📎📎📎📎