Понятие программной модели IA-32.
Программная модель – набор ресурсов микропроцессора, необходимых для выполнения и хранения в памяти вычислительной системы команд программы, данных и информации о текущем состоянии программы и микропроцессора
Программную модель микропроцессора Intel составляют:
1 - пространство адресуемой памяти;
2 - набор регистров для хранения данных общего назначения;
3 - набор сегментных регистров;
4 - набор регистров состояния и управления;
5 - набор регистров устройства вычислений с плавающей точкой (сопроцессора);
6 - набор регистров целочисленного MMX-расширения, отображенных на регистры сопроцессора;
7 - набор регистров SSE-расширения с плавающей точкой;
8 - программный стек. Это специальная информационная структура, работа с которой предусмотрена на уровне машинных команд.
Регистры общего назначения используются в программах для хранения:
1 - операндов логических и арифметических операций;
2 - компонентов адреса;
3 - указателей на ячейки памяти.
Все регистры этой группы позволяют обращаться к своим «младшим» частям.
Использовать для самостоятельной адресации можно только младшие 16- и 8-битные части этих регистров. Старшие 16 битов этих регистров как самостоятельные объекты недоступны.
Сегментные регистры предназначены для обеспечения доступа к оперативной памяти.
Регистры состояния и управления.
Регистры состояния и управления – регистры, которые постоянно содержат информацию о состоянии микропроцессора или программы, команды которой в данный момент загружены на конвейер.
К этим регистрам относятся:
- регистр флагов EFLAGS/FLAGS (рисунок Ошибка! Источник ссылки не найден.);
- регистр указателя команды EIP/IP.
Используя эти регистры, можно получать информацию о результатах выполнения команд и влиять на состояние самого микропроцессора.
Регистр EIP/IP называется указателем команд (Instruction Pointer register). Регистр EIP/IP имеет разрядность 32/16 бит и содержит смещение или адрес следующей подлежащей выполнению команды. Этот регистр непосредственно недоступен программисту, но загрузка и изменение его значения производятся различными командами управления, к которым относятся команды условных и безусловных переходов, вызова процедур и возврата из процедур. Возникновение прерываний также приводит к модификации регистра EIP/IP.
Регистр EFLAGS/FLAGS называется регистром флагов (flag register). Он предназначен для сигнализации процессору о его состоянии или о том, как выполнилась та или иная арифметическая или логическая команда. Разрядность регистра EFLAGS/FLAGS – 32/16 бит.
Отдельные биты данного регистра имеют определенное функциональное назначение и называются флагами.
Флаг – это бит, принимающий значение 1, если он установлен, и 0, если он сброшен.
За битами регистра флагов закреплены соответствующие имена. Исходя из особенностей использования, флаги регистра EFLAGS/FLAGS можно разделить на следующие три группы:
- 8 флагов состояния. Эти флаги могут изменяться после выполнения машинных команд. Флаги состояния регистра EFLAGS отражают особенности результата исполнения арифметических или логических операций. Это дает возможность анализировать состояние вычислительного процесса и реагировать на него с помощью команд условных переходов и вызовов подпрограмм;
- 1 флаг управления. Обозначается как df (Directory Flag). Он находится в десятом бите регистра EFLAGS и используется цепочечными командами.
- 5 системных флагов, управляющих вводом/выводом, маскируемыми прерываниями, отладкой, переключением между задачами и виртуальным режимом 8086.
Прикладным программам не рекомендуется модифицировать без необходимости эти флаги, так как в большинстве случаев это приведет к прерыванию работы программы.