Опубликован: 17.03.2025 | Доступ: свободный | Студентов: 0 / 0 | Длительность: 07:30:00
Лекция 7:

Архитектура процессоров

Приложение А

1. Сокращенная система команд Intel x86 (IA32)

Арифметические операции:

ADD - сложение.

Пример: add eax, ebx; сложить EAX и EBX результат в EAX

SUB - вычитание.

MUL - умножение (беззнаковое).

IMUL - умножение (знаковое).

DIV- деление (беззнаковое).

IDIV- деление (знаковое).

INC - инкремент, увеличение на 1.

DEX - декремент уменьшение на 1.

Пример: dec ecx; Уменьшение счетчика ecx на 1

Логические операции:

AND - логическое "И".

OR - логическое "ИЛИ".

XOR - исключающее "ИЛИ".

Пример: xor ebx, ebx; Очистить ebx

NOT- логическое отрицание.

Сравнения и переходы:

CMP - сравнение с установкой флага 0

Пример: cmp ecx, 0; сравнение содержимого регистра ecx с 0 в результате совпадения флаг 0 - ZF регистра состояний установится в 0;

JNE (JNZ)-переход, если не равно.

Пример: dec ecx; jnz .loop; Если ecx не достиг 0 вернуться на начало

JE - переход, если равно.

Пример: cmp ecx, 0 je .done; Если в ходе предыдущей операции ecx=0, то перейти по адресу метки done

JL - переход, если меньше.

JG - переход, если больше.

Передача управления:

CALL - вызов процедуры.

Пример: call printf; вызвать подпрограмму по адресу метки

RET - возврат из процедуры.

JMP - безусловный переход.

Загрузки и сохранения:

MOV - перемещение данных.

Пример: mov ebx, edx; записать содержимое регистра edx в ebx

MOVZX - считать содержимое источника как байт или слово с заполнением 0 до размера операнда.

Пример: movzx ecx, byte [n]; загрузить байт с заполнением нулями до размера ecx

PUSH - помещение значения в стек.

Пример: push eax; поместить в стек eax

POP - извлечение значения из стека.

Пример: pop eax; восстановить из стека eax

LOAD - загрузка из памяти (в основном через MOV).

Управление прерываниями:

INT - вызов прерывания.

Пример int 0x80; вызов прерывания операционной системы Linux

IRET - возврат из прерывания.

Системные команды (для работы с процессором и памятью):

HLT - остановка процессора.

NOP -нет операции (пустая команда).

2. Система команд Atmega328

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

ADD - сложение без переноса

Пример: ADD r16, r17; сложение регистров r16 и r17 с занесением результата в r16

ADC - сложение с учетом переноса.

Пример: ADC r16, r17; сложение регистров r16 и r17 с занесением результата в r16 и формирование знака переноса

SUB - вычитание.

SBC - вычитание с учетом переноса.

MUL - умножение.

DIV - деление.

INC - инкремент, увеличение регистра на 1.

Пример: inc r20; Инкремент содержимого r20

DEC - декремент, уменьшение регистра на 1.

Логические команды:

AND - логическое И.

Пример: and r2, r3 ; Поразрядное and r2 и r3, результат поместить в r2

OR - логическое ИЛИ.

XOR - логическое исключающее ИЛИ.

Команды сдвига и поворота:

LSL - логический сдвиг влево.

LSR - логический сдвиг вправо.

ROR - циклический сдвиг вправо.

ROL - циклический сдвиг влево.

Команды сравнения:

CPI - сравнение с немедленным значением.

CP - сравнение двух регистров.

Пример: cp r20, r16; Сравнить регистры r20 и r16

Управление переходами:

JMP - безусловный переход.

CALL - вызов подпрограммы.

RET - возврат из подпрограммы.

BRNE, BEQ, BGE, BLT и другие - условные переходы.

Пример: brne <метка перехода > перейти по метке если прядущее значение равно 0

cpi r27, 5; Сравнить r27 с 5

