assembler. Учебник для вузов_Юров В.И_2003 -637с (862834), страница 13
Текст из файла (страница 13)
Защищенный режим впервыепоявился в процессоре i80286. Этот процессор имел 24-разрядную адресную шинуи, соответственно, мог адресовать в защищенном режиме до 16 Мбайт оперативной памяти. Для этого ему достаточно было иметь в дескрипторе поле базовогоадреса 24 бита и поле размера сегмента 16 битов. После появления процессораi80386 с 32-разрядной шиной команд и данных в целях совместимости программразработчики не стали менять формат дескриптора, а просто использовали свободные поля. Внутри процессора эти поля объединены. Внешне же они осталисьразделенными, и при программировании с этим приходится мириться.Следующий интересный момент связан с тем, что размер сегмента в защищенном режиме может достигать 4 Гбайт, то есть занимать все доступное физическоепространство памяти. Как это возможно, если суммарный размер поля размерасегмента составляет всего 20 битов, что соответствует величине 1 Мбайт? Секретскрыт в поле гранулярности — бит G (см.
рис. 2.9). Если G = 0, то значение в полеразмера сегмента означает размер сегмента в байтах, если G - 1, — то в страницах.Размер страницы составляет 4 Кбайт. Нетрудно подсчитать, что когда максимальное значение поля размера сегмента составляет Offfffh, то это соответствует 1 М страниц или величине 1 М х 4 Кбайт = 4 Гбайт.Выведение информации о базовом адресе сегмента и его размере на уровеньпроцессора позволяет аппаратно контролировать работу программ с памятьюи предотвращать обращения к несуществующим адресам либо к адресам, находящимся вне предела, разрешенного полем размера сегмента limit.Другой аспект защиты заключается в том, что сегменты неравноправны в правах доступа к ним.
Информация об этом содержится в специальном байте AR, входящем в состав дескриптора. Наиболее важные поля байта AR — это dpi и биты R/W,C/ED и I, которые вместе определяют тип сегмента. Поле dpi — часть механизмазащиты по привилегиям. Суть этого механизма заключается в том, что конкретный сегмент может находиться на одном из четырех уровней привилегированности с номерами О, 1, 2 и 3.
Самым привилегированным является уровень 0. Существует ряд ограничений (опять-таки на аппаратном уровне) на взаимодействиесегментов кода, данных и стека с различными уровнями привилегий.56Глава 2. Программно-аппаратная архитектура IA-32 процессоров IntelИтак, мы выяснили, что в защищенном режиме перед использованием любойобласти памяти должна быть проведена определенная работа по инициализациисоответствующего дескриптора.
Эту работу выполняет операционная система илипрограмма, сегменты которой также описываются подобными дескрипторами. Вседескрипторы собираются вместе в одну из трех дескрипторных таблиц:ш глобальная дескрипторная таблица (Global Descriptor Table, GDT), ее адресхранится в регистре GDTR;II локальная дескрипторная таблица (Local Descriptor Table, LDT), ее адрес хранится в регистре LDTR;ш дескрипторная таблица векторов прерываний (Interrupt Descriptor Table, IDT),ее адрес хранится в регистре IDTR.В какую именно таблицу должен быть помещен дескриптор, определяется егоназначением.
Адрес, по которому размещаются эти дескрипторные таблицы, может быть любым; он хранится в специально предназначенном для этого адреса системном регистре.Схемы, показанные на рис. 2.7, б и в, иллюстрируют Принцип формированияадреса в защищенном режиме. Важно отметить изменение роли сегментных регистров. В защищенном режиме они содержат не адрес, а селектор, то есть указательна соответствующую ячейку одной из дескрипторных таблиц (GDT или LDT).Остальные элементы архитектуры IA-32, такие как формат машинных команд,типы данных и др., логично рассмотреть в следующих главах в контексте соответствующих аспектов использования языка ассемблера.Итогил Понимание архитектуры ЭВМ является ключевым для изучения ассемблера.Это касается любого типа компьютера.
Структура ассемблера, формат егокоманд, адресация операндов и т. д. полностью отражают особенности архитектуры компьютера. Есть общие архитектурные свойства, присущие всем современным машинам фон-неймановской архитектуры, и есть частные свойства,присущие конкретному типу компьютеров.ii Целью изучения архитектуры является:П выявление набора доступных для программирования регистров, их функционального назначения и структуры;D понимание организации оперативной памяти и порядка ее использования;П знакомство с типами данных;П изучение формата машинных команд;П выяснение организации обработки прерываний.И Процессор содержит 32 доступных тем или иным образом регистра.
Они делятся на пользовательские и системные.* Пользовательские регистры имеют определенное функциональное назначение.Среди них особо нужно выделить регистр флагов Е FLAGS и регистр указателякоманды EIP. Назначение регистра EFLAGS — отражать состояние процессораИтоги57после выполнения последней машинной команды. Регистр EIP содержит адресследующей выполняемой машинной команды. Доступ к этим регистрам, в силуих специфики, со стороны программ пользователя ограничен.Процессор имеет три основных режима работы:D реальный режим, который использовался для i8086 и поддерживается до сихпор для обеспечения совместимости программного обеспечения;D защищенный режим, который впервые появился в i80286;D режим виртуального процессора 18086 обеспечивает полную эмуляцию 18086,позволяя при этом организовать многозадачную работу нескольких такихпрограмм.Процессор имеет сложную систему управления памятью, функционированиекоторой зависит от режима работы процессора.Глава 3Система командпроцессора IA-32Формат машинных команд IA-32Назначение и интерпретация полей машинной командыОсновы декодирования машинных командФункциональная классификация машинных командСистема машинных команд является важнейшей частью архитектуры компьютера, так как с их помощью производится непосредственное управление работой процессора.
К примеру, система команд процессора Pentium IV содержит более 300 машинных команд. С появлением каждой новой модели процессора количествокоманд, как правило, возрастает, отражая архитектурные новшества данной модели по сравнению с предшествующими.При знакомстве с системой машинных команд необходимо учитывать два аспекта — собственно набор машинных команд и правила представления этих команд на уровне процессора, то есть формат машинных команд.
Процессору компьютера понятен только один язык — язык машинных команд. Машинные командыпредставляют собой сформированные по определенным правилам последовательности нулей и единиц. Для того чтобы заставить процессор выполнить некотороедействие, ему нужно выдать соответствующее указание в виде машинной команды, а для выполнения более сложной работы достаточно написать программу в двоичных кодах.
Программирование первых компьютеров осуществлялось именнотаким способом. Недостатки процесса написания программ в двоичном коде очевидны. Для облегчения процесса разработки программ был придуман язык ассемблера, как символический аналог машинного языка, а в архитектуру компьютеравведен блок микропрограммного управления. Для каждой машинной команды блокФормат машинных команд IA-3259микропрограммного управления содержит отдельную микропрограмму, с помощьюкоторой действия, заданные этой командой, переводятся на язык сигналов, направляемых нужным подсистемам процессора. После этих нововведений процессразработки программы значительно упростился. Человек пишет программу на понятном ему языке символов, специальная программа — ассемблер — переводит(транслирует) программу человека на машинный язык, а блок микропрограммного управления нужным образом интерпретирует машинные команды для процессора, процессор выполняет нужную работу.В дальнейшем, с появлением программного обеспечения более высокого уровня, язык ассемблера не потерял своей роли, а наоборот, приобрел новые качества.В силу иерархичности программного обеспечения компьютера ассемблер стал промежуточным, связующим звеном между разнородным и разноязыким программным обеспечением более высокого уровня и процессором.Таким образом, существует взаимно однозначное соответствие машинных команд и команд ассемблера.
Понимание правил формирования машинных командиз команд ассемблера является одним из необходимых условий не только для изучения языка ассемблера, но и для понимания логики работы компьютера в целом.Формат машинных команд IA-32Машинная команда представляет собой закодированное по определенным правилам указание процессору на выполнение некоторой операции. Правила кодирования команд называются форматом команд. Команды процессоров архитектурыIA-32 считаются сложными. Максимальная длина машинной команды IA-32 составляет 15 байт. Реальная команда может содержать гораздо меньшее количествополей, вплоть до одного — только код операции.