- •Регистры общего назначения
- •Сегментные регистры
- •Регистр флагов
- •Регистры управления процессором
- •Поколения эвм
- •Архитектура фон Неймана и гарвардская архитектура
- •Режимы адресации мп i80386 (реальный, защищённый, v86, страничной адресации)
- •Организация памяти в мп i80386 (физический, логический, линейный адрес, сегментированная память, сплошная память, разбиение на страницы)
- •Адресация в защищённом режиме
- •Страничная адресация
- •Механизм защиты в защищённом режиме (уровни привилегий, какие биты и поля используются механизмом защиты, какие проверки выполняются)
- •Прерывания и исключения
- •Обработчики прерываний в реальном режиме
- •Контроллер прерываний
- •Прерывания в защищённом режиме
- •Порты ввода-вывода
- •Доступ к портам под Windows nt/2000/xp.
- •Simd-расширения команд (mmx, sse, sse2, sse3) simd-расширения архитектуры x86
- •Расширение mmx (Multimedia Extension)
- •Расширение sse (Streaming simd Extension)
- •Расширение sse2
- •Расширения sse3
- •Основы дизайна процессоров (препроцессор, постпроцессор, конвейер, суперскалярность)
- •Предсказание ветвлений
- •Иерархия оперативной памяти
- •Принцип работы обычной dram-памяти (Conventional dram)
- •Ядро микросхемы динамической памяти
Оглавление
1. Регистры общего назначения 2
2. Сегментные регистры 3
3. Регистр флагов 4
4. Регистры управления процессором 5
5. Стек 7
6. Поколения ЭВМ 8
7. Архитектура фон Неймана и гарвардская архитектура 9
8. Режимы адресации МП i80386 (реальный, защищённый, V86, страничной адресации) 10
9. Организация памяти в МП i80386 (физический, логический, линейный адрес, сегментированная память, сплошная память, разбиение на страницы) 11
10. Адресация в защищённом режиме 12
11. Страничная адресация 13
12. Механизм защиты в защищённом режиме (уровни привилегий, какие биты и поля используются механизмом защиты, какие проверки выполняются) 14
13. Прерывания и исключения 15
14. Обработчики прерываний в реальном режиме 16
15. Контроллер прерываний 18
16. Прерывания в защищённом режиме 19
17. Порты ввода-вывода 20
18. Доступ к портам под Windows NT/2000/XP. 21
19. SIMD-расширения команд (MMX, SSE, SSE2, SSE3) 22
20. Основы дизайна процессоров (препроцессор, постпроцессор, конвейер, суперскалярность) 23
21. Предсказание ветвлений 25
22. Иерархия оперативной памяти 26
23. Принцип работы обычной DRAM-памяти (Conventional DRAM) 27
Регистры общего назначения
П редставляют собой часть регистров процессора, использующихся без ограничения в арифметических операциях, но имеющие определенные ограничения, например в строковых.
Первый регистр в этой группе, АХ, называется регистром-сумматором. Он применяется для накапливания результатов вычислений и часто выступает в роли приемника результатов выполнения различных команд. Хотя каждый регистр способен решать множество разнообразных задач, результаты выполнения некоторых команд отправляются в регистр АХ по умолчанию.
Второй регистр этой группы, ВХ, называется базовым регистром. По назначению он во многом аналогичен регистру АХ, но есть и одно существенное отличие. В ВХ можно записать адрес памяти, а затем выполнить команду, операнд которой располагается по этому адресу памяти. Другими словами, ВХ может содержать указатель на область памяти, а АХ - не может.
Следующий регистр общего назначения, СХ, называется регистром-счетчиком. Он применяется для хранения значений счетчиков при выполнении циклов. Во время обработки команды LOOP значение в этом регистре автоматически уменьшается на единицу. Как правило, циклы завершаются в тот момент, когда значение в регистре СХ достигает нуля.
Четвертым регистром в группе регистров общего назначения является регистр данных (DX). Совместно с регистром АХ он задействуется при выполнении команд со словами двойной длины (32-разрядными). В этом случае в DX сохраняются старшие 16 бит, а в АХ - младшие 16 бит. Здесь нужно оговориться, что обычно 32-разрядные целые числа называются длинными. Термин двойные чаще применяется по отношению к 64-разрядным значениям с плавающей точкой, но иногда так называют и 32-разрядные целочисленные значения. В нашем контексте путаницы не возникнет, так как числа с плавающей точкой мы обсуждать не собираемся.
Остальные четыре регистра общего назначения — ESI (индекс источни-ка), EDI (индекс приемника), ЕВР (указатель базы), ESP (указатель стека) — являются 32-битными и имеют более конкретное назначение. Регистры ESI и EDI необходимы в строковых операциях, ЕВР и ESP — при работе со стеком.
Каждый регистр общего назначения можно рассматривать либо как один 16-разрядный регистр, либо как пару 8-разрядных регистров. Таким образом, в процессоре 8088 предусмотрено восемь 8-разрядных регистров, применяемых при выполнении команд с байтами и символами. Регистры, входящие во все остальные группы, нельзя разделить на две 8-разрядные части. Одни команды задействуют целый регистр (например, АХ), другие - только одну его часть (например, AL или АН). Согласно общему правилу, те команды, которые выполняют арифметические операции, обычно используют целые 16-разрядные регистры, а те, что имеют дело с символами, чаще всего довольствуются 8-разрядными регистрами. Следует иметь в виду, что AL и АН - не что иное, как имена двух половин регистра АХ. При записи в АХ нового 16-разрядного числа в AL и АН размещаются его нижняя и верхняя половины, соответственно.
Сегментные регистры
В программной модели микропроцессора имеется шесть сегментных регистров: cs, ss, ds, es, gs, fs.
Их существование обусловлено спецификой организации и использования оперативной памяти микропроцессорами Intel. Она заключается в том, что микропроцессор аппаратно поддерживает структурную организацию программы в виде трех частей, называемых сегментами. Соответственно, такая организация памяти называется сегментной.
Для того чтобы указать на сегменты, к которым программа имеет доступ в конкретный момент времени, и предназначены сегментные регистры. Фактически, с небольшой поправкой, в этих регистрах содержатся адреса памяти с которых начинаются соответствующие сегменты. Логика обработки машинной команды построена так, что при выборке команды, доступе к данным программы или к стеку неявно используются адреса во вполне определенных сегментных регистрах. Микропроцессор поддерживает следующие типы сегментов:
Сегмент кода. Содержит команды программы.
Для доступа к этому сегменту служит регистр cs (code segment register) — сегментный регистр кода. Он содержит адрес сегмента с машинными командами, к которому имеет доступ микропроцессор (то есть эти команды загружаются в конвейер микропроцессора).
Сегмент данных. Содержит обрабатываемые программой данные.
Для доступа к этому сегменту служит регистр ds (data segment register) — сегментный регистр данных, который хранит адрес сегмента данных текущей программы.
Сегмент стека. Этот сегмент представляет собой область памяти, называемую стеком.
Работу со стеком микропроцессор организует по следующему принципу: последний записанный в эту область элемент выбирается первым. Для доступа к этому сегменту служит регистр ss (stack segment register) — сегментный регистр стека, содержащий адрес сегмента стека.
Дополнительный сегмент данных.
Неявно алгоритмы выполнения большинства машинных команд предполагают, что обрабатываемые ими данные расположены в сегменте данных, адрес которого находится в сегментном регистре ds.
Если программе недостаточно одного сегмента данных, то она имеет возможность использовать еще три дополнительных сегмента данных. Но в отличие от основного сегмента данных, адрес которого содержится в сегментном регистре ds, при использовании дополнительных сегментов данных их адреса требуется указывать явно с помощью специальных префиксов переопределения сегментов в команде.
Адреса дополнительных сегментов данных должны содержаться в регистрах es, gs, fs (extension data segment registers).