Читайте также: |
|
8.1. Прямая и непосредственная адресация
Все операции над данными выполняются по командам, которые содержат код операции и указание на операнды, участвующие в данной операции, - исходные данные и результат.
Операнды могут указываться:
· Адресом (номером) ячейки памяти данных, в которой хранится операнд,
· Именем регистра процессора, в котором находится операнд,
· Константой, хранящейся в слове команды.
Существует три типа адресации:
· Прямая,
· Косвенная,
· Непосредственная.
Адресацию называют прямой, если в команде указывается:
1. Исполняемый адрес, т.е. адрес – адрес ячейки памяти данных.
Пример: AX1 = DM(0x1001) - команда пересылки процессора ADSP-21xx из памяти данных (DM) по адресу 0x1001 в регистр АЛУ AX1.
0x1001 - 0001 0000 0000 0001.
2. Адрес операнда на странице памяти данных, по которому автоматически вычисляется исполняемый адрес.
Разбиение памяти данных на страницы
Адрес операнда в памяти данных | |
Адрес страницы | Адрес операнда в пределах страницы |
..... | 000001 (Страница 0) ...... (Адреса 0..63) |
..... | 000001 (Страница 1) ...... (Адреса 0..63) |
..... | ...... |
..... | 000001 (Страница 15) ...... (Адреса 0..63) |
3. Имя регистра, из которого считывается, или в который записывается операнд.
В рассмотренных примерах операнды в слове команды названы именами регистров процессоров (AX1, R7).
При непосредственной адресации операнд указывается в команде константой.
Примеры:
1. AX0 = 0x0011 - команда пересылки процессоров ADSP – 21xx,
2. ADDI 100Ah, R1 - команда сложения содержимого регистра R1 с константой 410510 и записью результата в регистр R1 в процессорах TMS320C3x.
8.2. Косвенная адресация
Адресация называется косвенной, если исполняемый адрес хранится в специальном регистре, называемом регистром адреса. Косвенная адресация поддерживается всеми сигнальными процессорами.
Для определения исполняемого адреса при косвенной адресации требуется выполнение арифметических операций. Для их реализации используются специальные узлы – генераторы адресов данных. Например, процессоры семейства ADSP-21xx имеют два генератора адресов данных: DAG1 и DAG2 (Date Address Generator), а в процессорах TMS320C3xxx используются два арифметических устройства вспомогательных регистров ARAU (Auxiliary Register Arithmetic Unit).
При косвенной адресации предусматривается возможность наряду с определением исполняемого адреса его модификация.
Существуют следующие виды модификации:
· Преинкремент - увеличение до выполнения команды содержимого регистра адреса на смещение M
· Предекремент - уменьшение до выполнения команды содержимого регистра адреса на M;
*- ARn(M), *- - ARn(M)
· Постинкремент – увеличение после выполнения команды содержимого регистра адреса на M
· Постдекремент – уменьшение после выполнения команды содержимого регистра адреса на M
* ARn --(M)
Во всех приведенных вариантах косвенной адресации в скобках вместо константы M можно указывать индексные регистры IR0 и IR1. Тогда во всех операциях вместо M будет использоваться их содержимое.
Значение M=1 используется в приведенных командах по умолчанию и в команде вместе со скобками не указывается.
Косвенная адресация в процессорах семейства ADSP21xx. В этих процессорах используются два независимых генератора адресов данных DAG, для того чтобы можно было одновременно работать с памятью программ и памятью данных.
Оба генератора обеспечивают косвенную адресацию. Однако DAG1 может генерировать только адреса памяти данных, но имеет дополнительную возможность изменения порядка бит в адресе на обратный (реверс бит), а DAG2 может генерировать как адреса памяти данных, так и адреса памяти программ, но не обладает возможностью реверса бит.
Каждый DAG включает три набора регистров:
* регистры модификации M,
* индексные регистры I,
* регистры длины L.
Каждый набор содержит четыре 14-битных регистра, которые могут быть считаны или записаны по шине данных памяти данных DMD.
Индексные регистры I0..I3 в DAG1 и I4..I7 в DAG2 содержат реальные адреса, по которым производится доступ к памяти.
Генераторы адресов данных используют схему постмодификации: после косвенной адресации данных к содержимому определенного I - регистра добавляется содержимое M - регистра (M0..M3 в DAG1 и M4..M7 в DAG2) для генерации измененного значения индексного регистра. Значения модификации, записанные в M - регистрах, знаковые, поэтому следующий адрес может быть как больше, так и меньше текущего.
Для линейной адресации в соответствующий L - регистр записывается ноль.
Команда пересылки, в которой используется косвенная адресация
AX0 = DM(I2,M2).
Адресация по модулю
Если, например, начальное значение I=0, а L=5, M=1, получим следующий ряд:
0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0.
Если начальное значение I=4, L=5, M=-1, получим
4, 3, 2, 1, 0, 4, 3, 2, 1, 0.
Дата добавления: 2015-07-08; просмотров: 344 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Классы IP-адресов | | | г. Харьков |