Основы вычислительных систем
В машинах с регистрами общего назначения метод (или режим) адресации объектов, с которыми манипулирует команда, может задавать константу, регистр или ячейку памяти.
В табл. 3.2 представлены основные методы адресации операндов, которые реализованы в компьютерах, рассмотренных в настоящей книге.
Таблица 3.2. Методы адресации
Метод | Пример | Смысл
| Использование команды |
Регистровая | Add R4, R3 | R4 = R4+R3 | Для записи требуемого значения в регистр |
Непосредственная или литерная | 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 – адрес указателя р, то выбирается значение по этому указателю |
Автоинкрементная | Add R1, (R2)+ | R1 = R1+M(R2) R2 = R2+d | Полезна для прохода в цикле по массиву с шагом: R2 – начало массива. В каждом цикле R2 получает приращение d |
Автодекрементная | Add R1, (R2)– | R2 = R2–d R1 = R1+M(R2) | Аналогична предыдущей. Обе могут использоваться для реализации стека |
Базовая индексная со смещением и масштабированием | Add R1, 100(R2)(R3) | R1=R1+M(100)+R2+R3*d | Для индексации массивов |
Адресация непосредственных данных и литерных констант обычно рассматривается как один из методов адресации памяти (хотя значения данных, к которым в этом случае производятся обращения, являются частью самой команды и обрабатываются в общем потоке команд).
В табл. 3.2 на примере команды сложения (Add) приведены наиболее употребительные названия методов адресации, хотя при описании архитектуры в документации производители компьютеров и ПО используют разные названия для этих методов. В табл. 3.2. знак "=" используется для обозначения оператора присваивания, а буква M обозначает память (Memory). Таким образом M(R1) обозначает содержимое ячейки памяти, адрес которой определяется содержимым регистра R1.
Сформированное множество процессов необходимо распределить по процессорам для выполнения. Неизвестен эффективный способ априорного определения числа процессоров, для которого может быть получено наилучшее среди всех возможных распределение.