loading...

Why is 32-bit called x86 and not x32?

alphaolomi profile image Alpha Olomi ・3 min read

Why is 32-bit called x86 and not x32?

32-bit is NOT called x86.

There are tens of 32-bit architectures such as MIPS, ARM, PowerPC, SPARC which are not called x86.

x86 is a term meaning any instruction set which derived from the instruction set of Intel 8086 processor. It’s successors were named 80186, 80286, 80386, 80486, and were all compatible with the original 8086, capable of executing code made for it. Later Intel also released 8086-compatible processors named Pentium , Celeron, Core and Xeon but the name x86 had already stabilized to mean all processors based on the instruction set family.

Of these, 8086, 80186 and 80286 were 16-bit processors. 80386 was a 32-bit processor, with a new 32-bit operating mode. However, it still retained the original 16-bit mode and also added a third mode, “virtual 86” mode which allowed running 16-bit programs under 32-bit operating system.

Later, 64-bit extension to x86, x86–64 was developed and implemented in AMD K8 and also later intels processors. Also these 64-bit processors based on the x86–64 architecture are called x86 processors

Why are you probably asking this, and the answer

You have probably been seeing some “x86” and ”x64″ names of some Windows packages.

Modern Windows are based on Windows NT. Windows NT has never had any support for 16-bit x86 processors, it could initially run on 32-bit x86(386,486, Pentium etc), and MIPS, PowerPC and Alpha processors. The MIPS, PowerPC and 386 were ALL 32-bit architectures, while Alpha was a 64-bit architecture.

To differentiate between windows compiled for these different instructions sets, some short and precise name had to be used for the architectures. These names are also be used on many scripts, build systems etc so they cannot be changed after they are selected without breaking huge amount of things. “x86” perfectly identified the 32-bit x86 version of windows NT. Anything that contained number 32 would not have made any sense as there were three different 32-bit architectures supported by Windows NT

Later also support for itanium(IA64) was added and support for MIPS, PowerPC and MIPS was dropped.

So, the correct question is: Why is the 64-bit x86 called x64?

Over 10 years later, when the 64-bit extension to x86 instruction set was released, and Microsoft started porting later NT-derived windows to it, some official technical name had to be selected for the version compiled for this architecture. The specification of the 64-bit extension to x86 came originally from AMD, so some called it “amd64” whereas “intel64” had meant Itanium. But Microsoft did not want to include name of one company to the name they chose for the architecture, and also the name “x86–64” which is later used had not stabilized yet as the common name for the architecture, and also the dash character on “X86–64” name might problematic for some places where the architecture name appears and had to be parsed by some code. So they chose the name “x64”, as 64-bit version of x86.

Even later, support for the Itanium architecture was dropped and support for 32- and 64-bit ARM architectures were added to Windows. The 64-bit ARMv8 is typically called either A64 or Aarch64, Im not sure which one is the official technical name for it in Windows.

So now, Windows has support for four architectures: 386 (“x86”), x86–64 (“x64), 32-bit ARMv7 , and 64-bit ARMv8.

So, “x64” currently only means one of these two 64-bit architectures currently supported by Windows.

From Quora question: https://www.quora.com/Why-is-32-bit-called-x86-and-not-x32

Posted on by:

alphaolomi profile

Alpha Olomi

@alphaolomi

A software engineer aimed at helping other using software technologies.

Discussion

markdown guide
 

You say that the 386 was the first 32-bit x86 processor, but wasn’t Protected Mode (32-bit mode) introduced in the 286?

 

No, the 286 had a Protected Mode, but it was not 32-bit. It was actually a 24-bit addressing mode which allowed access to 16MB of RAM.

Since the 286 was strictly a 16bit processor, it used segmentation even in Protected Mode. The segment register was loaded with a 16-bit index, which pointed to an entry in a descriptor table. This entry contained the actual 24bit base address.

If this sound complicated to you, you are right, it is. 286 Protected Mode was barely used. You were still restricted to 64Kb addressing within that one segment.

 

Huh. I read that Protected Mode was introduced with the 286, and just assumed that it meant that the 286 was 32-bit. Thanks for the clarification.

 

True but also 286 was 16-bit microprocessor at first

 

You mean by default? Every x86 processor is like that for compatibility purposes.