5

I see the term i386 instead of x86 in many places related to Linux. As of my knowledge, they are not interchangeable. x86 is a family of instruction set architectures where i386 is a specific one of the x86 processors. But why do Linux world uses the term i386 instead of x86 ?


References:
x86 | Wikipeadia
Intel 80386 | Wikipeadia

5
  • There's several answers which provide the details that OP wants to know, which also provide information that OP may not want to know. Dec 16, 2018 at 1:08
  • @ThomasDickey thank you for pointing it out. I have read the answer multiple times. But I don't think it answers the core question. As researched further on the internet, I could find an answer which I think is correct. Please check it out. Dec 16, 2018 at 7:29
  • I've seen kernels compiled for, and labelled as, 386, 586, 686. I tend to assume that if something is labelled as 386 then it's been compiled for that platform, without optimisations and instructions suitable for newer processors. Dec 17, 2018 at 21:42
  • @roaima That is was I also thought at first. But it is little different sometimes. For instance, see this post from CentOS blog ( got from the comment posted by @muru) "The Alternative Architecture Special Interest Group (AltArch SIG) is happy to announce the release the x86 32-bit version of CentOS Linux 7. This architecture is also known as i386 or i686" Dec 19, 2018 at 5:56

2 Answers 2

9

i386, or 80386, was the first 32-bit processor. When it was introduced, the word i386 is started to be using in many places, including in OSs and compilers, which made it impossible or very difficult to change later.

Even after the introduction of other advanced x86 processors, including the 486 and 586, many manufacturers didn't bother to change the label i386 and started to use it as an alias for 32-bit x86 processor.

1
  • 4
    In addition to the 32-bit capability, the 80386 also introduced a lot of important features that were important for multitasking OSs, so backporting any code that uses these features to 80286 or older processes would require major changes. Other important features were introduced by the original Pentium and Pentium Pro chips, also known as i586 and i686; for example, 32-bit RHEL 6.x RPM packets have their architecture ID as .i686.rpm because they've been compiled to unconditionally use features of Pentium Pro and later chips, with no fallbacks for CPUs older than that.
    – telcoM
    Dec 16, 2018 at 11:45
5

The original Intel 8086, 80186, and 80286 were 16-bit processors. However, the 80386 aka i386 was the first 32-bit processor in the x86 line.

The most logical name to refer to the 32-bit x86 architecture is x86_32, since it's the 32-bit extension of the x86 architecture, and it matches the style of the x86_64 name which is the 64-bit extension of the x86 architecture.

The name x86 is a retronym. Intel did not give a name to their instruction set initially. They later gave it the name IA-32, adding to the confusion. Before an official name was given, different groups came up with different names.

  • Microsoft decided to call x86_32 as x86, and x86_64 as x64. Microsoft's naming is why you're used to seeing x86 refer to 32-bit x86.

  • Linux distros decided to call x86_32 as i386 after the first x86 chip that was 32-bit, and then they called x86_64 as amd64 after the first x86_64 chips that came from AMD to avoid confusion with Intel's competing IA-64 (Itanium) architecture.

  • Apple decided to call x86_32 as i386 similarly to Linux distros, and then they called x86_64 as the logical name x86_64.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .