Абсолютна адресація
При абсолютній адресації адресне
поле команди безпосередньо містить номер цільового елементу пам'яті. В
такий спосіб виробляються звернення до об'єктів з постійними адресами:
статичним і зовнішнім змінним, точкам входу підпрограм.
Як і
у випадку з літеральною адресацією, що обговорювалася в попередньому підрозділі, процесор,
який використовує таку адресацію, або повинен мати команди змінної
довжини, або його команда має бути довше за адресу. Друга
умова виконується не лише біля процесорів гарвардської архітектури, але
і біля багатьох старих комп'ютерів з невеликим адресним простором.
Абсолютна адресація в системі команд
SPARC
Біля процесорів SPARC реалізація абсолютної адресації схожа на
реалізацію адресації літеральної: під адресацію займається регістр, командою
sethi %hi (addr), reg в нього завантажується старша частина адреси, а потім відбувається
власне адресація. Для формування 64-розрядної адреси необхідно
займати два регістри і виконувати ту ж програму, що і в прикладі 2.1.
Звернення до змінної в пам'яті відбувається так, як показано в прикладі
2.2.
Приклад 2.2. Звернення до змінної на процесорі
SPARC
| sethi %hi(var), %g1 |
! |
поміщаємо старші біти адреси в %g1 |
| Id [%gl+%lo(var)] %11 |
! |
завантажуємо значення в %11 |
| inc %11 |
! |
виробляємо операцію |
| st %11, [%gl+%lo(var)] |
! |
зберігаємо результат. |
У модулях, багато звернень, що містять, до змінних, рекомендується виділити для
цієї мети регістр і використовувати зсуви відносно його — як, до
речі, і зроблено в наведеному прикладі. Але це вже зовсім не абсолютна
адресація. |