Ниже на примере команды сложения (Add) приведены наиболее употребительные названия методов адресации, хотя при описании архитектуры в документации разные производители используют разные названия для этих методов.
Метод адресации | Примеркоманды | Смысл команды метода | Использование |
Регистровая | Add R4,R3 | R4=R4+R5 | Требуемое значение в регистре |
Непосредственная или литеральная | Add R4,#3 | R4=R4+3 | Для задания констант |
Базовая со смещением | Add R4,100(R1) | R4=R4+M[100+R1] | Для обращения клокальным переменным |
Косвенная регистровая | Add R4,(R1) | R4=R4+M[R1] | Для обращения по указателю или вычисленному адресу |
Индексная | Add R3,(R1+R2) | R3=R3+M[R1+R2] | Иногда полезна при работе с Массивами: R1 - база, R3 - индекс |
Прямая или абсолютная | Add R1,(1000) | R1=R1+M[1000] | Иногда полезна для обращения к статическим данным |
Косвенная | Add R1,@(R3) | R1=R1+M[M[R3]] | Если R3-адрес указателя p, то выбирается значение по этому указателю |
Автоинкрементная | Add R1,(R2)+ | R2=R2+dR1=R1+M[R2] | Полезна для прохода в цикле по массиву с шагом: R2 – началомассива В каждом цикле R2 получает приращение d |
Автодекрементная | Add R1,(R2)- | R1=R1+M[R2]R2=R2-d | Аналогична предыдущей |
Базовая индексная со смещением имасштабированием | Add R1,100(R2)[R3] | R1=R1+M[100]+R2+R3*d | Для индексации массивов |
4. Типы команд
Команды традиционного машинного уровня можно разделить на несколько типов
Тип операции | Примеры |
Арифметические и логические | Целочисленные арифметические и логические операции: сложение, вычитание, логическое сложение, логическое умножение и т.д. |
Пересылки данных | Операции загрузки/записи |
Управление потоком команд | Безусловные и условные переходы, вызовы процедур и возвраты |
Системные операции | Системные вызовы, команды управления виртуальной памятью и т.д. |
Операции с плавающей точкой | Операции сложения, вычитания, умножения и деления над вещественными числами |
Десятичные операции | Десятичное сложение, умножение, преобразование форматов и т.д. |
Операции над строками | Пересылки, сравнения и поиск строк |
5.Формат команд
Существует несколько видов форматов команд, а точнее 3
- одноадресная
- двухадресная
- трехадресная
Желательно чтобы команда имела 32-х разрядный формат. В задании на проектирование было указанно использование 3-х адресной команды.
Она имеет следующий вид:
31 0
КОП- 7- разрядное поле кода операции. Позволяет определить что за операция должна выполняться.
R0, R1, R2 – регистр-приемник и регистры-источники данных.
R0 и R1 – 3-разряда
R2- 19-разрядов.
Содержимое поля R2 интерпретируется не только как номер регистра, но и как смещение при операциях обращения к памяти. И адрес памяти определяется как A=<R1>+R2.
В процессоре могут использоваться числа с фиксированной точкой и плавающей точкой.
Числа с ФТ представляют собой целые со знаком или без знака. Старший бит числа является знаковым. Нулевое значение этого бита указывает на то, что число положительное, единичное на то, что число отрицательное.
Целые со знаком представляются в дополнительном коде. Положительные числа в дополнительном коде записываются просто как двоичные числа без знака, а отрицательные выражаются числом которое будучи добавлено к положительному числу той же величины даст в результате ноль. Для получения отрицательного числа нужно для каждого бита положительного числа сформировать дополнение до 1 или обратный код, т.е. вместо 0 записать 1 и наоборот, а затем к полученному результату прибавить 1(это даст дополнительный код).
Целые без знака используют так же для представления адресов.
Числа с ПТ имеют один знаковый бит, 8 битов порядка и 23 бита мантиссы. При работе с ними необходимо предусмотреть несколько исключительных ситуаций
+0: s=0; p=0..0; M=0..0;
-0: s=1; p=0..0; M=0..0;
-¥: s=0; p=1..1; M=0..0;
+¥: s=1; p=1..1; M=0..0;
NAN: s=X; p=1..1; M=X..X( кроме 0,,0).
-беззнаковое
15 0
состоит из 16 разрядов и изменяется от -32768 до +32768
3 слово -знаковое
31 30 0
-беззнаковое
31 0 состоит из 32 разрядов