Reverse-engineering the ModR/M addressing microcode in the Intel 8086 processor

One interesting aspect of a computer’s instruction set is its addressing modes, how the computer determines the address for a memory access. The Intel 8086 (1978) used the ModR/M byte, a special byte following the opcode, to select the addressing mode. The ModR/M byte has persisted into the modern x86 architecture, so it’s interesting to look at its roots and original implementation.

In this post, I look at the hardware and microcode in the 8086 that implements ModR/M and how the 8086 designers fit multiple addressing modes into the 8086’s limited microcode ROM. One technique was a hybrid approach that combined generic microcode with hardware logic that filled in the details for a particular instruction. A second technique was modular microcode, with subroutines for various parts of the task.

This is way above my pay grade, but I know quite a few of you love this kind of writing. Very in-depth.

21 Comments

  1. 2023-02-28 7:58 am
  2. 2023-02-28 10:55 am
    • 2023-02-28 1:03 pm
      • 2023-02-28 2:57 pm
        • 2023-02-28 5:04 pm
          • 2023-02-28 6:55 pm
          • 2023-02-28 8:34 pm
        • 2023-02-28 8:11 pm
          • 2023-02-28 8:49 pm
          • 2023-02-28 10:22 pm
          • 2023-03-01 9:33 am
          • 2023-03-01 10:44 am
          • 2023-03-01 11:35 am
          • 2023-03-01 1:03 pm
    • 2023-02-28 5:12 pm
      • 2023-02-28 5:39 pm
      • 2023-02-28 7:00 pm
        • 2023-02-28 9:21 pm
      • 2023-02-28 8:15 pm
      • 2023-03-02 7:02 am
        • 2023-03-02 8:29 am