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
- CPU architecture
- 16/32/64-bit assembly programming and instructions
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.:
- 486: on-chip cache and FPU
- Pentium: Local APIC
- SIMD instructions (MMX, SSE)
- 64-bit mode, multi-core, etc..
Some reference sources:
One cannot understand IA-32 without the 8086 CPU. Yes, we have to read manuals from the 1970s..
- MCS-80 USER'S MANUAL SEPTEMBER 1975 (REFERENCED ONLY)
- MCS-80 USER'S MANUAL (WITH INTRODUCTION TO MCS-85) OCTOBER 1977
- MCS-80/85 FAMILY USER'S MANUAL OCTOBER 1979
- iAPX 86, 88 USER'S MANUAL AUGUST 1981
- iAPX 286 PROGRAMMER'S REFERENCE MANUAL 1983
- iAPX 86/88, 186/188 User's Manual Hardware Reference 1985
- INTEL 80386 PROGRAMMER'S REFERENCE MANUAL 1986
- Introduction to the 80386 including the 80386 Data Sheet April 1986
- 80286 AND 80287 PROGRAMMER'S REFERENCE MANUAL 1987
