Горнец Н.Н., Рощин А.Г. Организация ЭВМ и систем (2006) (1186251), страница 19
Текст из файла (страница 19)
5.2). Трехадресные команды характерны для компьютеров с сокращенным набором команд. Первый и второй адреса такой команды указывают месторасположение операндов, в третий адрес (ячейку памяти) заносится результат операции. Для определения адреса следующей выполняемой команды служит счетчик команд (1Р), к содержимому которого после выполнения любой команды добавляется ее длина в байтах. Для перехода к выполнению команды, которая занимает не следующую по порядку ячейку памяти, в машине предусматривают специальные команды переходов.
Трехадресные команды используются в так называемых К1БС-компьютерах (машинах с сокращенным набором команд); в них операнды размещают в регистрах общего назначения, число которых может достигать 256. Загрузка этих регистров из памяти осуществляется специальной схемой, называемой контроллером или процессором загрузки. Наиболее распространены в настоящее время двухадресные компьютеры. Это машины, команды в которых содержат не более двух адресов. Оба операнда находятся в регистрах, а результат вы- КОп А~ Аг А1 Рис. 5.2.
Типовые форматы команд: а — одноедресноа; о — двухааресной; в — трехадресной 110 полнения операции также записывается в регистр. Такую команду принято называть командой КК-типа (регистр-регистр). Если один операнд находится в регистре, а второй в ячейке памяти, адрес которой индексируется, то такая команда относится к КХ-типу. 1(оманда, второй операнд которой находится в ячейке памяти без индексации, а первый в регистре, носит название КБ-типа.
В команде может находиться не адрес операнда, а сам операнд (этот операнд называют непосредственным адресом, и он представляет константу), такую команду относят к Б1-типу. Наконец, оба операнда могут находиться в памяти, для их вызова используют команду ББ-типа. В современном персональном компьютере 1ВМ РС команды также двухадресные, но первый операнд всегда находится в одном из восьми регистров, а второй может находиться в регистре, памяти или непосредственно в самой команде.
Помимо кода операции и адресов операндов команда этого компьютера содержит бит, указывающий направление передачи результата (Ы), бит ширины операнда (в), а также поле указания режима (ои1) и поле регистр/память (г/т). В одноадресной машине команда содержит только один адрес, а поскольку обычно в арифметической операции используется два операнда, то второй уже находится в одном из регистров процессора. Результат операции всегда сохраняется в выходном регистре процессора, который называют аккумулятором.
Для сложения двух чисел нужно выполнить три одноадресных команды: поместить первый операнд из памяти в регистр процессора, передать второй операнд из памяти и сложить его с первым, а затем сохранить результат в памяти. Однако на практике при выполнении программы никогда не приходится использовать все три команды.
В регистре процессора сохраняется один из операндов, полученный при выполнении предыдущей операции (т.е. первая команда не нужна), а результат сложения будет использован следующей командой (т.е. его не нужно сохранять в памяти). Приведенные на рис. 5.2 форматы команд весьма схематичны. В действительности в адресных полях находятся не сами адреса, а информация, позволяющая их определить.
Способ определения исполнительного адреса А„(т.е. адреса ячейки памяти, где находится операнд или команда) по адресу в коде команды А„называется слособом адресации. Для указания способа адресации в некоторых системах команд используют специальное поле; это позволяет выполнять одну и ту же команду с любым предусмотренным способом адресации, но значительно увеличивает длину команды. Обычно в команде имеются поля, указывающие адрес операнда А„В этом случае адресацию называют явной. Однако иногда адресное поле в команде отсутствует, а информацию об адресе опе- 111 ранда несет сам код операции. Такую адресацию называют неявной Ее используют при работе над содержимым аккумулятора или флагами.
Флагами называют признаки результата, которые при выполнении каждой операции заносятся в специальный регистр, Примерами могут служить флаги переполнения, четности и т. и Общее число флагов зависит от конкретного процессора. Однако наиболее часто применяется явная адресация. Время обращения в память сказывается на общей производительности компьютера, поэтому, чем меньше таких обращений, тем лучше с позиций быстродействия. Если нужно произвести действие с постоянным операндом, значение которого известно в момент трансляции программы, то нет необходимости хранить его в отдельной ячейке памяти; его можно поместить в адресном поле самой команды.
Такой способ задания операнда принято называть непосредственной адресацией. Она применяется для задания констант, длина которых меньше адресного поля команды. Операнды могут находиться и в регистровой, и в оперативной памяти; время обращения зависит от их местоположения. Если операнд находится в регистровой памяти, то время обращения к нему невелико.
Именно для сокращения времени на обращение к операндам и используют регистровую адресацию. Регистровая адресация в машине 1ВМ РС реализуется при тИ = 1. Адрес одного из восьми регистров, в котором размещается операнд, определяется полем г/т. Операнд может занимать весь регистр или только его половину в зависимости от значения в. Наиболее часто используется прямая адресация.
Операнд находится в ОП, а в команде указывается его исполнительный адрес (адресный код команды А„совпадает с исполнительным адресом А„). В компьютерах 1ВМ РС в этом поле команды находится не полный адрес, а только так называемое смещение, т.е. 16-битная часть исполнительного адреса. В одном из адресных регистров находится адрес сегмента; исполнительный адрес определяется сложением номера (адреса) сегмента и смещения.
Этим удалось избежать самого крупного недостатка прямой адресации, а именно, необходимости слишком длинного адресного поля при большой емкости памяти. При хасвеннойадресации в адресном поле команды указывается адрес регистра или ячейки памяти, где находится адрес операнда; этот адрес называют указателем. В случае когда указатель располагается в регистре, адресацию называют косвенно регистровой (рис. 5.3). Адрес указателя в команде компьютера остается неизменным, но, меняя сами указатели, можно осуществлять переадресацию данных, что упрощает обработку массивов и списковых структур Часто адрес ячейки памяти образуется из нескольких составляющих частей, например базового адреса (или базы В), индекса 112 рис. 5.4.
Формирование адреса па- мяти при базовой адресации Рис. 5.5. Формирование адреса памяти при базово-инаексной адре- сации 113 (Х) и смещения (Р). В этих случаях различают базовую, индексную и базово-индексную адресации. Если адрес, указанный в команде, состоит нз двух частей — Ав и Ар, то полный адрес ячейки памяти определяется сУммированием содеРжимого Рис. 5.3.
Косвенная здре ц регистра Аг» где хранится база, и смещения Ав (рис. 5.4). Базовая адресация широко используется при создании программ, состоящих из перемещаемых модулей. Базовый (начальный) адрес загружается в регистр, а остальные адреса данного модуля определяются сложением базы и смещения. Это значит, что любая программа может работать с данными, располагаемыми в любой области памяти; для этого нужно изменить только базу. Аналогично выполняется и индексная адресация. Однако после выполнения обращения к ячейке памяти с адресом А = Ах + Ав производится увеличение индекса Х, записанного в индексном регистре, на единицу. Так «автоматически» определяется адрес следующего подлежащего обработке элемента в массиве.
Использование индексной адресации упрощает создание циклических программ. Часто используют комбинированную базово-индексную адресацию. В этом случае адрес ячейки памяти определяется суммой содержимого регистров базы и индекса, а также смещения, содержащегося в команде (рис. 5.5). Иногда используют не сложение, а «сцепление» кодов базы, индекса и смещения.
Это значит, что исполнительный адрес Аи = Ав, Ах, Ар. Для определения адреса следующей команды в 1ВМ РС может быть использована относительная адресация. В этом случае адрес очередной команды представляет собой сумму текущего значения счетчика команд ПР) и смещения из предыдущей команды. Все виды адресации в компьютере 1ВМ РС определяют место расположения и способ нахождения адреса второго операнда; первый операнд всегда находится в одном из регистров.