- •Архитектура эвм
- •Введение
- •Структура мпс
- •Основные понятия в архитектуре мпс
- •Архитектура фон Неймана
- •Гарвардская архитектура
- •Параллельная архитектура
- •Конвейерная архитектура
- •Суперскалярная архитектура
- •АрхитектурыCisc
- •Архитектуры risc
- •Архитектуры misc
- •Ассемблеры
- •Программа Ассемблер
- •Язык Ассемблер
- •Основы 32-битного программирования в Windows
- •Api функции
- •Сообщения Windows
- •Версии ассемблеров
- •Среды разработки
- •Представление данных в эвм
- •Системы счисления и преобразования между ними
- •Форматы представления чисел
- •Форматы представления двоичных чисел
- •Формат с плавающей точкой
- •Типы адресаций операндов
- •Интерфейсы
- •Последовательный интерфейс rs-232c
- •Интерфейс параллельного порта
- •Инфракрасный интерфейс
- •Интерфейс Bluetooth
- •Интерфейс usb
- •Интерфейс ieee 1394 - FireWire
- •Сопроцессоры
- •Система прерываний и исключений
- •Интерфейс jtag
- •Символы и строки
- •Архитектура cisc от Intel
- •Введение
- •Микроархитектура Intel
- •Микроархитектура р6
- •Микроархитектура NetBurst
- •Микроархитектура Pentium 4
- •Микроархитектура Intel Pentium Mobile
- •Микроархитектура Intel Core
- •Микроархитектура Intel Core Duo
- •Микроархитектура Intel Nehalem
- •Адресация памяти в ia_32
- •Наборырегистров
- •Целочисленныйпроцессор
- •Регистры общего назначения (рон)
- •Регистры флагов eflags
- •Регистр указателя команд
- •Сегментные регистры
- •Управляющие регистры
- •Системные адресные регистры
- •Прямой и обратный порядок следования байтов
- •Виды адресации операндов в памяти
- •Цикл выполнения команды
- •Распределение адресного простраства
- •Образ программы в памяти.
- •Математический сопроцессор
- •Xmm технология
- •Система команд
- •Формат команды
- •Классификация команд
- •Целочисленный процессор
- •Команды общего назначения
- •Команды ввода-вывода
- •Инструкции работы со стеком
- •Арифметико-логические инструкции
- •Цепочечные операции
- •Команды управления
- •Команды поддержки языков высокого уровня
- •Команды прерываний
- •Команды синхронизации процессора
- •Команды обработки цепочки бит
- •Команды управления защитой
- •Команды обмена с управляющими регистрами
- •Команды идентификации и управления архитектурой
- •Управление кэшированием
- •Команды управления кэшированием
- •Сопроцессор с плавающей точкой
- •Классификация команд
- •Команды управления сопроцессором
- •Команды передачи данных
- •Команды сравнения данных
- •Арифметические команды
- •Трансцендентные функции
- •Целочисленное mmx расширение
- •Синтаксис ммх-команд
- •Классификация команд
- •Инициализация
- •Передача данных
- •Упаковка данных
- •Распаковка данных
- •Арифметика
- •Сравнения
- •Дополнительные команды
- •XmMрасширение с плавающей точкой
- •Типы данных
- •Передача данных
- •Арифметика
- •Сравнения
- •Преобразования
- •Управление состоянием
- •Распаковка данных
- •Управление кэшированием
- •Дополнительные команды
- •Цикл трансляции, компоновки и выполнения
- •Ассемблер cisc
- •Введение
- •Средства программирования и отладки
- •Описание masm
- •Структура программы на ассемблере
- •Типы данных
- •Макросредства
- •Директивы
- •Архитектура risc
- •Система команд
- •Архитектура misc
- •Архитектура vliw
- •Архитектура вычислительных систем со сверхдлинными командами
- •Архитектура ia-64
- •Многоядерные архитектуры
- •Микроконтроллер avr от Atmel
- •Архитектура avr от Atmel
- •Ассемблер
- •Команды ассемблера
- •Директивы ассемблера
- •Выражения
- •Микроконтроллеры c28x
- •Архитектура c28x
- •Архитектура f28x
- •Инструментальные средства разработки по
- •Ассемблер
- •Команды ассемблера
- •Формат объектного файла
- •Директивы ассемблера
- •Макроязык и макрокоманды
- •Компоновщик
- •Архиватор
- •Абсолютный листер
- •Листер перекрестных ссылок
- •Утилита 16-ричного преобразования
- •Архитектура VelociTi
- •Структура и состав цсп с6x
- •Средства разработки цсп с6x
- •Ассемблер цсп с6x
- •Команды ассемблера
- •Выражения
- •Листинги
- •Листинги программ
- •Директивы ассемблера
- •Макроязык и макрокоманды
- •Компоновщик
- •Утилиты
- •Поддержка в matlab
- •Введение
- •Встроенные платы для цсп ‘c6x
Адресация памяти в ia_32
В семействе процессоров IA-32 выбор метода обращения к памяти определяется режимом работы процессора. Возможны 3 режима:
Реальный – в этом режиме адрес формируется аналогично i8086, т.е. при формировании адреса используются 16-ти разрядные смещения и 16-ти разрядные сегментные адреса, которые хранятся в сегментных регистрах. При их сложении по приведенной выше схеме получаются 20-ти разрядные физические адреса, поэтому в этом режиме доступен только первый мегабайт оперативной памяти. Реальный режим работы процессора используется в операционной системе MS DOS, которая устарела. В настоящее время режим практически не используется.
Защищенный– в этом режиме используется 32-х разрядная адресация, предусматривающая несколько вариантов защиты, откуда и появилось название этого режима;
Виртуальный – в этом режиме процессор моделирует псевдоодновременную работу нескольких виртуальных процессоров i8086. В настоящее время режим устарел и практически не используется.
Системного управления (System Management Mode - SMM) — это новый режим работы процессора, впервые появившийся в процессоре Pentium. Он обеспечивает операционную систему механизмом для выполнения машинно-зависимых функций, таких как перевод компьютера в режим пониженного энергопотребления или выполнения действий по защите системы. Для перехода в данный режим процессор должен получить специальный сигнал SMI от усовершенствованного программируемого контроллера прерываний (Advanced Programmable Interrupt Controller - APIC), при этом сохраняется состояние вычислительной среды процессора. Функционирование процессора в этом режиме подобно его работе в режиме реальных адресов. Возврат из этого режима производится специальной командой процессора.
Требование сохранить возможность выполнения программ, использующих 16-ти разрядную адресацию, привело к тому, что схема 32-х разрядной адресации является многокомпонентной.
В этом режиме по-прежнему используется сегментная организация памяти, но размер сегмента уже не ограничивается 64 Кб, а теоретически может достигать 4 Гб. 32-х разрядный адрес базы сегмента хранится не в виде сегментного адреса в сегментном регистре, как при 16-ти разрядной адресации, а полностью в специальных внутренних регистрах процессора – дескрипторах. Номер дескриптора заносится в 14 бит сегментного регистра, который в этом режиме называется селектором. Один бит селектора из этих 14-ти отвечает за выбор таблицы локальных или глобальных дескрипторов.
Таблица локальных дескрипторов содержит дескрипторы сегментов приложения, а таблица глобальных – дескрипторы сегментов программ операционной системы. Оставшиеся два бита селектора содержат код уровня привилегий сегмента, который проверяется при обращениях из других программ. Таким образом, реализуется защита сегментов.
14 бит селектора и 32 бита эффективного или исполнительного адреса, формируемого на основе машинной команды, объединяются в 46-ти разрядный виртуальный адрес.
Сумма 32-х разрядного базового адреса сегмента и 32-х разрядного эффективного адреса образует 32-х разрядный линейный адрес. Физический же адрес определяется по таблице страниц на основе линейного.
Соответственно различают несколько адресных пространств:
виртуальное – 64 Тб;
линейное – 4 Гб;
физическое – 4 Гб.
При создании приложений Windows в основном используется модель памяти Flat«плоская». Эта модель подразумевает, что каждому приложению отводится линейное адресное пространство объемом 2 Гб, а остальные 2 Гб предоставляются операционной системе. Базовый адрес в дескрипторах всех сегментов приложения устанавливается равным 0. В езультате все сегменты приложения «перекрываются». Программа, данные и стек размещаются в разных местах памяти за счет азличных смещений. Разделение памяти между приложениями осуществляется операционной системой, которая размещает страницы приложений с одинаковыми линейными адресами в разных местах оперативной памяти. Следовательно и защита сегментов при этой модели не работает.
Чтобы предотвратить взаимное влияние выполняющихся программ друг на друга им выделяются изолированные участки памяти (т.е. код и данные программ находятся во взаимно несмежных сегментах). В защищенном режиме работают такие ОС, как MS Windows и Linux.
В типичной программе, написанной для защищенного режима есть 3 сегмента: кода, данных и стека, информация о которых хранится в трех перечисленных ниже сегментных регистрах.
В регистре CS хранится указатель на дескриптор сегмента кода программы.
В регистре DS хранится указатель на дескриптор сегмента данных программы.
В регистре SS хранится указатель на дескриптор сегмента стека программы.