Введение
32-битная версия архитектуры x86, 32-битная версия архитектуры набора команд Intel x86.
the 32 bit version of the Intel x86 instruction set architecture
IA-32 (сокращение от "Intel Architecture, 32 bit", часто называемая i386) – термин, который может использоваться как метонимия для обозначения всех версий x86, поддерживающих 32-битные вычисления. Windows Server (до Windows Server 2008; для x86-версий Windows Server 2008 R2 требуется процессор, совместимый с x86-64) и дистрибутив Debian Linux. Несмотря на название IA-32 (что может ввести в заблуждение), 64-битная эволюция x86, разработанная AMD, не называется "IA-64" – это название принадлежит архитектуре Intel Itanium.
Архитектурные особенности
Основная определяющая характеристика IA 32 – наличие 32-битных регистров процессоров общего назначения (например, EAX и EBX), 32-битных арифметических и логических операций с целыми числами, 32-битных смещений внутри сегмента в защищенном режиме и преобразование сегментированных адресов в 32-битные линейные адреса. Разработчики также использовали возможность внести и другие улучшения. Некоторые из наиболее значительных изменений (по сравнению с 16-битным набором инструкций 286):
32-битная целочисленная поддержка: Все регистры общего назначения (GPR) расширены с 16 до 32 бит, и все арифметические и логические операции, операции памяти с регистром и регистром с памятью и т. д., могут напрямую работать с 32-битными целыми числами. Операции помещения (push) и извлечения (pop) из стека по умолчанию используют шаг в 4 байта, а несегментированные указатели занимают 4 байта. Более общие режимы адресации: Любой GPR может использоваться в качестве базового регистра, а любой GPR, кроме ESP, может использоваться в качестве индексного регистра при обращении к памяти. Значение индексного регистра может быть умножено на 1, 2, 4 или 8 перед добавлением к значению базового регистра и смещению. Дополнительные сегментные регистры: Предоставлены два дополнительных сегментных регистра – FS и GS. Расширенное виртуальное адресное пространство: Архитектура IA 32 определяет 48-битный сегментированный формат адреса, состоящий из 16-битного номера сегмента и 32-битного смещения внутри сегмента. Сегментированные адреса преобразуются в 32-битные линейные адреса. Подкачка по требованию: 32-битные линейные адреса являются виртуальными, а не физическими адресами; они преобразуются в физические адреса посредством таблицы страниц. В процессорах 80386, 80486 и оригинальных процессорах Pentium физический адрес составлял 32 бита; в процессорах Pentium Pro и более поздних процессорах расширение физических адресов позволило использовать 36-битные физические адреса, хотя размер линейного адреса оставался 32 бита.