Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
arkhitektura.docx
Скачиваний:
50
Добавлен:
12.01.2020
Размер:
216.72 Кб
Скачать

8. Архитектура ia-32. Регистры смещений и регистр флагов.

  1. Регистры смещений.

Служат для хранения относительных адресов ячеек памяти внутри соответствующих сегментов (смещений относительно начала сегментов):

EIP/IP (Instruction Pointer) – смещение адреса текущей команды программы;

ESP/SP (Stack Pointer) – регистр указателя стека, указывает на смещение вершины стека (текущего адреса стека);

EPB/BP (Base Pointer) – регистр указателя базы кадра стека. Предназначен для организации произвольного доступа к данным внутри стека.

ESI/SI (Source Index register) – индекс источника. Этот регистр в цепочечных операциях содержит текущий адрес элемента в цепочке-источнике.

EDI/SI (Destination Index register) – индекс приемника. Этот регистр в цепочечных операциях содержит текущий адрес элемента в цепочке-приемнике.

  1. Регистр флагов.

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

EFLAGS/FLAGS – 32/16 бит. Отдельные биты называются флагами. Младший байт этого регистра полностью аналогичен регистру FLAGS процессора i8086.

Основные флаги:

CF – флаг переноса. (номер бита в EFLAGS – 0). Содержит 1, если арифметическая операция произвела перенос старшего бита результата. Старшим является 7-й, 15-й или 31-й бит в зависимости от размерности операнда.

PF – флаг паритета. (номер бита в EFLAGS – 2). 1 – 8 младших разрядов операнда содержат четное число единиц.

AF – вспомогательный флаг переноса (номер бита в EFLAGS – 4). Только для BCD-чисел. Фиксирует факт заема из младшей тетрады в старшую.

ZF – флаг нуля. (номер бита в EFLAGS – 6). 1 – результат нулевой.

SF – флаг знака (номер бита в EFLAGS – 7). Отражает состояние старшего бита результата. 1- старший бит равен 1.

OF – флаг переполнения (номер бита в EFLAGS – 11). Для фиксирования факта потери значащего бита при арифметической операции.

IOPL – уровень привилегий ввода-вывода. (номер бита в EFLAGS – 12,13) Используется в защищенном режиме работы МП для контроля доступа к командам ввода-вывода, в зависимости от привилегированности задачи.

NT – флаг вложенности задачи. (номер бита в EFLAGS – 14). Используется в защищенном режиме работы для фиксации того факта, что одна задача вложена в другую.

TF – флаг трассировки. (номер бита в EFLAGS – 8). Предназначен для организации пошаговой работы МП.

IF – флаг прерывания.

Помимо этих регистров существуют множество системных регистров, которые мы рассматривать не будем.

9. Архитектура ia-32. Организация памяти.

Пространство памяти и ввода-вывода разделены.

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

Память логически организовывается в виде одного или множества сегментов переменной (для защищенного режима) или постоянной (для реального режима) длины.

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

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

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

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

Рассмотрим модель памяти в реальном режиме.

Разрядность шины адреса в реальном режиме – 20 бит. Что дает возможность адресовать ячеек размером в байт, то есть 1 Мбайт.

Вся память разделяется на сегменты, размером в 64 Кбайт.

Физический адрес памяти, поступающий на шину адреса состоит из двух 16-битных частей – адреса сегмента (Seg) и исполнительного (эффективного) адреса EA. Он формируется следующим образом:

Адрес текущего сегмента хранится в одном из сегментных регистров CS, DS, SS, ES. Сдвигается на 4 бита (умножается на 16) он аппаратно, совершенно прозрачно для программиста.

Эффективный адрес может быть константой, содержимым регистра, или суммой нескольких величин. Но, так как он является 16-битным, то при одном и том же значении сегментного регистра, изменяя эффективный адрес, нельзя выйти за пределы этого сегмента.

В защищенном режиме организация памяти несколько усложняется. По причине, во-первых, более широкой (32 бита) шины адреса, во-вторых, из-за механизмов поддержки виртуальной памяти. Хотя с точки зрения программиста это отличие заключается лишь в том, что эффективный адрес имеет большую размерность (32 бит), а сегментные регистры содержат не адреса сегментов, а некоторые селекторы, преобразующиеся на аппаратном уровне в эти адреса. Сложение этих адресов дает 32-битный линейный адрес, который преобразуется в физический блоком страничной переадресации (если она включена). На шину адреса отравляется физический адрес, собственно он и указывает на нужную ячейку памяти.

Соседние файлы в предмете Архитектура информационных систем