Студопедия Главная Случайная страница Обратная связь

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

Основные регистры МП (л7):




- РОН (название, разрядность, обозначение, применение);

 

Перечислим регистры, относящиеся к группе регистров общего назначения (РОН). Так как эти регистры физически находятся в микропроцессоре внутри арифметико-логического устройства (АЛУ), то их еще называют регистрами АЛУ:

  • eax/ax/ah/al (Accumulator register) — аккумулятор.
    Применяется для хранения промежуточных данных. В некоторых командах использование этого регистра обязательно;
  • ebx/bx/bh/bl (Base register) — базовый регистр.
    Применяется для хранения базового адреса некоторого объекта в памяти; может также использоваться для хранения промежуточных данных.
  • ecx/cx/ch/cl (Count register) — регистр-счетчик.
    Применяется в командах, производящих некоторые повторяющиеся действия (циклические). Его использование зачастую неявно и скрыто в алгоритме работы соответствующей команды.
    К примеру, команда организации цикла loop кроме передачи управления команде, находящейся по некоторому адресу, анализирует и уменьшает на единицу значение регистра ecx/cx;
  • edx/dx/dh/dl (Data register) — регистр данных.
    Так же, как и регистр eax/ax/ah/al, он хранит промежуточные данные. В некоторых командах его использование обязательно; для некоторых команд это происходит неявно.

Сейчас регистры общего назначения могут быть 64-разрядными и имеют в наименовании приставку r :

    • rax/eax/ax/ah/al;
    • rbx/ebx/bx/bh/bl;
    • rdx/edx/dx/dh/dl;
    • rcx/ecx/cx/ch/cl;

Можно использовать младшие 32-разрядные части этих регистров (старшие части самостоятельно использовать нельзя).

В свою очередь можно самостоятельно использовать младшие 16-разрядные части 32-разрядных регистров (старшие части регистров самостоятельно использовать нельзя.).

В свою очередь можно самостоятельно использовать младшие 8-разрядные части 16-разрядных регистров (старшие части регистров самостоятельно использовать нельзя.).

Так сделано для обеспечения работоспособности программ, написанных для младших 16-разрядных моделей микропроцессоров фирмы Intel, начиная с i8086.

 

- индексные регистры (название, разрядность, обозначение, применение);

Следующие два регистра (они имеют еще название индексные) используются для поддержки так называемых цепочечных операций, то есть операций, производящих последовательную обработку цепочек элементов, каждый из которых может иметь длину 32 или16 бит (эти регистры могут использоваться только полностью, к частям регистра доступа нет, в отличии от первых четырех РОН). Могут использоваться программистом при написании программ.

  • esi/si (Source Index register) — индекс источника.
    Этот регистр в цепочечных операциях содержит текущий адрес элемента в цепочке-источнике (при работе с массивами данных);
  • edi/di (Destination Index register) — индекс приемника (получателя).
    Этот регистр в цепочечных операциях содержит текущий адрес в цепочке-приемнике (при работе с массивами данных);
esi   si
  31 16 15 0
edi   di
  31 16 15 0

- регистры указатели (название, разрядность, обозначение, применение);

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

каждый из которых может иметь длину 32 или16 бит (эти регистры могут использоваться только полностью, к частям регистра доступа нет, в отличии от первых четырех РОН). Могут использоваться программистом при написании программ.

  • esp/sp (Stack Pointer register) — регистр указателя стека.
    Содержит указатель вершины (адреса) стека в текущем сегменте стека.
  • ebp/bp (Base Pointer register) — регистр указателя базы.
    Предназначен для организации произвольного доступа к данным внутри соответствующего сегмента (величину смещения внутри выбранного сегмента).
esp   sp
  31 16 15 0
ebp   bp
  31 16 15 0

 

- сегментные регистры (название, разрядность, обозначение, применение);

В программной модели микропроцессора имеется шесть сегментных регистров: cs, ss, ds, es, gs, fs.
Их существование обусловлено спецификой организации и использования оперативной памяти микропроцессорами Intel. Она заключается в том, что микропроцессор аппаратно поддерживает структурную организацию программы в виде трех частей, называемых сегментами. Соответственно, такая организация памяти называется сегментной.

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

  1. Сегмент кода. Содержит команды программы.
    Для доступа к этому сегменту служит регистр cs (code segment register) — сегментный регистр кода. Он содержит адрес сегмента с машинными командами, к которому имеет доступ микропроцессор.
  2. Сегмент данных. Содержит обрабатываемые программой данные.
    Для доступа к этому сегменту служит регистр ds (data segment register) — сегментный регистр данных, который хранит начальный адрес сегмента данных текущей программы.
  3. Сегмент стека. Этот сегмент представляет собой область памяти, называемую стеком.
    Работу со стеком микропроцессор организует по следующему принципу: последний записанный в эту область элемент выбирается первым. Для доступа к этому сегменту служит регистр ss (stack segment register) — сегментный регистр стека, содержащий адрес начала сегмента стека.
  4. Дополнительный сегмент данных.
    Неявно алгоритмы выполнения большинства машинных команд предполагают, что обрабатываемые ими данные расположены в сегменте данных, начальный адрес которого находится в сегментном регистре ds.
    Если программе недостаточно одного сегмента данных, то она имеет возможность использовать еще три дополнительных сегмента данных. Но в отличие от основного сегмента данных, адрес которого содержится в сегментном регистре ds, при использовании дополнительных сегментов данных их адреса требуется указывать явно с помощью специальных префиксов переопределения сегментов в команде.
    Адреса дополнительных сегментов данных должны содержаться в регистрах es, gs, fs (extension data segment registers).

