Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


СПОСОБЫ ПОИСКА ОПЕРАНДОВ В ОПЕРАТИВНОЙ ПАМЯТИ ЭВМ




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

Существуют 2 различных принципа поисков операндов в памяти: ассоциативный и адресный:

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

- Адресный поиск предполагает, что операнд находится по адресу, указанному в адресном поле команд.

Различают исполнительный адрес операнда и адресный код команды.

Исполнительным адресом операнда называется двоичный код номера ячейки памяти, по которому будет записан или считан операнд.

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

Эти понятия в дальнейшем будем использовать в описании способов адресации к операндам.

Способы адресации к операндам в зависимости от типа поиска операндов в памяти классифицируют:

1) по наличию адресной информации в команде на:

- явную адресацию. При таком способев коде команде есть поле адреса этого операнда;

- неявнуюадресацию. При таком способе адресное поле в команде отсутствует, а адрес операнда подразумевается кодом операции. Например, из команды может быть исключен адрес приемника адресата, при этом подразумевается, что результат записывается на месте второго операнда.

2) по кратности обращения в оперативную память:

- непосредственную адресацию (direct addressing). При непосредственной адресации операнд располагается непосредственно в адресном поле команды (рисунок 6).

Рисунок 6

- прямую адресацию (immediate addressing). При прямой адресации обращение за операндом производится по адресному коду в поле команды. При этом исполнительный адрес совпадает с адресом кода команды. Это можно проиллюстрировать следующим рисунком (рисунок 7).

Рисунок 7

- косвенную адресацию (indirect addressing). При косвенной адресации код команды указывает адрес ячейки памяти, в которой находится не сам операнд, а его адрес, называемый указателем. Это можно проиллюстрировать следующим рисунком (рисунок 8).

Рисунок 7

3) по способу формирования адресов ячеек памяти:

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

- Относительная адресация предполагают, что двоичный код операнда образуется из нескольких составляющих:

- Б - код базы;

- И - код индекса;

- С - код смещения.

Эти составляющие используются в различных сочетаниях.

Виды относительной адресации:

1) Индексная адресация (рисунок 9).

Рисунок 9

Для формирования адреса операнда используется регистровая память.

Адрес i -операнда в массиве определяется как сумма начального адреса массива операнда, задаваемого смещением S, и индекса i , записанного в одном из регистров регистровой памяти, называемым индексным регистром.

Адрес индексного регистра задается в команде полем адреса индекса Аи.

В каждом i-том цикле содержимое индексного регистра изменяется на постоянную величину, как правило, это 1.

Для работы программ с массивами, требующими однотипных операций над элементами массива, удобно использовать такой тип адресации

2) Автоиндексная адресация. При автоиндексации косвенный адрес, находящийся в регистре РП, автоматически увеличивается (автоинкрементная адресация), или уменьшается (автодекрементная адресация) на постоянную величину до или после выполнения операции.

3) Стековая адресация. Стековая память широко используется в современных ЭВМ. Хотя адрес обращения в стек отсутствует в команде, он формируется схемой управления (рисунок 9):

Рисунок 9

Для чтения записи доступен только один регистр - вершина стека.

Этот способ адресации используется, в частности, системой прерывания программ при вызовах подпрограмм.

Стековая память реализуется на основе обычной памяти с использованием указателя стека и автоиндексной адресации. Логически ячейки памяти, отводимые под стек, организованы так, чтобы считывание последнего записанного адреса производилось первым, а первого записанного адреса производилось последним. Такая логическая организация формируется специальным счётчиком. Этот счётчик называется указателем стека SP – это регистр микропроцессора. Ячейка памяти, в которую в данный момент может быть записан, например адрес возврата из подпрограммы, называется вершиной стека. Количество ячеек памяти, предназначенных для организации стека, называется глубиной стека. Последняя ячейка памяти, в которую можно производить запись называется дном стека. Запись в стек производится с использованием автодекрементной адресации, а чтение - с использованием автоинкрементной адресации (рисунок 10).

Рисунок 10

Пример. Вызов подпрограммы, написанной на языке С.

В языке С подпрограммы называются функциями. Функция может иметь аргументы и локальные переменные, т. е. переменные, существующие только в процессе выполнения функции. Предположим, функция зависит от двух входных аргументов х и у целого типа и использует три локальные переменные а, b и с также целого типа. Функция возвращает целое значение.

Подпрограмма:

Основная программа:

Например, в определённом месте программы вызывается функция f с аргументами х = 2, у = 3. Вызывающая программа помещает фактические значения аргументов х и у функции f в стек, при этом наверху стека лежит первый аргумент функции, под ним — второй аргумент. При выполнении инструкции вызова функции вверх стека помещается также адрес возврата. В начале работы функции f стек имеет следующий вид:

Перед выполнением функция f должна захватить в стеке область памяти под свои локальные переменные а, b, с.

 


Поделиться:

Дата добавления: 2015-09-13; просмотров: 474; Мы поможем в написании вашей работы!; Нарушение авторских прав


<== предыдущая лекция | следующая лекция ==>
 | История AIESEC в мире
lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты