Способи адресації переходів

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

Спо́соби адреса́ції перехо́дів — комплекс визначених для даної архітектури системи команд способів обчислення ефективної адреси команди, на яку передається керування в результаті виконання команди переходу.

Адреса, на яку передається управління, повинна бути зазначеною в команді переходу або обчислена на підставі інформації, що міститься в ній. Таким чином, як і для звичайних обчислювальних команд, знову постає необхідність розгляду методів адресації.

В сучасних архітектурах можна виділити три загальноприйнятих методи адресації переходів:

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

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

Необхідність в динамічному визначенні адреси переходу часто виникає в мовах високого рівня у зв'язку із застосуванням віртуальних функцій (адреси точок входу яких можуть бути різними залежно від типів операндів), вказівників на функцію як аргументів іншої функції, а також при використанні динамічно-підключуваних бібліотек.

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