Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Сегментные регистры. 16-битные

Динамически подключаемые библиотеки.dynamic link library

Это исполняемые но не загружаемые программы. Бонус – экономия памяти, экономия времени пребывания в памяти.

Временно ненужный код нужно писать в dll.

Многоязыковое программирование. Формат файлов dll это стандарт всех производителей. Dll можно трактовать статически и динамически, при статическом dll загружается при запуске.exe и выгружается при завершении. Для статической загрузки нужен файл с расширением lib, но он используется не всеми производителями.

Loadlibrary – загрузка библиотеки.

GetPloeAddress – получить адрес указатель на функцию.

FreeLibrary – уменьшает счетчик использования и разрывает связь программы с библиотекой.

 

SS – это адрес начала, сегмент стека, адресует сегмент, работает в паре SP – смещение от начала сегмента

когда SS=SP – значит исчерпание стека. Стек растет вверх, чтобы не хранить размер стека.

CS – начало сегмент кода, адресует сегмент, EP – указатель команды, смещение относительно начала кода до текущей инструкции.

DS – сегмент дампа, адресует начало сегмента данных.

ES – Extended data, регистр дополнительного сегмента данных

FS – тоже самое что и ES

GS – тоже самое что и ES

В настоящее время сегментные регистры не используются. Поскольку плоская модель памяти они обнуляются либо содержат непонятно что.

 

EIP – Extraction point, содержится адрес текущей команды, работает в паре с CX, в ручную изменять его не надо, он изменяется на последовательных участках хода +4, условные переходы, безусловные, вызов процедур функций, вызов и возврат из прерываний, делает подключение контекстов.

Подключение контекстов –

Контекстный процесс - копируются все текущие значения всех регистров.

По значениям регистра EIP проверяется доступные \ недоступные адреса.

 

Регистр EFLAGS – радикально отличается от предыдущих следующим: это есть совокупность независящих друг от друга бит.

15 7 0

A C V M R F   N T I P O L O F D F I F T F S F Z F   A F   P F   С F

↑ ↑ ↑ ↑ ↑ ↑

Флаги управления (↑) – модифицируют режим, управляют работой процессора.

Флаги состояния – демонстрируют текущее состояния процессора.

 

CF – Core Flag – флаг переноса, устанавливается в состоянии 1, если арифметическая операция вызвала перенос заём.

PF – Флаг четности, устанавливается в 1 если младшие 8 бит результата содержат четное количество единиц.

AF – вспомогательный перенос, устанавливается если происходит перенос из младшей тетрады байта в старшую.

ZF – Zero flag, устанавливается в 1 если результат операции 0, в противном случае сбрасывается в 0.

SF – Sign flag, флаг знака, значение равняется старшему биту результата.

OF – флаг переполнения, устанавливается в 1 если мы вышли за границу мощности.

IOPL (Input Output Privilege Level) – может иметь 4 значения, этот флаг проверятся при потки процесса получить доступ к процессору.

Кольцо привилегий 0 – maximum privilege – админ.

NT – nested task, вложенность задачи – переключение программного контекста.

Флаги совокупности независимых бит.

Флаги управления процессора:

TF (Trace flag) – используется в debugger в отладках, останавливается на строке ассемблера.

IF (Interrupt Flag) – флаг прерываний, разрешает \ запрещает обработку прерываний. 1 – разрешить \ 0 – запретить.

Выставляется в 0 в теле функции, которое реализует прерывание реентерабельность.

DF – direction flag. Когда DF=0 –инкремент \ DF=1 -инкремент

Изменяет инкремент \ декремент регистров EDI/ESI

RF – (resume flag) флаг возобновления. Используется совместно с флагом TF и временно разрешает выполнение нескольких команд. Временная отмена пошагового режима

VM – (Virtual Mode) оказывает наибольшее значение на работу процессора по умолчанию VM = 0 – обычное состояние процессора – защищенный режим, когда VM = 1 включается эмуляция 086 процессора.

AC – (Aliment check) флаг контроля выравнивания при обращении к памяти. В большинстве случаев процессора формирует 4-х байтовые указатели, в некоторых случаях надо формировать указатели не кратные 4, тогда и включается этот режим.

 

Регистры общего назначения делятся на 4 вида.

AX,BX,CX,DX //CX – не рекомендуется

SI,DI

BP,SP

 

Системные регистры. Не в коллоквиуме.

Регистры которые обеспечивают жизнедеятельность.

Регистры P-режима (Protect) – защищенный.

GDTR (Global Descriptor Table Register)

IDTR (Interrupt Descriptor Table Register)

Длина 48 бит. Старшие 32 бита – базовый адрес где находится сегмент, 16 – младшие биты – смещение, размер сегмента.

Адресуют в памяти глобальную таблицу памяти GDT.

Содержимым являются адреса общесистемных сегментов. На самом деле сегментов в каждой программе аппаратно больше. Чтобы программист не задумывался где он находится аппаратно подсовывается.

IDTR – также содержит адрес области памяти где содержится глобальная таблица прерываний.

 

LDTR (Local Descriptor Table Register) – 16бит

TR (Task Register)

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

TR – содержит адрес сегмента который называется контекстом задачи.

Под текущим состоянием понимается состояние всех регистров процессора в текущем момент.

 

CR Регистры управления (Control Register):

функции CR не опубликованы.

CR0 – это регистр флагов которые имеют отношение к процессору в целом.

CR1 -

CR2 – находится адрес той страницы которой нет (особый случай 14).

CR3 – PDBR – адрес физической памяти.

Особый случай 14 – отсутствие страницы в памяти

 

 

DR (Debug register) регистры отладки:

DR0 – точка остановки

DR1 – точка остановки

DR2 – точка остановки

DR3 – точка установки

DR4 – не опубликован

DR5 – не опубликовано

DR6 – управление

DR7 – состояние

DR – предназначен для отладки без исходных продуктов.

 

TR (Test register) Регистры проверки 8 штук – для проверки cash памяти.

TR0 – TR5 – точки останова.

TR6 - управление

TR7 - состояние

 

<== предыдущая лекция | следующая лекция ==>
Сегменто-страничное преобразование памяти | Assembler. Система команд. Синтаксис Intel
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 565; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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