русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Регистры сегментов


Дата добавления: 2015-06-12; просмотров: 3259; Нарушение авторских прав


CS (Code Segment register) - Сегмент кода.

DS (Data Segment register) - Сегмент данных.

SS (Stack Segment register) - Сегмент стека.

ES (extension data segment register) - Дополнительный сегмент данных.

GS (extension data segment register) - Дополнительный сегмент данных.

FS (extension data segment register) - Дополнительный сегмент данных.

Сегментирование позволяет разработчикам систем выбирать различные модели организации памяти. Проблемы разработки конкретных моделей памяти подробно рассматривается в Части II - Системное программирование.

Регистры сегментов содержат 16-разрядные селекторы сегментов, которые указывают на таблицу распределения памяти. Данная таблица содержит базовые адреса сегментов и другую информацию, регламентирующую доступ к памяти. При использовании плоской (несегментированной) модели все сегменты отображаются в единое пространство физической памяти, как это показано на Рисунке 2-6.

В каждый момент времени непосредственно доступны не более 6-и сегментов. Их селекторы содержатся в регистрах CS, DS, SS, ES, FS и GS. Каждый регистр ассоциируется с сегментом, который соответствует одному из возможных типов доступа к памяти (коды, данные или стек). Каждый регистр указывает на конкретный сегмент, используемый программой и имеющий определенный тип доступа (смотри Рисунок 2-7). Остальные сегменты могут быть использованы после загрузки соответствующих селекторов в сегментные регистры.

+--------------------------------------------------------------+| || Различные логические Единственное физическое || сегменты адресное пространство || || +------------------+ +--------------------+ || GS | | | | || FS | | | | || ES | | -----> | | || DS | | | | || CS | | | | || SS | | | | || +------------------+ +--------------------+ || |+--------------------------------------------------------------+ Рисунок 2-6. Плоская (несегментированная) память +--------------------------------------------------------------+| || Различные адресные || Различные логические сегменты пространства || в физической памяти || CS +-------------------+ +---------------+ || SS +--------------------+ | | Сегмент | || DS +--------------------+ | | | кода | || ES +--------------------+ | | | | | || FS +-------------------+ | +-+ | +---------------| || +------------------+ | | | | | Сегмент стека | || | | | | | | +---------------| || | | | | | | | Сегмент | || | | | | | | --> | данных | || | +--+ | +---+ | | || | | | | +---------------| || | +-----+ | | Сегмент данных| || | +-------+ +---------------| || | | | Сегмент данных| || +------------------+ +---------------| || | Сегмент | || | данных | || +---------------+ |+--------------------------------------------------------------+Рисунок 2-7. Сегментированная модель

Сегмент, содержащий последовательность исполняемых команд, называется сегментом кода. Селектор этого сегмента содержится в регистре CS. Процессор i486 выбирает команды из этого сегмента, используя содержимое счетчика команд (регистр EIP) как относительный адрес внутри сегмента. Содержимое регистра CS изменяется в результате выполнения межсегментных команд управления потоком ( CALL, IRET и JMP), прерываний и исключений. Вызовы подпрограмм, записи параметров и активизация процедур обычно требует области памяти, резервириемой под стек. Все операции со стеком используют регистр SS при обращении к стеку. В отличие от регистра CS, регистр SS может быть загружен явно с помощью команды программы. Остальные четыре регистра являются регистрами сегментов данных (DS, ES, FSи CS), каждый из которых используется текущей исполняемой программой. Доступ к четырем раздельным областям данных имеет целью повысить эффективность программ и безопасность доступа при обращении к различным типам структур данных. Например, имеет смысл разнести по разным сегментам собственные данные программного модуля, данные полученные из модуля более высокого уровня, динамически создаваемые структуры данных и данные, разделяемые текущим модулем с другими модулями. Механизм сегментации позволяет ограничить разрушения неправильно работающей вследствии ошибки программы только теми сегментами, которые выделены текущей программе. Операнды, расположенные внутри сегмента данных адресуются указанием их смещения непосредственно внутри команды или в регистре общего назначения. В некоторых случаях (при сложной структуре данных) может возникнуть необходимость иметь доступ к более чем к четырем сегментам данных. Доступ к дополнительным сегментам осуществляется путем перезагрузки регистров DS, ES, FS и GS прикладной программой в процессе выполнения. Загрузка нужного сегментного регистра должна происходить до обращения к данным соответствующего сегмента. При использовании регистров сегментов, с каждым выбранным сегментом связывается базовый адрес. При адресации единицы данных внутри сегмента, к базовому адресу сегмента добавляется 32-разрядный относительный адрес. Если сегмент выбран загрузкой селектора сегмента в регистр сегмента, то командам манипуляции данными нужен только этот относительный адрес.





<== предыдущая лекция | следующая лекция ==>
Регистры общего назначения. | Реализация стека


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.297 сек.