IA-32 (скорочення від «Intel Architecture, 32-bit», інколи також відомий як i386[1][2][3]32-бітний варіант набору процесорних інструкцій x86, спроектований компанією Intel і вперше реалізований у вигляді мікропроцесора Intel 80386 1985 року. IA-32 є першою «інкарнацією» x86, що підтримує «чисте» 32-розрядне програмування[4]; як результат, термін «IA-32» може застосовуватися до всіх версій x86, що підтримують 32-розрядні обчислення[5][6].

У опціях багатьох компіляторів мов програмування IA-32 досі інколи позначається як «архітектура i386». У деяких інших контекстах для IA-32 використовуються синоніми i486, i586 або i686 щодо надмножин, реалізованих у відповідних мікроархітектурах (486, P5, P6), що мають доповнення до базової 32-розрядної архітектури IA-32 (такі, як підтримка рухомої коми або MMX).

Історично фірма Intel була найбільшим виробником процесорів IA-32; другим за обсягом виробництва була AMD. У 1990-х роках такі процесори виробляли також VIA Technologies, Transmeta, Centaur та деякі інші фірми. У 21-му столітті Intel деякий час продовжувала виробництво процесорів IA-32 у рамках мікроконтролерної платформи Intel Quark. Втім, у 2010-х роках більшість виробників (включно з Intel) перейшли до виробництва майже винятково процесорів 64-розрядної архітектури x86-64.

Станом на 2018 рік версії операційних систем для IA-32 все ще існують (наприклад, Microsoft Windows[7] або Ubuntu Linux[8]).

Архітектурні особливості

ред.

Основною визначною характеристикою архітектури IA-32 є наявність 32-розрядних регістрів загального призначення (таких, як EAX або EBX), 32-розрядні арифметичні та логічні операції 32-розрядні зміщення у сегменті (у захищеному або «нереальному» режимі роботи процесора), а також трансляція сегментованих адрес у 32-розрядні лінійні адреси.

Проектувальники i386, користуючись нагодою, імплементували також і інші корисні нововведення, зокрема:

  • Узагальнені режими адресування: будь-який регістр загального призначення може використовуватися як базовий, і будь-який крім ESP може бути індексним регістром при зверненні до пам'яті. Значення індексного регістру можна помножити на 1, 2, 4 або 8 перед додаванням до базового регістра (і, опційно, зміщення (англ. displacement)).
  • Додаткові сегментні регістри (FS і GS).
  • Збільшений адресний простір для віртуальних адрес (48 біт, що отримуються складанням 16-розрядного номера сегмента з 32-розрядним зміщенням). Після обчислення сегментної адреси вона відображується на 32-розрядну лінійну.
  • Механізм підкачування сторінок з 32-розрядними або 36-розрядними (у пізніших процесорах) фізичними адресами пам'яті.

Режими роботи

ред.
Режим роботи Операційна система Тип коду, що може запускатися Розмір адреси (за замовчуванням) Розмір операндів (за замовчуванням) Типова ширина регістрів процесора загального призначення
Захищений 32-розрядна ОС або завантажник 32-розрядний код 32 біт 32 біт 32 біт
16-розрядна ОС захищеного режиму або завантажник, або 32-розрядний завантажник 16-розрядний код захищеного режиму 16 біт 16 біт 16 або 32 біт
Virtual 8086 mode[en] 16- або 32-розрядна ОС захищеного режиму 16-розрядний код реального режиму 16 біт 16 біт 16 або 32 біт
Реальний 16-розрядна ОС реального режиму або завантажник, або 32-розрядний завантажник 16-розрядний код реального режиму 16 біт 16 біт 16 або 32 біт

Див. також

ред.

Джерела

ред.
  1. DITTO. BSD General Commands Manual. Apple. 19 грудня 2008. Архів оригіналу за 2 червня 2012. Процитовано 3 серпня 2013. Thin Universal binaries to the specified architecture [...] should be specified as "i386", "x86_64", etc.
  2. Additional Predefined Macros. intel.com (англ.). Intel. Процитовано 31 серпня 2013.
  3. Kemp, Steve. Running 32-bit Applications on 64-bit Debian GNU/Linux. Debian Administration. Архів оригіналу за 16 вересня 2013. Процитовано 19 січня 2020.
  4. Intel 64 and IA-32 Architectures Software Developer's Manual (англ.). Intel Corporation. September 2014. с. 31. Архів оригіналу за 26 січня 2012. Процитовано 19 січня 2020. The Intel386 processor was the first 32-bit processor in the IA-32 architecture family. It introduced 32-bit registers for use both to hold operands and for addressing.
  5. Green, Ronald W. (5 травня 2009). What do IA-32, Intel 64 and IA-64 Architecture mean?. software.intel.com. Intel. Архів оригіналу за 19 грудня 2014. Процитовано 19 грудня 2014.
  6. Supported Hardware. Ubuntu Help. Canonical. Архів оригіналу за 5 лютого 2020. Процитовано 31 серпня 2013.
  7. Windows 10 System Requirements & Specifications. www.microsoft.com (англ.). Архів оригіналу за 1 травня 2018. Процитовано 20 серпня 2018.
  8. Alternative downloads. www.ubuntu.com (англ.). Canonical. Архів оригіналу за 20 серпня 2018. Процитовано 20 серпня 2018.