В настоящее время сегментные регистры могут быть 32-разрядные, имеют приставку е. Пользователь доступа к сегментным регистрам не имеет, а адреса распределяются ОС.

- регистр флагов (название, разрядность, обозначение, применение);

Регистр флагов eflags/flags постоянно содержит информацию о состоянии микропроцессора:

 

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

eflags/flags (flag register) — регистр флагов. Разрядность eflags/flags — 32/16 бит. Отдельные биты данного регистра имеют определенное функциональное назначение и называются флагами. Младшая часть этого регистра полностью аналогична регистру flags для i8086. На рис. 2 показано содержимое регистра eflags.

 

Рис. 2. Содержимое регистра eflags

Исходя из особенностей использования, флаги регистра eflags/flags можно разделить на три группы:

  • 8 флагов состояния. Эти флаги могут изменяться после выполнения машинных команд.
    Флаги состояния регистра eflags отражают особенности результата исполнения арифметических или логических операций. Это дает возможность анализировать состояние вычислительного процесса и реагировать на него с помощью команд условных переходов и вызовов подпрограмм.
  • 1 флаг управления. Обозначается df (Directory Flag).
    Он находится в 10-м бите регистра eflags и используется цепочечными командами. Значение флага df определяет направление поэлементной обработки в этих операциях: от начала строки к концу (df = 0) либо наоборот, от конца строки к ее началу (df = 1).
    Для работы с флагом df существуют специальные команды: cld (снять флаг df) и std (установить флаг df).
    Применение этих команд позволяет привести флаг df в соответствие с алгоритмом и обеспечить автоматическое увеличение или уменьшение счетчиков при выполнении операций со строками;
  • 5 системных флагов, управляющих вводом/выводом, маскируемыми прерываниями, отладкой, переключением между задачами и виртуальным режимом 8086.
    Прикладным программам не рекомендуется модифицировать без необходимости эти флаги, так как в большинстве случаев это приведет к прерыванию работы программы.

- регистр указателя (счетчика) команд (название, разрядность, обозначение, применение);

eip/ip (Instraction Pointer register) — регистр-указатель команд.
Регистр eip/ip имеет разрядность 32/16 бит и содержит смещение следующей подлежащей выполнению команды относительно содержимого сегментного регистра cs в текущем сегменте команд. Этот регистр непосредственно недоступен программисту, но загрузка и изменение его значения производятся различными командами управления, к которым относятся команды условных и безусловных переходов, вызова процедур и возврата из процедур. Возникновение прерываний также приводит к модификации регистра eip/ip.

34. В каких режимах может работать процессор (реальный, защищенный, виртуальный)?

Понятие защищенного режима работы. Перечислить сегментные регистры. Что хранится в сегментных регистрах в реальном режиме. А что в защищенном?

Что представляет собой селектор. Назначение каждого разряда.

Виды таблиц дескрипторов. Где находятся?

Понятие колец защиты. Сколько уровней защиты имеется? (л8).

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

Физический адрес формируется по принципам защищенного режима (отличны от принципов формирования адреса в реальном режиме работы!).

В реальномрежиме: для хранения адресов начала соответствующих сегментов используется 16-разрядные регистры CS, SS, DS, ES, FS, GS. Они используются при вычислении физических адресов путем суммирования базового (начала сегмента) адреса, находящегося в сегментном регистре, со смещением. Максимальный размер сегмента в реальном режиме 64 Кбайт (216).

В защищенном режиме CPU в сегментные регистры : CS, DS, SS ,E S, FS, GS загружается селектор

Селектор представляет 16-разрядный указатель и имеет три поля:

15 3 2 1 0

Index TI RPL

Биты 0 и 1 - это поле RPL, которое определяет уровень привилегий запроса и используется в механизме защиты памяти.

Установлено 4 уровня защиты или 4 уровня привилегий (кольца защиты)

 

 

 

 


PL=0 – самый высокий уровень привилегий назначен ядру ОС

PL=1 – назначен системным сервисам

PL=2 – расширение ОС

PL=3 – самый низкий уровень привилегий назначен пользовательским программам.

Бит 2 – Это поле TI.

При TI=0 используется глобальная таблица дескрипторов GDT.

При TI=1 используется локальная таблица дескрипторов LDT.

Дескрипторы сегментов хранятся в виде таблиц массивов данных в ОП. Таблицы могут иметь размеры от 8 байт до 64 Кбайт. Имеется три вида дескрипторов :

GDT – глобальная таблица дескрипторов

LDT – локальная таблица дескрипторов

IDT – таблица дескрипторов прерываний

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

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

Таблица IDT обеспечивает выполнение процедур обслуживания исключений (прерываний).

Общий формат дескриптора

Базовый адрес 31 24 G   D/B     AVL   Граница   19 16 P   DPL   14 13 S   TYPE   11 8 Базовый адрес 7 0
Базовый адреc 31 16 Граница сегмента 15 0
                       

Поле INDEX – служит индексом (смещением) для выбора одного из 8192 дескрипторов (213), содержащихся в таблицах GDT или LDT.

На сумматор, вычисляющий физический адрес памяти в защищенном режиме, подается не содержимое сегментногорегистра, как в случае реального режима, а базовый адрес из выбранного дескриптора, который суммируется с содержимым поля INDEX селектора (смещение).







Дата добавления: 2015-04-19; просмотров: 320. Нарушение авторских прав

Studopedia.info - Студопедия - 2014-2018 год . (0.004 сек.) русская версия | украинская версия