diff --git a/_interfaces/x86-prefixes-and-escape-opcodes-flowchart.md b/_interfaces/x86-prefixes-and-escape-opcodes-flowchart.md index 27df7a34..0691a364 100644 --- a/_interfaces/x86-prefixes-and-escape-opcodes-flowchart.md +++ b/_interfaces/x86-prefixes-and-escape-opcodes-flowchart.md @@ -13,23 +13,23 @@ markdeep: true ║ 1-byte instructions (legacy map 0) │0F------------->║ 2-byte instructions (legacy map 1) ║ ║ └──╢ ║ ║ ╟──────────────────────────────────────────────────╢ .------>║ operand type specified ┌──┐ ┌──┐ ║ -║ 40-4F ║ | ║ via mandatory prefixes │38│ │3A--------------. -╟────────────────────────────|─────────────────────╢ | .--->║ - none (packed single) └─|┘ └──┘ ║ | -║ ┌──┐ ┌──┬──┐ | ║ | | ║ - 66 (packed double) | ║ | -║ .--62│ │66│67│ | ║ | | ║ - F2 (scalar single) | ║ | -║ | └──┘ └─|┴─|┘ | ║ | | ║ - F3 (scalar double) | ║ | -║ | | | | ┌──┬──┐ ║ | | ╚═══════════════════════════════|══════════════════╝ | -║ | | | | │C4│C5-----. ║ | | v | -║ | | | | └|─┼──┤ | ║ | | ╔══════════════════════════════════════════════════╗ | -╟──┐ | ┌──┬──┐ | | | | │D5│ | ║ | +--->║ 3-byte instructions (legacy map 2) ║ | -║F0│ | │F2│F3│ | | | | └─|┘ | ║ | | ║ ║ | -╚══╧═|═╧═|╧═|╧══════|══|═════|═════|═══|═════|═════╝ | | ║ operand type specified ║ | - | | | ^ | | |^ | |^ | | | ║ via mandatory prefixes ║ | - | | | | | | || | || | | | ║ - none (packed single) ║ | - v '--+---+---+--' v| v v| v | | ║ - 66 (packed double) ║ | - ┏━━━━┓ | ┏━━━|┓┏━━━━┓┏━|━━┓┏━━━━┓ | | ║ - F2 (scalar single) ║ | - ┃EVEX┃ | ┃REX1┃┃VEX3┃┃REX2┃┃VEX2┃-------' | ║ - F3 (scalar double) ║ | - ┗━━|━┛ | ┗━━━━┛┗━━|━┛┗━━━━┛┗━━━━┛ m bits | ╚══════════════════════════════════════════════════╝ | +║ 40-4F ║ | ║ via mandatory prefixes │38│ │3A--------------. +╟───────────────────────────|──────────────────────╢ | .--->║ - none (packed single) └─|┘ └──┘ ║ | +║ ┌──┐ ┌──┬──┐ | ║ | | ║ - 66 (packed double) | ║ | +║ .--62│ │66│67│ | ║ | | ║ - F2 (scalar single) | ║ | +║ | └──┘ └─|┴─|┘ | ║ | | ║ - F3 (scalar double) | ║ | +║ | | | | ┌──┬──┐ ║ | | ╚═══════════════════════════════|══════════════════╝ | +║ | | | | │C4│C5-----. ║ | | v | +║ | | | | └|─┼──┤ | ║ | | ╔══════════════════════════════════════════════════╗ | +╟──┐ | ┌──┬──┐ | | | | │D5│ | ║ | +--->║ 3-byte instructions (legacy map 2) ║ | +║F0│ | │F2│F3│ | | | | └─|┘ | ║ | | ║ ║ | +╚══╧═|═╧═|╧═|╧══════|══|════|══════|═══|═════|═════╝ | | ║ operand type specified ║ | + | | | ^ | | | ^ | | ^ | | | ║ via mandatory prefixes ║ | + | | | | | | | | | | +---|-----------' | ║ - none (packed single) ║ | + v '--+---+---+--' v | v v | v m bit | ║ - 66 (packed double) ║ | + ┏━━━━┓ | ┏━━━|┓┏━━━━┓┏━━|━┓┏━━━━┓ | ║ - F2 (scalar single) ║ | + ┃EVEX┃ | ┃REX1┃┃VEX3┃┃REX2┃┃VEX2┃ | ║ - F3 (scalar double) ║ | + ┗━━|━┛ | ┗━━━━┛┗━━|━┛┗━━━━┛┗━━━━┛ | ╚══════════════════════════════════════════════════╝ | | | | | | '----------+------------------+------------------------+ ╔══════════════════════════════════════════════════╗ | m bits '--->║ 3-byte instructions (legacy map 3) ║<-+