Алгоритм, написанный пользователем программы, в конечном счете реализуется в виде машинных команд. Под командой понимают совокупность сведений, представленных в виде двоичных кодов, необходимых процессору для выполнения очередного шага. В ходе команды для сведений о типе операции, адресной информации о нахождении обрабатываемых данных, а также для информации о месте хранения результатов выделяются определенные разряды (поля).
0
КОП
А1
А3
15
0
КОП
А1
А2
А3
23
Форматом команды называется заранее обговоренная структура полей в её кодах, позволяющая ЭВМ распознавать составные части кода.
Главным элементом кода команды является код операции (КОП), что определяет, какие действия будут выполнены по данной команде. Под него выделяется N старших разрядов формата. В остальных разрядах размещаются А1 и А2 v адреса операндов. А3 — адрес результата.
Распределение полей в формате команды может изменяться при смене способа адресации. Длина команды зависит от числа адресных полей. По числу адресов команды делятся на:
безадресные
одно-, двух-, трехадресные
Длина кода команды измеряется в машинных словах. Чтобы получить возможность работать с минимальным числом адресных полей, результат, к примеру, можно размещать по месту хранения одного из операндов. Либо предварительно размещают один или несколько операндов в специально выделенных регистрах процессора.
Множество реализуемых машинных действий образует её систему команд. Система команд часто определяет области и эффективность применения ЭВМ. Состав и число команд должны быть ориентированы на стандартный набор операций, используемых пользователем для решения своих задач.
По функциональному назначению в системе команд ЭВМ различают следующие группы:
команды передачи данных (обмен входами между регистрами процессора, процессора и оперативной памятью, процессора и периферийными установками).
Команды обработки данных (команды сложения, умножения, сдвига, сравнения-).
Команды передачи управления (команды безусловного и условного перехода).
Команды дополнительные (типа RESET, TEST,-).
Группа команд передачи управления обеспечивает принудительное изменение порядка выполнения команд в программе.
Оттранслированные команды записываются в соседние ячейки памяти в порядке их следования в программе. При естественном порядке выполнения команд в программе, адрес каждой следующей команды определяется по содержимому специального счетчика команд, который входит в состав процессора. Содержимое этого счетчика автоматически наращивается на 1 при выполнении очередной команды. При организации ветвления цикла или для перехода на подпрограмму в счетчик в счетчик команд принудительно записывается адрес перехода, указанный в ходе команды.
Большинство алгоритмов может быть реализовано небольшим базовым набором команд. Вместе с тем система команд должна быть полной, т.е. содержать все команды, которые необходимы для интерпретации алгоритма в машинных кодах. ЭВМ общего назначения имеет универсальный набор команд и применяется в основном для решения тривиальных (стандартных) задач.
Существуют 2 различных принципа поисков операндов в памяти: ассоциативный и адресный.
Ассоциативный поиск (поиск по содержанию запоминающей ячейки) предполагает просмотр содержимого всех ячеек памяти для выявления кода, содержащего заданный командой ассоциативный признак.
Адресный поиск предполагает, что операнд находится по адресу, указанному в адресном поле команд.
Исполнительным адресом операнда называется двоичный код номера ячейки памяти, по которому будет записан или считан оператором.
Адресным кодом команды называется двоичный код в адресном поле команды, с помощью которого необходимо сформировать исполнительный адрес операнда. В ЭВМ адресный код и исполнительный адрес не совпадают, поэтому способ адресации можно определить, как способ формирования исполнительного адреса по адресному коду команды.
Способы адресации классифицируют:
по наличию адресной информации в команде (явная и неявная адресация).
по кратности обращения в оперативную память.
по способу формирования адресов ячеек памяти.
При явной адресации операнда в команде есть поле адреса этого операнда.
При неявной v адресное поле в команде отсутствует, а адрес операнда подразумевается кодом операции. Например, из команды может быть исключен адрес приемника адресата, при этом подразумевается, что результат записывается на месте второго операнда.
По кратности обращения в оперативную память различают:
непосредственную адресацию (direct addressing)
прямую адресацию (immediate addressing)
косвенную адресацию (indirect addressing)
Непосредственная адресация
При непосредственной адресации операнд располагается непосредственно в адресном поле команды.
Прямая адресация
При прямой адресации обращение за операндом производится по адресному коду в поле команды. При этом исполнительный адрес совпадает с адресом кода команды.
Косвенная адресация
При косвенной адресации код команды указывает адрес ячейки памяти, в которой находится не сам операнд, а его адрес, называемый указателем.
Способы формирования адресов ячеек памяти можно разделить на абсолютные и относительные.
Абсолютные способы формирования предполагают, что двоичный код адреса ячейки памяти может быть целиком извлечен либо из адресного поля команды, либо из какой-нибудь другой ячейки в случае косвенной адресации.
Относительные способы формирования предполагают, что двоичный код адресной ячейки памяти образуется из нескольких составляющих:
Б v код базы, И v код индекса, С v код смещения.
Эти составляющие используются в различных сочетаниях.
Относительная адресация
При относительной адресации применяется способ вычисления адреса путем суммирования кодов, составляющих адрес.
Для работы программ с массивами, требующими однотипных операций над элементами массива, удобно использовать индексную адресацию.
Адрес i-того операнда в массиве определяется как сумма начального адреса массива операнда, задаваемого смещением S, и индекса I , записанного в одном из регистров регистровой памяти, называемым индексным регистром.
Адрес индексного регистра задается в команде полем адреса индекса Аи.
В каждом i-том цикле содержимое индексного регистра изменяется на постоянную величину, как правило, это 1.
В некоторых моделях ЭВМ относительная адресация выполняется без суммирования по следующей схеме:
При автоиндексации косвенный адрес, находящийся в регистре РП, автоматически увеличивается (автоинкрементная адресация), или уменьшается (автодекрементная адресация) на постоянную величину до или после выполнения операции.
Стековая память широко используется в современных ЭВМ. Хотя адрес обращения в стек отсутствует в команде, он формируется схемой управления:
Для чтения записи доступен только один регистр v вершина стека. Этот способ адресации используется, в частности, системой прерывания программ при вложенных вызовах подпрограмм.
Стековая память реализуется на основе обычной памяти с использованием указателя стека и автоиндексной адресации.
Запись в стек производится с использованием автодекрементной адресации, а чтение — с использованием автоинкрементной адресации.
Источник
Способы адресации и форматы команд
Способы адресации и форматы команд
Адресация информации – это способ использования адресной части команды для определения местонахождения информации в памяти ЭВМ. Следует отметить, что в адресном пространстве процессора информация адресуется обычно с точностью до байта.
Важным вопросом построения любой системы команд является оптимальное кодирование команд, что отражается на размере полей кода операции, на размере и количестве полей адресной части, т. е. формате команд. Форматы команд в значительной степени определяются методами адресации, количеством операндов, предполагаемым объемом оперативной памяти (ОП), количеством регистров общего назначения (РОН), а также сложностью аппаратуры, необходимой для декодирования. Поэтому в современных RISC – процессорах, в отличии от CISC — процессоров используются достаточно простые методы адресации, позволяющие резко упростить декодирование команд.
Данные, которые обрабатываются командами, могут находиться в самой команде, в регистрах процессора, в ячейках оперативной памяти. Надо помнить, что адресоваться могут не только операнды, но и те места в памяти, куда они или результаты операции будут записываться. При адресации ОП существуют понятия логического и физического адреса. Логическим адресом оперирует программа, которая не привязана к определенным адресам ОП и может располагаться в ее любом месте. Для чтения или записи данных на основании данных о логическом адресе, должен быть сформирован физический или исполнительный адрес, однозначно определяющий место ячейки в ОП.
Среди способов адресации можно выделить следующие:
— непосредственная адресация, когда адресная часть команды используется непосредственно для размещения операнда, как правило, какой-нибудь константы. — прямая регистровая адресация, когда операнд находится в регистре, номер которого указывается в адресной части команды. При программировании на ассемблере используются буквенные обозначения регистров. Длина адресного поля зависит от количества РОН. — неявная адресация, когда местоположение операнда предопределено кодом операции. Обычно операнд находится в специальном регистре процессора, например, в регистре-аккумуляторе или в вершине стека. — прямая адресация, когда в адресной части команды непосредственно указывают адрес ячейки ОП. Основными недостатками прямой адресации является зависимость размера адресного поля от емкости ОП и его большое значение, т. к. емкость ОП современных ЭВМ измеряется мегабайтами. Поэтому прямая адресация обычно используется только для фиксированной части ОП, т. е. с помощью прямого адреса фиксированной длины можно адресовать часть ОП — т. н. страницу ОП. — страничная адресация, когда физический адрес ячейки ОП формируется из двух полей: номера страницы (старшие разряды адреса) и номера ячейки в странице (младшие разряды адреса). Номер страницы определяется содержимым регистра, номер которого указывается в адресном поле команды. Номер ячейки в пределах страницы указывается в адресном поле команды. При таком способе разбиения ОП на страницы фиксированного размера называемого сегментацией, не происходит пересечения страниц по физическим адресам. — относительная или базовая адресация, когда физический адрес получается сложением базового адреса сегмента, сдвинутого влево на несколько разрядов со смещением. Базовый адрес указывается в специальном регистре процессора — базовом регистре. Смещение указывается в адресной части команды. Следует отметить, что страничная адресация является частным случаем относительной (базовой) адресации, при котором сдвиг влево базового адреса производится на число разрядов, равное числу разрядов смещения. Основное назначение относительной адресации — обеспечить перемещаемость программ и данных при динамическом распределении ОП в мультипрограммном режиме работы компьютера. — косвенная адресация, когда указывается не прямой, а косвенный адрес операнда, т. е. адрес адреса операнда, называемый указателем. По косвенному адресу, находящемуся в адресной части команды, производится первое обращение к ОП и извлекается адрес операнда, а затем уже по этому адресу производится второе обращение и извлекается операнд. Недостаток косвенной адресации – дополнительное обращение к памяти и, как следствие, уменьшение быстродействия процессора. — косвенная регистровая адресация, когда указатель адреса операнда хранится не в ОП, а в регистре процессора, номер который указывается в адресной части команды. Поскольку время обращения к регистрам процессора обычно в 5…10 раз меньше, чем к ячейкам ОП, то время выборки операнда увеличивается незначительно – на 10…20%. Достоинствами косвенной адресации являются возможность обработки адреса операнда, уменьшение длины адресной части команды при косвенной регистровой адресации, т. к. адрес регистра значительно короче адреса ячейки памяти. — индексная адресация, когда физический адрес ячейки ОП формируется сложением базового адреса, указанного в адресной части команды или в базовом регистре и смещения, находящегося в специальном регистре процессора, который называетя индексным. Достоинством индексной адресации является возможность модификации исполнительного адреса путём выполнения операций с индексными регистрами. Этот метод адресации эффективен при работе с массивами данных. — индексно — относительная адресация, когда совместно используются индексная и относительная адресации. При индексно — относительной адресации физический адрес ячейки памяти формируется как сумма трех величин. Базовый адрес получается, как и в случае относительной адресации, т. е. сдвигом содержимого базового регистра, номер которого указан в адресной части команды и сложением его со смещением, расположенным в адресной части команды или регистре, номер которого указан в адресной части. Затем полученный адрес складывается с содержимам индексного регистра, номер которого указан в адресной части команды.