Project

General

Profile

Обзор работы с индексными регистрами » History » Version 6

« Previous - Version 6/48 (diff) - Next » - Current version
krufter_multiclet, 05/08/2013 12:27 PM


Обзор работы с индексными регистрами

Рассмотрим работу с индексными регистрами мультиклеточного процессора.

Индексные регистры используются для косвенной адресации. Логическая структура индексного регистра:

Номера битов 63..48 47..32 31..0
Обозначение Индекс(Index) Маска(Mask) База(Base)

Для обращения к какому-либо регистру данного типа используются номера от 32 до 39.
Имен у данного типа регистров нет. В общем случае (см. исключения в описании конкретной
команды в разделе «Система команд ассемблера») при использовании регистра данного типа в
качестве аргумента операции значение этого аргумента формируется согласно следующему
алгоритму:
1. вычисление исполнительного адреса, согласно следующей формуле:
Address = Index + Base
2. обращение к памяти данных по исполнительному адресу для чтения/записи
значения аргумента согласно типу используемой команды.
Модификация значения индексного регистра осуществляется аппаратно по завершению
параграфа в том случае, если установлен соответствующий бит регистра MODR маски
изменения индексных регистров (см. раздел «Регистры управления»), согласно следующей
формуле:
Index = ((Index | ∼Mask ) + 1) & Mask,
где | — операция побитового «ИЛИ», & — операция побитового «И», ∼ — операция
побитового инвертирования.
В двух выше приведённых формулах используется целочисленная 32-х разрядная
арифметика. Значения старших 16 разрядов (с 16 по 31) полей Индекс (Index) и Маска
(Mask)заполняются нулями.