HALICERY

free-time coding, hardware dev, articles

Top
Home 8042 Blogs About
Home IntelEssential

Last modified: Fri Jun 19 19:36:35 UTC+0200 2026 © A. Tarpai


What is Intel Essential?

Intel Essential is about understanding and programming Intel processors.

What is essential because it's nearly impossible to know everything about today's CPUs. The official docs are thousands of pages..

Evolutionary understanding

My motivation was to use PC-s with Intel processors for bare-metal programming projects, so keep this in mind.

Starting with the basic architecture and to see what the CPU can do. Some CPU features are therefore useful, like Automatic Stack Switch, some not (virtual memory management, caching). Protection features are analyzed mainly how not to run into exceptions and able to execute unprotected code, access anything and everything on the platform. 16-bit code is very compact and can be handy: it's fully possible to run 16/32-bit code side-by-side. Even in 64-bit mode. So how are all these really working.. and so on.

Intel has a long history which started in the early 70s. The basic CPU architecture kept the same – and that's the essential. Registers, instruction set, interrupts, everything is always extended but kept compatible with previous generations. To run the large code base, both system software and application code already existing and written for previous processors. The main philosophy of Intel's x86-line development.

Today's Intel processors are based on the 16-bit 8086 from 1978. It's much easier to understand

if we look at it an evolutionary way: how it was first implemented in the 8086.. then on the 32-bit architecture 386 (IA-32) and other previous processors; and how it was extended.

+-------- 32-bit ----------+
|                      386 |
+----- 16-bit ------+      |
|               286 |      |
+-- 16-bit --+      |      |
|            |      |      |
|    8086    |      |      |
+------------+------+------+

Longer topics are the 8086, real mode, p-mode, 64-bit mode.
Instructions: understand 16/32-bit cpu operation and interpretation of code bytes in a reverse engineering way.

CPU milestones

To confidently program Intel, there are 3 cpu-s we have to know everything:

8086

The 8086 (1978) and 8088 (1979)

It all started here, when Intel decided to put some Segment Registers on-chip into a normal 16-bit cpu along with 4 additional address lines to extend the address space to 1MB. Programming these two are identical, they differ only in external data bus width (and pre-fetch queue size): the 8088 is dumbed 8-bit but that was the one used in the IBM PC in 1981.
286

The 80286 (1982)

Programmatically the same 16-bit CPU but added the Protected-mode extension (which is huge) – along with 24 address lines and address space extension to 16MB. Much higher pin count. Demultiplexed buses. This is the CPU of the IBM PC/AT in 1984.
386

The 80386 (1985)

Intel's first ever 32-bit CPU. 32-bit data bus and 32 address pins for 4GB address space. Everything is extended to 32-bit, registers, P-mode structures, etc. New 32-bit addressing modes. Several new instructions. Can do paging. But in a very peculiar way it's also a 16-bit CPU in the same time. That's the headache to understand..

After 386 there was not much architectural change, when it comes to programming – only additions, eg.:

Some reference sources:

One cannot understand IA-32 without the 8086 CPU. Yes, we have to read manuals from the 1970s..