Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
FoxPro / Методички_по_БД / ОрганизациЭВМ и систем_Учеб_пособие.doc
Скачиваний:
150
Добавлен:
11.05.2015
Размер:
2.4 Mб
Скачать

Стековая адресация

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

2.5. Примеры форматов команд и способов адресации

2.5.1. Форматы команд и способы адресации в cisc-процессорах

В качестве примера рассмотрим набор команд и способы адресации, используемые в процессорах интеловской архитектуры. Для этих процессоров в табл. 2.1 приведены данные о развитии их системы команд.

Таблица 2.1

Развитие системы команд процессоров архитектуры Intel

Год появления набора команд

Тип процессора, где набор был реализован впервые

Общее число команд

Смысл расширения

1979

i8086

170

Исходный набор команд х 86

1985

i386

220

50 новых команд, необходимых для перехода к 32-разрядной архитектуре

1997

Pentium/MMX

277

57 ММХ-команд для параллельной обработки видео- и аудиоинформации

1999

Katmai (Pentium III)

347

70 команд: SIMD-FP, дополнена ММХ, управление потоковым обменом данными с памятью

В базовый набор команд 8086 входили операции с плавающей запятой (FP), но до i386 включительно они выполнялись отдельным сопроцессором, которого могло в компьютере и не быть. Блок FP-функций был включен в состав основного процессора в i486, однако в варианте 486SX обращение к этому блоку было заблокировано. Эти команды стали обязательной частью процессора, только начиная с Pentium.

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

  • регистр — регистр;

  • память — регистр;

  • непосредственный операнд — регистр;

  • регистр — память;

  • память — память;

  • непосредственный операнд — память.

Операнды могут содержать 8, 16 или 32 разряда. Для реализации различных типов команд определены форматы, задающие порядок размещения информации о выполняемой операции и способах выбора операндов.

Общий формат команд

Обобщенный вид формата команды показан на рис. 2.10. Он допускает наличие следующих полей: кода операции (1 или 2 байта); байтов адресации (0, 1 или 2 байта); байтов смещения (0, 1, 2 или 4 байта); байтов непосредственных данных — операндов (0, 1, 2 или 4 байта).

КОП

Байты адресации

Смещение

Операнд

MOD R/M

SIB

1 или 2 байта

0 или 1 байт

0 или 1 байт

0, 1, 2 или 4 байта

0, 1, 2 или 4 байта

Рис. 2.10. Общий формат команд

Команды содержат от 1 до 11 байт. Проведенные оценки показывают, что в среднем длина команды составляет 4 — 5 байт.

Рассмотрим назначение основных полей кода команды (рис.2.10). Код операции (КОП) определяет тип выполняемой операции, а также в некоторых командах в первом байте может содержаться бит W, задающий разрядность операндов:

W=0 — операция с байтами;

W = 1 — операция со словами (16 или 32 разряда).

В ряде команд первый байт КОП содержит поля reg или sreg, определяющие адрес используемых регистров. Трехбитовое поле reg задает выбираемый регистр в соответствии с разрядностью обрабатываемых операндов. Поле sreg (двух или трехбитовое) определяет адрес сегментных регистров.

Байт адресации MОD R/M содержит три поля (рис. 2.11). Поля: _JKJLKHLKJHMОD и R/M задают адрес одного из операндов, который может храниться в регистре или ячейке памяти. Кодировка этих полей определяет выбираемый способ адресации.

7 6

5 3

2 0

7 6

5 3

2 0

MOD

REG/КОП

R/M

SS

INDEX

BASE

MOD R/M

SIB

Рис. 2.11. Форматы байтов MOD R/M и SIB

В одноадресных командах поле REG/КОП содержит дополнительные биты кода операции. В двухадресных командах поле REG содержит адрес регистра, в котором хранится второй из операндов. Тип команды (одно- или двухадресная) определяется первым битом КОП. Поле MOD указывает, какой разрядности смещение используется для формирования адреса. Если оно имеет значение 00 (при некоторых значениях R/M) или 01, 10, то используется 8-, 16- или 32-разрядное смещение. Это смещение задается соответствующими байтами в коде команды, которые располагаются после байтов адресации.

Для реализации некоторых способов относительной адресации используется байт SIB. Он содержит 3-битовые поля INDEX и BASE, определяющие выбор регистров, используемых в качестве индексного и базового регистров, и поле SS, задающее масштабный коэффициент для модификации значения индекса.

При выполнении операций с непосредственной адресацией один из операндов задается в последних байтах команды (рис. 2.10). В этом случае КОП ряда команд содержит бит S, определяющий способ использования непосредственно задаваемых данных.

Соседние файлы в папке Методички_по_БД