Статус
нашего
сайта:
ICQ Secrets Center is Online  ICQ Information Center


ICQ SHOP
     5-значные
     6-значные
     7-значные
     8-значные
     9-значные
     Rippers List
ОПЛАТА
СТАТЬИ
СЕКРЕТЫ
HELP CENTER
OWNED LIST
РОЗЫСК!New!
ICQ РЕЛИЗЫ
Протоколы ICQ
LOL ;-)
Настройка компьютера
Аватарки
Смайлики
СОФТ
     Mail Checkers
     Bruteforces
     ICQTeam Soft
     8thWonder Soft
     Other Progs
     ICQ Patches
     Miranda ICQ
ФорумАрхив!
ВАШ АККАУНТ
ICQ LiveJournal

Реклама

Наш канал:

irc.icqinfo.ru

Таненбаум Э.- Архитектура компьютера. стр.288


Таненбаум Э.- Архитектура компьютера. стр.288

; произведения A[i] И B[i] MOV R3,#4096 ; R3 = первое ненужное значение индекса

LOOP: MOV R4,A(R2) ; R4 = A[i]

AND R4,B(R2) ; R4 = A[i] И B[i] OR R1.R4

ADD R2,#4 ; i = i + 4

CMP R2.R3 ; нужно ли продолжать?

BLT LOOP ; если R2 < R3, нужно продолжать

Здесь нам требуется 4 регистра:

+ R1 — содержит результаты суммирования логических произведений;

+ R2 — индекс г, который используется для перебора элементов массива;

+ R3 — константа 4096 (это самое маленькое значение г, которое не используется);

+ R4 — временный регистр для хранения каждого произведения.

После инициализации регистров мы входим в цикл из шести команд. Команда с меткой LOOP вызывает элемент Д в регистр R4. При вычислении источника здесь используется индексная адресация. Регистр (R2) и константа (адрес элемента А) складываются, полученный результат служит для обращения к памяти. Сумма этих двух величин поступает в память, но не сохраняется ни в одном из доступных пользователю регистров. Следующая запись означает, что для определения приемника используется регистровая адресация, а для определения источника — индексная:

MOV R4.ACR2)

Здесь R4 — это регистр, А — смещение, R2 — регистр. Если А имеет значение, скажем, 124 300, то соответствующая машинная команда будет выглядеть так, как показано на рис. 5.14.

Таненбаум Э.- Архитектура компьютера.

Рис. 5.14. Возможное представление команды MOV R4, A(R2) в памяти

Во время первого прохождения цикла регистр R2 принимает значение 0 (так регистр инициализируется), поэтому нужное нам слово А0 находится в ячейке с адресом 124 300. Это слово загружается в регистр R4. При следующем прохождении цикла R2 принимает значение 4, поэтому нужное нам слово Д находится в ячейке с адресом 124 304 и т. д.

Как мы отмечали, здесь смещение — это указатель ячейки памяти, а значение регистра — это небольшое целое число, которое во время вычисления меняется. Такая форма требует, чтобы поле смещения в команде было достаточно большим для хранения адреса, поэтому такой способ не очень эффективен, однако он часто оказывается самым лучшим.

Относительная индексная адресация

В некоторых машинах применяется режим адресации, при котором адрес вычисляется путем суммирования значений двух регистров и смещения (смещение факультативно). Такой режим называется относительной индексной адресацией. Один из регистров — это база, другой — индекс. Относительная индексная адресация очень удобна при следующей ситуации. Вне цикла мы могли бы поместить адрес элемента А в регистр R5, а адрес элемента В — в регистр R6. Тогда можно было бы заменить две первые команды цикла LOOP:

LOOP: MOV R4,(R2+R5) AND R4,(R2+R6)

Было бы идеально, если бы существовал режим адресации по сумме двух регистров без смещения. В то же время даже команда с 8-разрядным смещением была бы большим достижением, поскольку оба смещения можно сделать нулевыми. Однако если смещение всегда составляет 32 бита, тогда мы ничего не выиграем, использовав такой режим адресации. На практике машины с относительной индексной адресацией обычно имеют форму с 8- или 16-разрядным смещением.


⇐ Предыдущая страница| |Следующая страница ⇒

.