Fred Didds
Fred Didds

Reputation: 1

x86 architecture specifications

I want to write an IBM-PC compatible emualtor with C++ as an educational project, and in order to correctly emulate the 8086 processor need information on how it works.

Some examples for the information I would need:

I have already searched around for a few hours, but the information I got was more aimed at people trying to learn x86 assembly, and wasn't detailed enough

Maybe you can help me?

Upvotes: 0

Views: 1678

Answers (4)

BlackBear
BlackBear

Reputation: 22989

The art of assembly language, by Randall Hyde. It has a couple of sections on how the processor works, for example:

Chapter Three: System Organization

  • 3.0 Chapter Overview
  • 3.1 The Basic System Components
  • 3.1.1 The System Bus
  • 3.1.1.1 The Data Bus
  • 3.1.1.2 The Address Bus
  • 3.1.1.3 The Control Bus
  • 3.1.2 The Memory Subsystem
  • 3.1.3 The I/O Subsystem
  • 3.2 System Timing
  • 3.2.1 The System Clock
  • 3.2.2 Memory Access and the System Clock
  • 3.2.3 Wait States
  • 3.2.4 Cache Memory
  • 3.3 The 886, 8286, 8486, and 8686 “Hypothetical” Processors
  • 3.3.1 CPU Registers
  • 3.3.2 The Arithmetic & Logical Unit
  • 3.3.3 The Bus Interface Unit
  • 3.3.4 The Control Unit and Instruction Sets
  • 3.3.5 The x86 Instruction Set
  • 3.3.6 Addressing Modes on the x86
  • 3.3.7 Encoding x86 Instructions
  • 3.3.8 Step-by-Step Instruction Execution
  • 3.3.9 The Differences Between the x86 Processors
  • 3.3.10 The 886 Processor
  • 3.3.11 The 8286 Processor
  • 3.3.12 The 8486 Processor
  • 3.3.12.1 The 8486 Pipeline
  • 3.3.12.2 Stalls in a Pipeline
  • 3.3.12.3 Cache, the Prefetch Queue, and the 8486
  • 3.3.12.4 Hazards on the 8486
  • 3.3.13 The 8686 Processor
  • 3.4 I/O (Input/Output)
  • 3.5 Interrupts and Polled I/O

Upvotes: 0

JPD002
JPD002

Reputation: 171

sandpile.org is a nice place if you need information about the encoding format of x86 opcodes. All the info is organized in tables for easy look-up.

Upvotes: 2

John Bartholomew
John Bartholomew

Reputation: 6606

You could look at the Intel architecture manuals: http://www.intel.com/products/processor/manuals/ (note: Otavio's link is better as it goes to an older manual)

Of course, these include specifications for a lot of instructions and features that didn't exist in the 8086, but you should be able to skip over the new stuff.

You may also want to look at Bochs to check things or get some ideas.

Finally, unless you're already quite confident, I would recommend starting with a simpler (RISC) instruction set, such as one of the MIPS architectures. Instruction decoding and addressing modes are considerably less complex in a typical RISC architecture than they are in a typical CISC architecture.

Upvotes: 0

Otávio Décio
Otávio Décio

Reputation: 74290

You may want to go straight to the source:

http://download.intel.com/design/intarch/manuals/24319101.pdf

Upvotes: 5

Related Questions