From a9ad6026c67c48c098279c68c4e29fd57a49d608 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20=C5=A0pinka?= Date: Wed, 23 Jul 2025 22:53:28 +0200 Subject: [PATCH] Fix j*cxz encodings. --- cheatsheet.md | 79 ++++++++++++++++++++++++++------------------------- 1 file changed, 40 insertions(+), 39 deletions(-) diff --git a/cheatsheet.md b/cheatsheet.md index d8475c6..3473048 100644 --- a/cheatsheet.md +++ b/cheatsheet.md @@ -642,51 +642,52 @@ todo: far jumps **Short jump encodings available in both 32-bit and 64-bit modes:** -| Opcode | Operands | Assembly | Description | Test | -| ------- | -------- | ---------------- | ----------------------------------- | ---------------- | -| `77 ??` | rel8 | `ja $+2+rel8` | Jump short if above. | CF=0 and ZF=0 | -| `73 ??` | rel8 | `jae $+2+rel8` | Jump short if above or equal. | CF=0 | -| `72 ??` | rel8 | `jb $+2+rel8` | Jump short if below (CF=1). | CF=1 | -| `76 ??` | rel8 | `jbe $+2+rel8` | Jump short if below or equal. | CF=1 or ZF=1 | -| `72 ??` | rel8 | `jc $+2+rel8` | Jump short if carry. | CF=1 | -| `E3 ??` | rel8 | `jecxz $+2+rel8` | Jump short if ECX register is 0. | ECX=0 | -| `74 ??` | rel8 | `je $+2+rel8` | Jump short if equal. | ZF=1 | -| `7F ??` | rel8 | `jg $+2+rel8` | Jump short if greater. | ZF=0 and SF=OF | -| `7D ??` | rel8 | `jge $+2+rel8` | Jump short if greater or equal. | SF=OF | -| `7C ??` | rel8 | `jl $+2+rel8` | Jump short if less. | SF≠OF | -| `7E ??` | rel8 | `jle $+2+rel8` | Jump short if less or equal. | ZF=1 or SF≠OF | -| `76 ??` | rel8 | `jna $+2+rel8` | Jump short if not above. | CF=1 or ZF=1 | -| `72 ??` | rel8 | `jnae $+2+rel8` | Jump short if not above or equal. | CF=1 | -| `73 ??` | rel8 | `jnb $+2+rel8` | Jump short if not below. | CF=0 | -| `77 ??` | rel8 | `jnbe $+2+rel8` | Jump short if not below or equal. | CF=0 and ZF=0 | -| `73 ??` | rel8 | `jnc $+2+rel8` | Jump short if not carry. | CF=0 | -| `75 ??` | rel8 | `jne $+2+rel8` | Jump short if not equal. | ZF=0 | -| `7E ??` | rel8 | `jng $+2+rel8` | Jump short if not greater. | ZF=1 or SF≠OF | -| `7C ??` | rel8 | `jnge $+2+rel8` | Jump short if not greater or equal. | SF≠OF | -| `7D ??` | rel8 | `jnl $+2+rel8` | Jump short if not less. | SF=OF | -| `7F ??` | rel8 | `jnle $+2+rel8` | Jump short if not less or equal. | ZF=0 and SF=OF | -| `71 ??` | rel8 | `jno $+2+rel8` | Jump short if not overflow. | OF=0 | -| `7B ??` | rel8 | `jnp $+2+rel8` | Jump short if not parity. | PF=0 | -| `79 ??` | rel8 | `jns $+2+rel8` | Jump short if not sign. | SF=0 | -| `75 ??` | rel8 | `jnz $+2+rel8` | Jump short if not zero. | ZF=0 | -| `70 ??` | rel8 | `jo $+2+rel8` | Jump short if overflow. | OF=1 | -| `7A ??` | rel8 | `jp $+2+rel8` | Jump short if parity. | PF=1 | -| `7A ??` | rel8 | `jpe $+2+rel8` | Jump short if parity even. | PF=1 | -| `7B ??` | rel8 | `jpo $+2+rel8` | Jump short if parity odd. | PF=0 | -| `78 ??` | rel8 | `js $+2+rel8` | Jump short if sign. | SF=1 | -| `74 ??` | rel8 | `jz $+2+rel8` | Jump short if zero. | ZF=1 | +| Opcode | Operands | Assembly | Description | Test | +| ------- | -------- | --------------- | ----------------------------------- | ---------------- | +| `77 ??` | rel8 | `ja $+2+rel8` | Jump short if above. | CF=0 and ZF=0 | +| `73 ??` | rel8 | `jae $+2+rel8` | Jump short if above or equal. | CF=0 | +| `72 ??` | rel8 | `jb $+2+rel8` | Jump short if below (CF=1). | CF=1 | +| `76 ??` | rel8 | `jbe $+2+rel8` | Jump short if below or equal. | CF=1 or ZF=1 | +| `72 ??` | rel8 | `jc $+2+rel8` | Jump short if carry. | CF=1 | +| `74 ??` | rel8 | `je $+2+rel8` | Jump short if equal. | ZF=1 | +| `7F ??` | rel8 | `jg $+2+rel8` | Jump short if greater. | ZF=0 and SF=OF | +| `7D ??` | rel8 | `jge $+2+rel8` | Jump short if greater or equal. | SF=OF | +| `7C ??` | rel8 | `jl $+2+rel8` | Jump short if less. | SF≠OF | +| `7E ??` | rel8 | `jle $+2+rel8` | Jump short if less or equal. | ZF=1 or SF≠OF | +| `76 ??` | rel8 | `jna $+2+rel8` | Jump short if not above. | CF=1 or ZF=1 | +| `72 ??` | rel8 | `jnae $+2+rel8` | Jump short if not above or equal. | CF=1 | +| `73 ??` | rel8 | `jnb $+2+rel8` | Jump short if not below. | CF=0 | +| `77 ??` | rel8 | `jnbe $+2+rel8` | Jump short if not below or equal. | CF=0 and ZF=0 | +| `73 ??` | rel8 | `jnc $+2+rel8` | Jump short if not carry. | CF=0 | +| `75 ??` | rel8 | `jne $+2+rel8` | Jump short if not equal. | ZF=0 | +| `7E ??` | rel8 | `jng $+2+rel8` | Jump short if not greater. | ZF=1 or SF≠OF | +| `7C ??` | rel8 | `jnge $+2+rel8` | Jump short if not greater or equal. | SF≠OF | +| `7D ??` | rel8 | `jnl $+2+rel8` | Jump short if not less. | SF=OF | +| `7F ??` | rel8 | `jnle $+2+rel8` | Jump short if not less or equal. | ZF=0 and SF=OF | +| `71 ??` | rel8 | `jno $+2+rel8` | Jump short if not overflow. | OF=0 | +| `7B ??` | rel8 | `jnp $+2+rel8` | Jump short if not parity. | PF=0 | +| `79 ??` | rel8 | `jns $+2+rel8` | Jump short if not sign. | SF=0 | +| `75 ??` | rel8 | `jnz $+2+rel8` | Jump short if not zero. | ZF=0 | +| `70 ??` | rel8 | `jo $+2+rel8` | Jump short if overflow. | OF=1 | +| `7A ??` | rel8 | `jp $+2+rel8` | Jump short if parity. | PF=1 | +| `7A ??` | rel8 | `jpe $+2+rel8` | Jump short if parity even. | PF=1 | +| `7B ??` | rel8 | `jpo $+2+rel8` | Jump short if parity odd. | PF=0 | +| `78 ??` | rel8 | `js $+2+rel8` | Jump short if sign. | SF=1 | +| `74 ??` | rel8 | `jz $+2+rel8` | Jump short if zero. | ZF=1 | **Short jump encodings only available in 32-bit mode:** -| Opcode | Operands | Assembly | Description | Test | -| ------- | -------- | --------------- | ------------------------------- | ---- | -| `E3 cb` | rel8 | `jcxz $+2+rel8` | Jump short if CX register is 0. | CX=0 | +| Opcode | Operands | Assembly | Description | Test | +| ---------- | -------- | ---------------- | -------------------------------- | ----- | +| `67 E3 ??` | rel8 | `jcxz $+3+rel8` | Jump short if CX register is 0. | CX=0 | +| `E3 ??` | rel8 | `jecxz $+2+rel8` | Jump short if ECX register is 0. | ECX=0 | **Short jump encodings only available in 64-bit mode:** -| Opcode | Operands | Assembly | Description | Test | -| ------- | -------- | ---------------- | -------------------------------- | ----- | -| `E3 cb` | rel8 | `jrcxz $+2+rel8` | Jump short if RCX register is 0. | RCX=0 | +| Opcode | Operands | Assembly | Description | Test | +| ---------- | -------- | ---------------- | -------------------------------- | ----- | +| `67 E3 ??` | rel8 | `jecxz $+3+rel8` | Jump short if ECX register is 0. | ECX=0 | +| `E3 ??` | rel8 | `jrcxz $+2+rel8` | Jump short if RCX register is 0. | RCX=0 | **Near relative jump encodings available in both 32-bit and 64-bit modes:**