Непосредственная, прямая и регистровая адресации

Непосредственная, прямая и регистровая адресации

Xalion

В прошлой статье мы рассказали о форматах команд — правилах записи команд для компьютера. Команда разделена на поля для префиксов, кода операции, адресов и вспомогательных полей. Прошлая статья о форматах команд.

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

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


В поле адреса хранится операнд, при вызове команды он вызывается вместе с ней и его можно сразу использовать.

Непосредственную адресацию используют с константами — неизменяемыми переменными, например число ПИ. Размер константы ограничен размером поля для адреса.

Константное значение — длина экватора


В поле адреса хранится полный адрес операнда в памяти. Адрес фиксируется, поэтому во время выполнения программы его нельзя изменить.

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

Длина экватора записана на жёстком диске


Работает как прямая адресация, но вместо ячейки памяти указывается регистр. Используется для переменных к которым нужно часто обращаться, потому что регистры передают данные быстрее, чем кэш-память. Компиляторы понимают, какие переменные будут использоваться чаще и помещают их в регистры.

Программа считает расстояние от экватора до разных городов


Адрес операнда хранится в регистре и меняется во время выполнения программы. Такой адрес называется указателем. Через косвенную адресацию команды вызывают операнды, не зная их полного адреса. Это упрощает работу программистам и компиляторам.

Программа считает сколько осталось лететь до экватора.
Данные изменяются динамически


Для примера, покажем вам код на ассемблере, язык близкий к ISA.
Мы изменили названия регистров, чтобы было понятнее.
Задача: посчитать сумму 1024 числовых элементов массива A.

В третьей строчке 4096, потому что используется четырёх-байтовое слово


Следующая статья об индексной и стековой адресациях.

Report Page