x86 prefixes and escape opcodes flowchart

https://news.ycombinator.com/rss Hits: 2
Summary

x86 prefixes and escape opcodes flowchart Published on 2023-07-29. Last updated on 2025-04-27 start here | v ╔══════════════════════════════════════════════════╗ ╔═══════════════════════════════════════════════╀══╗ β•‘ 2-byte instructions (legacy map 1) β•‘ β•‘ 1-byte instructions (legacy map 0) β”‚0F------------->β•‘ β•‘ β•‘ └──╒ β•‘ operand type specified β”Œβ”€β”€β” β”Œβ”€β”€β” β•‘ β•Ÿβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β•’ .------->β•‘ via mandatory prefixes β”‚38β”‚ β”‚3A--------------. β•‘ 40-4F β•‘ | β•‘ - none (packed single) └─|β”˜ β””β”€β”€β”˜ β•‘ | β•Ÿβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€|──────────────────────╒ | .---->β•‘ - 66 (packed double) | β•‘ | β•‘ β”Œβ”€β”€β” β”Œβ”€β”€β”¬β”€β”€β” | β•‘ | | β•‘ - F2 (scalar single) | β•‘ | β•‘ .--62β”‚ β”‚66β”‚67β”‚ | β•‘ | | +->β•‘ - F3 (scalar double) | β•‘ | β•‘ | β””β”€β”€β”˜ └─|┴─|β”˜ | β•‘ | | | β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•|══════════════════╝ | β•‘ | | | | β”Œβ”€β”€β”¬β”€β”€β” β•‘ | | | v | β•‘ | | | | β”‚C4β”‚C5-----. β•‘ | | | ╔══════════════════════════════════════════════════╗ | β•‘ | | | | β””|─┼─── | β•‘ | | | β•‘ 3-byte instructions (legacy map 2) β•‘ | β•Ÿβ”€β”€β” | β”Œβ”€β”€β”¬β”€β”€β” | | | | β”‚D5β”‚ | β•‘ | +---->β•‘ β•‘ | β•‘F0β”‚ | β”‚F2β”‚F3β”‚ | | | | └─|β”˜ | β•‘ | | | β•‘ operand type specified β•‘ | β•šβ•β•β•§β•|═╧═|╧═|╧══════|══|════|══════|═══|═════|═════╝ | | +->β•‘ via mandatory prefixes β•‘ | | | | ^ ^ | | | ^ ^ | | ^ | | | | β•‘ - none (packed single) β•‘ | | | | | | | | | | | | | +---|----------+ | | β•‘ - 66 (packed double) β•‘ | v '--+--+ +--+--' v | | v v | v m bit | | | β•‘ - F2 (scalar single) β•‘ | ┏━━━━┓ | ┏━━━|┓┏|━━━┓┏━━|━┓┏━━━━┓ | | | β•‘ - F3 (scalar double) β•‘ | ┃EVEX┃ | ┃REX1┃┃VEX3┃┃REX2┃┃VEX2┃------' | | β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β• | ┗━━|━┛ | ┗━━━━┛┗━━|━┛┗━━━━┛┗━━━━┛ | | | | ^ | | | ╔══════════════════════════════════════════════════╗ | | | +-------->--------------+---->β•‘ 3-byte instructions (legacy map 3) β•‘<-+ | | m bits | β•‘ β•‘ '---------+---->-----------------------------------------+->β•‘ operand type specified β•‘ | β•‘ via mandatory prefixes β•‘ | β•‘ - none (packed single) β•‘ | β•‘ - 66 (packed double) β•‘ | β•‘ - F2 (scalar single) β•‘ | β•‘ - F3 (scalar double) β•‘ | β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•...

First seen: 2026-01-20 05:33

Last seen: 2026-01-20 06:33