125
Большинство
операций,
реализуемых
арифметико-логическими
устройствами современных процессоров, — двухместные (бинарные), это
означает, что в результате обработки двух операндов получается один
результат. Рассмотрим пример вычисления выражения z=x+y.
В трехадресной архитектуре — самой полной — часть двоичного кода
команды отводится под представление операции. Например, 000110 —
сложение (в архитектуре PDP-11). Кроме этого, в ней присутствуют три
адреса: адрес первого операнда x — А1, адрес второго y — A2, и адрес, в
который нужно поместить результат, z — A3. Трехадресная архитектура
является наиболее гибкой, но и наиболее затратной с точки зрения объема
памяти, необходимого для представления каждой команды. Если адресное
пространство соответствует микропроцессорам 8086, под каждый из
адресов потребуется 20 бит. Соответственно, каждая команда должна быть
длиннее 60 бит, что не очень хорошо с точки зрения упаковки больших
программ.
Большинство современных ЭВМ, в том числе микропроцессоры семейств
x86, —
двухадресные. В них в команде присутствуют два адреса, один из
которых используется как для взятия операнда, так и для помещения по
этому же адресу полученного результата. Примером может служить
x=x+y
. Данный подход позволяет без существенной потери гибкости
сэкономить заметное количество памяти.
На одноадресной архитектуре были построены первые микропроцессоры.
В ней присутствует
аккумулятор — специальный выделенный регистр в
процессоре, в который по умолчанию попадают результаты всех операций.
Из него же по умолчанию берется один из операндов. Соответственно, в
команде достаточно указать адрес всего одного операнда.
Самый экстремальный случай — безадресная архитектура. В ней команда
содержит лишь КОП. Операнды по умолчанию берутся из заранее
известного места — чаще всего из стека (два числа на вершине стека) (см.
Достарыңызбен бөлісу: