double arrow

Индексный регистр. Автоинкремент/декремент

Стек

Автоинкремент/декремент

Косвенные адреса

В КС с РОН удобно в организации циклов использовать команды с косвенной регистровой адресацией.

1. D(CN) → H – установка указателя на первый элемент массива аргументов

2. D+1 A+1 → R1 – начальное значение счетчика

3. D+2 B+1 → R2 – установка указателя на первый элемент массива результатов

4. D+3 ((R1))x(Cx) → R1 – основные вычисления

5. D+4 ((R1))x(Cz) → R2 – продвижение указателя элемента

6. D+5 (R2)+(C1) → R2

7. D+6 (H1) – (C1) → H – продвижение счетчика, выработка признака результата

8. D+7 zF =0? Да → 0+8, нет → нет 0+3 – условие перехода

Большинство циклов короткие, а команды переадресации и восстановления занимают место и время. Нужны изменения в архитектуре, а именно использование адресации с автокрементом/декрементом.

Команда: ((R1)+)≠((R2)) → R0

Алгоритм:

1. ((УК)) → РК

2. (УК) + 1 → УК

3. Дешифрация р

4. ((R1)) →r1

5. (R1) + 1 → R1 – инкремент

6. (R2) – 1 → R2 – декремент

7. ((R2)) → r2

8. (r1)p(r2) → r3

9. (r3) → R0

10. Переход к пункту 1

Разновидность косвенной адресации автокрементом/декрементом. Физически это часть ОП, доступ к которой организован спец. Образом (LIFO). Для стека выделяется участок памяти от ячейки А до В. Ячейка В имеет наибольший адрес - это дно стека. Ячейка А с наименьшим номером - вершина стека. За ней следует специальный стековый регистр (Rsp). Если (Rsp)=А, то А вершина стека. Если ячейки стека заполнены и нужно извлечь данные, то можно сделать это по указанию стекового регистра. После извлечения содержимое регистра увеличивается на единицу, т.к переместится вниз. Помещая новые данные в стек, указатель переместится вверх(-1).

В системе команд процессора есть группа специальных стековых команд. Это команды записи из СП или регистров в стек и команды чтения. Одним из операндов в них служит стековый регистр, другим - регистр или ячейка памяти.

Стековая команда имеет вид:

Р Rsp R(c)

Запись в стек из регистра:

1. ((УК)) → РК

2. (УК)+1 → УК

3. Дешифрация р.

4. (Rsp) – 1 → Rsp

5. (R1) → (Rsp)

6. Переход к пункту 1

Пространство стека – обычные ячейки памяти и их можно использовать все стековых команд. Можно изменить содержание ячейки А, а для стека она все равно будет вершиной пока не занесли в стековый регистр новое значение

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

1n, ∑2n, ∑3n

Схема исполнения:

(∑1)р(∑2)→ ∑3

ii+∑i(n*(ИР)

i – исполнительный или эффективный адрес

Пример использования:

1. D(C1) →H - начальные значения счетчика

2. D+1(C1) → ИР – начальные значения индекса (-1)

3. D+2(A1+(ИР)xC)x(Ci)B+(ИР)x∑1 – основные вычисления

4. D+3 (ИР)+(C1) →ИР – продвижение индекса

5. D+4(H) – (C1) →H – продвижение счетчика, выработка признака результата

6. D+5 ZF =? Да → D+6 Нет → D+2

Общий вид команды:

Р I1A1 I2A2 I3A3

Поле каждого адреса 2 числа. При рабе с большим количеством данных или команд, второе число – адрес начала большого блока элемента относительно числа.

Схема образования адреса с использованием ИР:

Р I1A1 I2A2 I3A3
  ИР
   
   
Ir I
   
   
  ОП
A1  
   
i  
1  
   


11+I1 –вычисление эффективного адреса

Сложные циклы(тройные, четверные) требуют некоторого количества индексных регистров. Чем их больше, тем проще организовывать сложные циклы. Есть компьютерная система, где 2, 8, 16 ИР. Но при этом усложняется аппаратная часть или программы будут сложнее.

Сложные команды управления циклом:

- Команда управления +продвижения индекса

В двух или трех адресных командах передачи управления имеет место один существенный адрес. Остальное можно использовать для встраивания в команду дополнительных функций. Можно команду управления совместить с увеличением индекса.

Пример:

1. ((УК)) → РК

2. (УК) + 1 → РК

3. Дешифрировать регистр

4. (R1)+1 → R

5. Если [РПр) and (Np)] ≠ 0, то А2 в УК

6. Перейти к пункту 1

Формат команды:

Р R1 A2

Вывод: тело цикла меньше на одну команду, обращений к памяти меньше, но счетчик надо наращивать отдельной командой.

- Команда управления + счетчик

В систему команд добавляют команды управления цикла со счетчиком, т.е кроме универсальных команд, условной передачи управления для разветвления или управления цикла со счетчиком, т.е кроме универсальных команд, условной передачи управления для разветвления или управления циклом включают команды, управляющие одновременно циклом и счетчиком.

Команда вида:

Р R1 A2

Пример:

1. ((УК)) → РК

2. (УК) + 1 → РК

3. Дешифрировать регистр

4. (R1)-1 → R1

5. Если (R1 ≠ 0, то А2 → УК

6. Перейти к пункту 1

Команду используют для продвижения индекса, если надо вести обработку массива в обратном порядке(от больших индексов к меньшим).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: