Архитектура процессоров
Приложение А
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].
Приложение Б
Литература
- Орлов С.А. Цилькер Б.А. Организация ЭВМ и систем: Учебник для ВУЗов. 3-е изд. СПб.2014.-688с.:ил.
- Ерохин В.В. Микропроцессоры. Теория и практика проектирования, Солон-Пресс, 2023. - 256с.:ил.
- Структурная схема процессора Intel Pentium
- Статья An Introduction to ARM Architecture with Each Module's Working Principle
- Статья A microarchitectural analysis of soft error propagation in a production-level embedded microprocessor
- Инструкция консорциума RISC-V The RISC-V Instruction Set Manual
- Репозиторий с процессором RISC-V и модулем кэш-памяти
- Справочные данные по системе команд Atmega 328
- Справочные данные по системе команд ARM
Дополнительная литература
- С. Харрис, Д. Харрис. Цифровая схемотехника и архитектура компьютера RISC-V/ пер. с англ. В.С. Яценкова, А.Ю. Романова; под. ред. А.Ю. Романова.-М.: ДМК Пресс, 2021. - 810 с.: ил.
- С. Харрис, Д. Харрис. Цифровая схемотехника и архитектура компьютера. Дополнение по архитектуре АРМ. ДМК Пресс,2019. - 356с.:ил.
- Смит Б. Ассемблер для Raspberry Pi. Практическое руководство. - СПб.: БХВ-Петербург, 2022. - 320с.:ил.