Сделай Сам Свою Работу на 5

Непрямые способы адресации





  1. Базирование (относительная адресация). Процедура формирования исполнительного адреса: Аисп = Абаза + <смещение>. Для реализации этого способа в ЭВМ выделяются специальные ячейки, которые выполняют функции базовых регистров. В общем случае в ЭВМ может быть несколько базовых регистров.

Базирование, как способ адресации, требует наличие сумматора в адресном устройстве. Любая схема базирования обеспечивает перемещение программ по памяти ЭВМ. Для ее исполнения в области памяти необходимо только установить базовый адрес.

Относительная адресация облегчает задачу программирования различными программистами. В простейшем случае в компьютере регистр базирования единственен, следовательно, в адресном коде отсутствует адресация. На каждом шаге выполнения программы, как минимум необходимо два регистра базирования. Один для задания базового адреса программы, второй для базирования массивов данных. Минимальное число регистров базирования один, но реально нужно четыре-восемь.

  1. Косвенная адресация. При косвенной адресации адресный код в команде содержит не адрес самого операнда, а содержит адрес памяти, где хранится адрес операнда. Можно сказать, что адресный код - это адрес адреса.

В общем случае может использоваться многоступенчатая косвенная адресация. Количество обращений к памяти для получения операнда, характеризует глубину косвенной адресации. Минимальное число обращений для получения операнда - два. Для получения исполнительного адреса не требуется арифметическая обработка. Фактически нахождение операнда - процедура целенаправленного поиска. Косвенная адресация позволяет без изменения самой команды обрабатывать ей различные данные, так как фактически другие операнды находятся в памяти, а не в команде, значит можно обрабатывать линейные структуры данных. Косвенная адресация позволяет загружать программу в произвольное место памяти.



Недостатки косвенной адресации: Если указатели косвенного адреса указывают на исполнительный адрес в памяти, то резко замедляется скорость данной адресации. Обычно используют разновидность косвенной адресации, когда указатель косвенного адреса - это адрес регистра процессора (укороченная адресация).



  1. Автоинкрементная, автодекрементная (индексная) адресация. К необходимости введения такого способа адресации приводят задачи обработки данных, хранящихся в последовательно расположенных ячейках памяти. Такая рекуррентная схема привела к появлению индексной адресации.

В тех ЭВМ, где изменение указателя адреса при обработке данных делается автоматически, там индексация называется автодекрементной или автоинкрементной. Название лишь указывает направление изменения адреса (+1, -1). Данный способ адресации значительно упрощает программирование вычислительных циклов.

  1. Укороченная адресация - всевозможные способы, ориентированные на уменьшение длины команды за счет сокращения адресного кода. Для современных ЭВМ укороченная адресация привела к тому, что базовые адреса, указатели косвенного адреса, указатели индексов при индексации хранятся либо в фиксированных ячейках памяти, либо в фиксированных регистрах процессора. В последнем случае в адресном поле команды задается короткий адрес регистра. Это позволяет не только сократить длину команды, но и уменьшить количество обращений к основной памяти, так как при упорядоченной адресации указатель извлекается из регистра, что гораздо быстрее. Дополнительное обращение к памяти исключается.
  2. Стековая адресация. При использовании стековой адресации, команды не имеют адресного поля (безадресные) для задания адресов операндов. Стековая адресация - очень эффективный способ и применяется в большинстве ЭВМ. Стек может реализовываться либо аппаратными, либо программными средствами. Рассмотрим стек, реализованный программно-аппаратно.

Стек - некоторая область памяти, доступ к ячейкам которой осуществляется с помощью указателя стека.



Рис. 3.1.

SP - указатель стека либо указывает адрес загруженной команды, либо первой свободной ячейки. Доступ к данным в стеке, только по очереди, начиная с вершины. Помещение данных в стек - загрузка стека. Извлечение данных - разгрузка данных.

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

    • Безадресные команды.
    • Перемещаемость команд.

