 |
нения данных, а для хранения статуса и управления процессо-
ром, также важны для программистов. Это регистр флагов и
счетчик команд.
2.1.1. Общие регистры
Как видно из рис.2-1, Общие регистры 80386 имеют разряд-
ность 32 бит, внутренние шины данных, внешние шины данных и
адреса процессора также имеют разрядность 32 бит. В соответс-
твии с любым обще принятым определением 80386 являются
32-битной машиной. Однако в соответствии с практикой других
процессоров, предшественниками которых были 16-битные машины,
принято, что в 80386 слово означает 16 бит, а 32-бита образу-
ют двойное слово.
Как видно из рис.2-1 все общие регистры могут использо-
ваться как 16 или 32-битные регистры, а четыре из них могут
быть использованы и как 8-битные регистры. Почти во всех опе-
рациях любой общий регистр может быть определен как операнд.
Любые два регистра, например, могут быть перемножены. Анало-
гичным образом, любой регистр при вычислении адреса может
быть исползован в качестве базового или индексного. Поскольку
в любой практической программе требуется стек, общий регистр
ESP подразумевается как указатель вершины стека.
2.1.2. Флаги и счетчик команд
На рис.2-2 показан формат регистра флагов 80386. Флаги
делятся на три класса: статусные, управляющие и системные.
Процессор устанавливает статусные флаги после многих команд,
чтобы отразить результат операции. Например, если два операн-
да при сравнении оказываются равными, то процессор устанавли-
вает флаг нулевого результата. Другие команды, преимуществен-
но команды условного перехода, проверяют флаг статуса и дают
различные результаты в зависимости от состояния флага. Прог-
раммист может устанавливать флаги управления для изменения
семантики некоторых команд. Например, команда просмотра стро-
ки может иметь направление в сторону больших или меньших ад-
ресов в зависимости от состояния флага направления. Системные
флаги предназначены для использования операционной системой и
в прикладных программах могут игнорироваться. (Системные фла-
ги рассматриваются в главе 3). На практике для исключения
возможного изменения системных флагов прикладными программами
может быть использована система защиты 80386.
1 - статусные флаги
2 - перенос
3 - четность
4 - вспомогательный перенос
5 - ноль
6 - знак
7 - переполнение
ЙННННННННННННННННЛНЛНЛНЛНЛНЛНЛНЛНЛНЛНЛНЛНЛНЛНЛНЛНЛН»
є є є є є є є є є є є є є є є є є є є
ИННННННННННННННННКНКНКНКНКНКНКНКНКНКНКНКНКНКНКНКНКНј
8 -
9 -
10 -
11 -
12 -
13 -
14 -
15 -
16 -
Рис.2-2 Регистр флагов
Счетчик команд 80386, обозначаемый EIP, имеет разряд-
ность 32 бит. Счетчик команд управляет выборкой команд (вклю-
чая предварительную выборку) и после выполнения команды про-
цессор автоматически увеличивает его на I. Содержимое счетчи-
ка команд меняется по прерываниям, в особых и при выполнении
команд меняется по прерываниям, в особых случаях и при выпол-
нении команд передачи управления, например, переходах и вызо-
вах.
2.1.3. Регистры математического сопроцессора
Регистры математического сопроцессора, показанные на
рис.2-3, повышают производительность систем с большим объемом
вычислений. При подключении к 80386 математического сопроцес-
сора 80287 или 80387 эти регистры добавляются к 80386. Хотя
математический сопроцессор распознает форматы целых, упако-
ванных десятичных и чисел с плавающей запятой различной дли-
ны, внутри него все величины хранятся в формате с плавающей
запятой в регистровом стеке 8х80 бит. В математических опера-
циях могут быть как неявные ссылки на верхние элементы стека,
так и явные на дригие регистры. Статусный регистр содержит
указатель вершины стека, флаги, идентифицирующие особые слу-
чаи (например, переполнение) и коды состояний, отражающие ре-
зультат последней команды. Регистр управления содержит биты
вариантов и масок, которые программист может устанавливать
для выбора алгоритма округления, интерпретации бесконечности,
а также задания того, как будут обрабатываться особые случаи
- сопроцессором или программно.
1-REGISTER STACK
79 78 64 65 0
ЙННЛННННННННННННННЛНННННННННННННННННННННН»
є є EXSPONENT є SIGNIFICAND є
МННОННННННННННННННОНННННННННННННННННННННН№
є є 2 є 3 є
МННОННННННННННННННОНННННННННННННННННННННН№
є є є є
МННОННННННННННННННОНННННННННННННННННННННН№
є є є є
МННОННННННННННННННОНННННННННННННННННННННН№
є є є є
МННОННННННННННННННОНННННННННННННННННННННН№
є є є є
ИННКННННННННННННННКННННННННННННННННННННННј
15 0
ЙНННННННННННННННННННННН»
4- є CONTHOL REGISTER є
МНННННННННННННННННННННН№
5- є STATUS REGISTER є
ИННННННННННННННННННННННј
Рис.2-3 Регистры математического сопроцессора; 1 - ре-
гистровый стек; 2 - порядок; 3 - мантисса; 4 - регистр управ-
ления; 5 - регистр статуса.
2.2. Память и логическая адресация
Для адресации операдндов в 4г байтном физическом адрес-
ном пространстве прикладные программы 80386 используют логи-
ческую адрсацию. Процессор автоматически транслирует эти ло-
гические адреса в физические, которые затем выдаются на сис-
темную магистраль. Как будет рассмотрено более подробно в
главе 3, операционная система 80386 может перестраивать пред-
ставление прикладной программы о ее логическом адресном прос-
транстве. Например, операционная система 80386 может опреде-
лить логическое адресное пространство так, как это делается
во многих архитектурах , а именно, как простой массив из 2
байт. С другой стороны, она может организовать логическое ад-
ресное пространство как набор сегментов переменной длины.
Операционная система может определить как большое число сег-
ментов, так и всего несколько, в зависимости от ее представ-
ления о логической памяти; 80386 не дисктует конкретное ис-
пользование сегментов и позволяет использовать их так, как
того требует данное применение. Читая дальнейшие разделы,
следует помнить о том, что степень активного использования
сегментов прикладной программой зависит от того, как они ор-
ганизованы операционной системой.
2.2.1. Сегменты
Как было отмечено выше, операционная система может опре-
делить адресное пространство как один или несколько сегмен-
тов. Сегменты являются логоческими блоками, хорошо приспособ-
ленными под программные структуры, которые по сути своей име-
ют переменную длину. Например, 1516-байтная процедура пол-
ностью содержит сегменте 1516 байт, так же, как и 8 мбайтный
массив (например, дисплейный буфер 1028X1028X8) полностью
входит в сегмент такого же размера. Имея для сегментов соот-
ветствующие архитектурные решения, 80386 повышает производи-
тельность систем, в которых механизм структурирования основан
на сегментах. (Страницы, которые рассматриваются в главе 3,
имеют фиксированные размеры; они не приспособлены под прог-
раммные структуры, но, с другой стороны, более подходят для
таких функций операционной системы, как, например, пересылки
между ОЗУ и диском).
Сегмент в системе 80386 может иметь любой размер от 1
байта до 4гбайт. Для каждого сегмента операционная система
поддерживает заданный архитектурой дескриптор, содержащий
описание сегмента. Описание сегмента включает в себя 32-бит-
ный базовый адрес и длину сегмента, а также информацию о за-
щите, предотвращающей неправильное использование сегмента.
Ввиду того, что дескрипторы поддерживаются операционными сис-
темами, их рассмотрение откладывается до главы 3. Прикладные
программы пользуются дескрипторами лишь косвенно, обращаясь к
сегментам с помощью логических адресов.
2.2.2. Логические адреса
Ввиду того, что программа может в принципе обращаться к
нескольким сегментам, логический адрес 80386 должен идентифи-
цировать сегмент. Поэтому логический адрес 80386 состоит из
двух частей, 16-битного селектора сегмента и 32-битного сме-
щения в выбранном сегменте (см. Рис.2-4). После селектора в
логическом адресе указывает на дескриптор сегмента. В принци-
пе процессор определяет адрес сегмента с помощью селектора,
как указателя для таблицы дескрипторов, поддерживаемой опера-
ционной системой. Добавление смещения логического адреса к
базовому адресу, полученному по дескриптору сегмента, дает
адрес операнда.
1 - Логический адрес 2 - Сегмент
ЙННННННННННН» НН»
47 3 31 32 4 0 є є є
ЙННННННННННННЛНННННННННННН» є є є
є селектор є смещение є є є є
ИНЛННННННННННКННННННЛНННННј є є є
є є є 5 є є 7
є є МННННННННННН№ є
є ИННННННННННЛННН>є операнд є єдо 2
є є МННННННННННН№ є
є таблица дескрипторов є є є єбайт
є ЙННННННННННННННННН» + є є є
є є є є є є є
|