Індексна адресація

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

І́ндексна (ба́зова, зі змíщенням) адреса́ція — метод адресації пам'яті, в якому ефективна адреса операнда або команди, на яку здійснюється перехід, обчислюється додаванням до базової адреси, яка міститься в регістрі, деякого зміщення, яке міститься у відповідному полі команди.

  +------+-----+-----+-----------------+
  | LOAD | R1  | Rb  |  зміщення       |  Ефективна адреса = Rb + зміщення
  +------+-----+-----+-----------------+

У випадку, коли зміщення нульове, отримаємо непряму регістрову адресацію, адреса операнда знаходиться в регістрі Rb.

У випадку, коли в регістрі знаходиться нуль, отримуємо пряму адресацію, адресу вказано в команді у полі зміщення. Такий спосіб конструювання прямої адресації з індексної загальноприйнятий для тих RISC-машин, у яких регістр з порядковим номером 0 завжди містить константу 0.

Базова адресація широко вживається для організації ефективної роботи з масивами та іншими складними структурами даних, а також для реалізації переміщуваних фрагментів програм та даних. Останнє досить легко реалізувати, змінюючи «точку початку відліку» в базовому регістрі. Розмір такого переміщуваного фрагменту, очевидно, обмежений розрядністю поля зміщення.

Див. також[ред. | ред. код]