IA-32 (Inggris: “Intel Architecture, 32 bit”, biasa dipanggil i386[1][2]) adalah versi 32-bit dari set instruksi aristekturx86, didesain oleh Intel dan pertama kali diimplementasikan dalam mikroprosesor80386 pada 1985. IA-32 merupakan perwujudan pertama pada versi x86 yang memiliki kemampuan komputasi 32-bit;[3] alhasil, istilah “IA-32” masih digunakan sebagai metonimia untuk merujuk pada versi x86 yang memiliki komputasi 32-bit.[4]
Dalam beberapa arahan bahasa pemrograman, Istilah IA-32 terkadang masih dipanggil sebagai arsitektur “i386”. Dalam beberapa konteks lain, beberapa iterasi oleh IA-32 ISA terkadang diberi nama i486, i586, dan i686, merujuk pada himpunan bagian yang ditawarkan oleh 80486, masing-masing mikro-arsitektur P5, dan P6. Perubahan ini menawarkan banyak penambahan basis set IA-32 diantaranya yaitu kemampuan titik-kambang, dan ekstensi MMX.
Intel merupakan produsen mikroprosesor IA-32 terbesar dalam sejarah,[5] dengan peringkat kedua diraih oleh AMD. Selama tahun 1990-an, VIA, Transmeta, dan beberapa produsen chip juga memproduksi prosesor yang kompatibel dengan IA-32 (Contoh: WinChip). Di era modern, Intel masih memproduksi prosesor IA-32 dalam nama platform mikrokontrolerIntel Quark hingga tahun 2019; tetapi, sejak tahun 2000-an, mayoritas produsen (termasuk Intel) hampir berpindah secara ekslusif mengimplementasikan beberapa CPU berbasis varian 64-bit dari x86, x86-64. x86-64 secara spesifikasi, menawarkan mode operasi lawas yang beroperasi dalam IA-32 ISA untuk kompatibilitas kebelakang.
Walaupun dengan mempertimbangkan betapa umumnya x86-64, sampai sekarang, versi mode terproteksi IA-32 dalam kebanyakan sistem operasi masih dipelihara, contoh: Microsoft Windows (hingga Windows 10),[6]Windows Server (hingga Windows Server 2008[7]), dan distribusi Debian Linux.[8] Meskipun dengan nama IA-32 (dan kemungkinan membuat kebingungan), evolusi 64-bit dari x86 yang berasal dari AMD tidak akan dikenal sebagai “IA-64”, nama tersebut sebagai gantinya diambil oleh arsitektur Itanium Intel yang saat ini sudah dibatalkan.
Fitur aristektural
Tujuannya mendefinisikan karakteristik dari IA-32 adalah untuk menyediakan pengunaan umum register prosesor 32-bit (contohnya, EAX dan EBX), integer aritmatika dan operasi logika 32-bit, beberapa offset 32-bit dalam cakupan segmen dalam mode terproteksi, dan translasi dari alamat yang ter-segmen menjadi alamat linear 32-bit. Para desainer mengambil kesempatan untuk mengembangkannya juga. Beberapa perubahan yang signifikan (relatif ke set instruksi 16-bit 286) adalah:
Integer 32-bit
Semua GPR (general-purpose register) telah diperluas dari 16 bita menjadi 32 bita, dan semua aritmatika dan operasi logika, operasi memori-ke-register dan register-ke-memori, dst, dapat beroperasi dalam integer 32-bit. Push dan pop dalam tumpukan (struktur data) default ke langkah 4-bita, dan penunjuk non-tersegmen adalah selebar 4 bita.
Mode pengalamatan umum lebih lanjut
Semua GPR dapat digunakan sebagai basis register, dan semua GPR melainkan ESP dapat digunakan sebagai indeks register, dalam referensi memori. Nilai indeks register dapat di-kalikan dengan 1, 2, 4, atau 8 sebelum ditambahkan ke dalam nilai basis register dan pergeserannya.
Segmen register tambahan
Dua tambahan segmen register, diataranya: FS, dan GS.
Ruang alamat virtual yang lebih besar
Arsitektur IA-32 mendefinisikan format alamat tersegmen 48-bit, dengan nomor segmen 16-bit, dan offset 32-bit dalam jangkauan segmen. Alamat yang tersegmen akan dipetakan menjadi alamat linear 32-bit.
Permintaan pemanggilan
Alamat linear 32-bit merupakan alamat virtual dibandingkan alamat fisik; alamat tersebut ditranslasikan ke alamat fisik melalui tabel halaman. Dalam 80386, 80486, dan prosesor Pentium yang original, alamat fisiknya adalah 32-bit; dalam Pentium Pro, dan prosesor lanjutnya, Ekstensi Alamat Fisik memperbolehkan alamat fisik 36-bit, walaupun ukuran alamat linearnya masih 32-bit.