КАТЕГОРИИ: Архитектура-(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
↑ ↑ ↑ ↑ ↑ ↑ Флаги управления (↑) – модифицируют режим, управляют работой процессора. Флаги состояния – демонстрируют текущее состояния процессора.
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 - состояние
Дата добавления: 2014-01-04; Просмотров: 593; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |