В настоящее время активно проводятся исследования, связанные с разработкой ассоциативной памяти, ссылки на различные части которой могут производиться непосредственно по символическим именам. К сожалению, желаемые цели пока не достигнуты. Поэтому пока в машинных командах используются числовые адреса, а трансляция символических обращений к памяти в машинные обращения осуществляется ассемблерами и компиляторами. ЭВМ Системы 360 и другие распространенные машины имеют память, обращения к которой производятся по числовым адресам.
Разбор того, как фактически производится адресация памяти, значительно расширит наш кругозор. Изучение этого вопроса мы начнем с рассмотрения команд машинного языка формата RX. Мы увидим, что вместо символических имен в командах языка ассемблера можно указывать истинные машинные адреса. Наконец, мы познакомимся с командой, позволяющей использовать технику адресации для выполнения арифметических действий.
Для обеспечения перемещаемости команд и программ действительные адреса операндов вычисляются как суммы соответствующих им значения смещения и содержимого базового регистра. Кроме того, к полученной сумме может быть добавлено содержимое индексного регистра.
Машинные команды формата RX имеют следующий вид:
При использовании неявной формы задания адресов указываются лишь соответствующие им символические имена или выражения. Ассемблер заменяет эти имена или выражения парами, состоящими из значения смещения и номера базового регистра, в процессе трансляции команд на машинный язык. При явной спецификации адресов сам программист указывает регистр, используемый в качестве базового, и смещение в поле операнда, адресующего память.
По команде LA
в Rl загружается вычисляемый действительный адрес.