Y86 is an academic simplification of the 80x86 CPU architecture. The language and architecture are often used for teaching CPU instruction encoding and decoding.

The x86 instruction set has too many complications and distractions to be effective in focused academic study of CPU architecture, instruction decoding etc. So the essence of the 80x86 is crafted into a new architecture:

  • All operands are 16 bits
  • Only four registers: AX, BX, CX, and DX
  • 16-bit address space
  • 20 instructions: MOV (two forms), ADD, SUB, CMP, AND, OR, NOT, JE, JNE, JB, JBE, JA, JAE, JMP, BRK, IRET, HALT, GET, and PUT.
  • Opcode is encoded as a single byte, operands are encoded as a two byte displacement/offset.

More details can be found here.