Недостатки стековой адресации:

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

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

Адресация команд

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

Принудительная адресация. Адрес следующей команды в самой команде. Недостатки:

  • Неперемещаемость программы.
  • Команды, с точки зрения длины формата, длинные.

При написании программы в адресном поле следующей команды размещается следующий адрес, что неэффективно. Программист, как правило, располагает команды последовательно, в соседних ячейках памяти. Значит адрес следующей команды вычисляется просто по адресу текущей программы. Для этого в состав процессора вводится специальный узел (программный счетчик PC, СчК, СчАК), обеспечивающий последовательную адресацию команд (естественная адресация).

Однако, при осуществлении ветвления, в программах реализуются циклические участки программы выполняющие обращения к процедурам и подпрограммам, следовательно, естественный порядок выполнения команд, безусловно нарушается. Для этого используются специальные команды - команды передачи управления. Если в командах с естественным порядком нет адресного поля, то в командах передачи управления, адресное поле обязательно, в нем, в общем случае задается адресный код, на основе которого, при выполнении этой команды формируется физический адрес последующей команды. Способы формирования исполнительных адресов команд различны:

  1. Неявная адресация. По существу адресное поле в команде управления отсутствует. Адрес следующей команды извлекается из фиксированных ячеек или адрес фиксирован. Обычно, неявная адресация используется для фиксированных причин прерывания
  2. Абсолютная адресация. В адресном поле команды передачи управления, указывается полный адрес следующей команды. Более распространены непрямые способы адресации, обычно применяют три способа:
    1. Относительная адресация - адресация относительно текущего адреса. В адресном поле команды задается относительный адрес перехода.

Рис. 3.2.

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

    1. Косвенная адресация. В схеме косвенной адресации память для хранения адресов не применяется. Применяется только косвенная регистровая адресация, где хранят адрес перехода. Косвенная адресация требует короткого адресного поля. Позволяет перемещать программы в любое место памяти. Если еще допустить применение относительной адресации, то исполнительный адрес следующей команды вычисляется по схеме. PC := (reg)+disp.
    2. Стековая адресация. Стековая адресация применяется прежде всего при работе с подпрограммами и обслуживании прерываний. Команды передачи управления со стековой адресацией фактически безадресные. Схема работы стека, как и у данных. Стек в этом случае является универсальным и используется, как для адресации данных так и для команд. Следовательно, возникают сложности распознавания команд и данных.

Типы машинных команд

Современные ЭВМ (с CISC процессорами) имеют от 60 до 120 базовых команд.

Базовая команда - команда, которая определяет в процессоре операцию, без учета способов адресации, которые могут быть применены в данной команде, не учитывая какие РОН'ы используются при выполнении программы. Общее количество команд, которое может быть в процессорах, с учетом способов адресации и регистров 250-400. Такое большое количество команд, по замыслу разработчиков, должно сокращать длину программы пользователя, следовательно, уменьшается время решения задачи. Практика же показывает, что программист всем возможным множеством команд никогда не пользуется. Обычно пользователь ограничивается некоторым подмножеством команд, которые он четко понимает и знает. В различных программах, а также в программах для различных ЭВМ, частота появления различных команд оказывается разная. Основной характеристикой любой ЭВМ команды, является ее формат. Все команды любой ЭВМ при рассмотрении разделяют по следующим признакам.

  1. Функциональное назначение:
    • команды передачи данных;
    • команды обработки данных;
    • команды передачи управления;
    • дополнительные команды.
  2. Адресность команды:
    • безадресные команды;
    • одноадресные команды;
    • двух адресные команды;
    • прочие команды.
  3. По способам адресации:
    • данных;
    • команд.
  4. Способ кодирования операций:
    • команды с фиксированным полем кода операций;
    • команды с расширяющимся полем кода операций.
  5. По длине:
    • однобайтные;
    • двухбайтные;
    • трехбайтные;
    • многобайтные.

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

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.