brne loop ; Перейти если r27 < > 5

Команды работы с вводом-выводом:

MOV - запись между регистрами

Пример: mov r18, r19; Копировать r19 в r18

IN - чтение данных из порта ввода.

Пример: in r25, $16; Считать порт B

OUT - запись данных в порт вывода.

Команды работы с памятью:

LD - загрузка данных из SRAM или EEPROM.

LDI - загрузка непосредственного значения в регистр

Пример: LDI R16, 10; Загрузить в регистр R16 значение 10

ST - сохранение данных в SRAM.

Команды работы с прерываниями:

SEI - разрешение прерываний.

CLI - отключение прерываний.

RET - возврат из обслуживания прерывания.

Подробное описание инструкций на русском языке [8].

3. Общая система команд для процессоров ARM

Команды ввода вывода

LOAD (LD) - загрузка данных из памяти в регистр.

Примеры:

LDR r0, [r1]; Загружает значение из памяти по адресу R1 в регистр R0

ldr r0, =0 ; Заносит в регистр r0 значение по ссылке

STORE (STR) - сохранение данных из регистра в память.

Пример: STR r0, [r2] ; Сохраняет значение r0 в память по адресу хранящемуся в r2

Арифметические и логические команды

ADD - сложение двух регистров.

Пример: ADD R2, R0, R1; Сложить r0 и r1 результат записать r2

SUB - вычитание.

AND, ORR, EOR - логические операции.

Пример: AND R4, R2, R3; Выполнить побитно операцию И над содержимым регистров r2 и r3 результат записать в r4

MUL - умножение.

SDIV, UDIV - деление знаковых и беззнаковых чисел.

Примеры: MUL R4, R0, R1; Умножить содержимое регистров r0 и r1, результат поместить в r4; SDIV R5, R4, R2; Разделить содержимое регистра r4 на r2, результат в r5 (знаковое деление)

Команды управления переходами

B - безусловный переход.

BL - переход с вызовом подпрограммы.

BX - переход на адрес, расположенный в регистре.

Примеры: B label; Переход к метке label. BL function; Вызов функции. BX R3; Переход на адрес, находящийся в r3

Команды управления памятью

PUSH - сохранить регистры в стек.

POP - извлечь регистры из стека.

Примеры: PUSH {R0, R1}; Сохраняет R0 и R1 в стек. POP {R2, R3}; Извлекает значения из стека в R2 и R3

Подробное описание инструкций на русском языке [9].

Приложение Б


Рис. 7.14.

Литература

  1. Орлов С.А. Цилькер Б.А. Организация ЭВМ и систем: Учебник для ВУЗов. 3-е изд. СПб.2014.-688с.:ил.
  2. Ерохин В.В. Микропроцессоры. Теория и практика проектирования, Солон-Пресс, 2023. - 256с.:ил.
  3. Структурная схема процессора Intel Pentium
  4. Статья An Introduction to ARM Architecture with Each Module's Working Principle
  5. Статья A microarchitectural analysis of soft error propagation in a production-level embedded microprocessor
  6. Инструкция консорциума RISC-V The RISC-V Instruction Set Manual
  7. Репозиторий с процессором RISC-V и модулем кэш-памяти
  8. Справочные данные по системе команд Atmega 328
  9. Справочные данные по системе команд ARM

Дополнительная литература

  1. С. Харрис, Д. Харрис. Цифровая схемотехника и архитектура компьютера RISC-V/ пер. с англ. В.С. Яценкова, А.Ю. Романова; под. ред. А.Ю. Романова.-М.: ДМК Пресс, 2021. - 810 с.: ил.
  2. С. Харрис, Д. Харрис. Цифровая схемотехника и архитектура компьютера. Дополнение по архитектуре АРМ. ДМК Пресс,2019. - 356с.:ил.
  3. Смит Б. Ассемблер для Raspberry Pi. Практическое руководство. - СПб.: БХВ-Петербург, 2022. - 320с.:ил.