vault backup: 2024-01-05 21:26:13

This commit is contained in:
sweetbread
2024-01-05 21:26:13 +03:00
parent 9156c5eb18
commit 58f7052890
18 changed files with 304 additions and 197 deletions
@@ -1,21 +1,20 @@
|Opcode|Instruction|Op/En|64-Bit Mode|Compat/Leg Mode|Description|
|---|---|---|---|---|---|
|90+rw|XCHG AX, r16|O|Valid|Valid|Exchange r16 with AX.|
|90+rw|XCHG r16, AX|O|Valid|Valid|Exchange AX with r16.|
|90+rd|XCHG EAX, r32|O|Valid|Valid|Exchange r32 with EAX.|
|REX.W + 90+rd|XCHG RAX, r64|O|Valid|N.E.|Exchange r64 with RAX.|
|90+rd|XCHG r32, EAX|O|Valid|Valid|Exchange EAX with r32.|
|REX.W + 90+rd|XCHG r64, RAX|O|Valid|N.E.|Exchange RAX with r64.|
|86 /r|XCHG r/m8, r8|MR|Valid|Valid|Exchange r8 (byte register) with byte from r/m8.|
|REX + 86 /r|XCHG r/m8\*, r8\*|MR|Valid|N.E.|Exchange r8 (byte register) with byte from r/m8.|
|86 /r|XCHG r8, r/m8|RM|Valid|Valid|Exchange byte from r/m8 with r8 (byte register).|
|REX + 86 /r|XCHG r8\*, r/m8\*|RM|Valid|N.E.|Exchange byte from r/m8 with r8 (byte register).|
|87 /r|XCHG r/m16, r16|MR|Valid|Valid|Exchange r16 with word from r/m16.|
|87 /r|XCHG r16, r/m16|RM|Valid|Valid|Exchange word from r/m16 with r16.|
|87 /r|XCHG r/m32, r32|MR|Valid|Valid|Exchange r32 with doubleword from r/m32.|
|REX.W + 87 /r|XCHG r/m64, r64|MR|Valid|N.E.|Exchange r64 with quadword from r/m64.|
|87 /r|XCHG r32, r/m32|RM|Valid|Valid|Exchange doubleword from r/m32 with r32.|
|REX.W + 87 /r|XCHG r64, r/m64|RM|Valid|N.E.|Exchange quadword from r/m64 with r64.|
```
* In 64-bit mode, r/m8 cannot been coded to access the following byte registers if a REX prefix is used: AH, BH, CH, DH.
```
| Opcode | Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description |
| ------------- | ----------------- | ----- | ----------- | --------------- | ------------------------------------------------ |
| 90+rw | XCHG AX, r16 | O | Valid | Valid | Exchange r16 with AX. |
| 90+rw | XCHG r16, AX | O | Valid | Valid | Exchange AX with r16. |
| 90+rd | XCHG EAX, r32 | O | Valid | Valid | Exchange r32 with EAX. |
| REX.W + 90+rd | XCHG RAX, r64 | O | Valid | N.E. | Exchange r64 with RAX. |
| 90+rd | XCHG r32, EAX | O | Valid | Valid | Exchange EAX with r32. |
| REX.W + 90+rd | XCHG r64, RAX | O | Valid | N.E. | Exchange RAX with r64. |
| 86 /r | XCHG r/m8, r8 | MR | Valid | Valid | Exchange r8 (byte register) with byte from r/m8. |
| REX + 86 /r | XCHG r/m8\*, r8\* | MR | Valid | N.E. | Exchange r8 (byte register) with byte from r/m8. |
| 86 /r | XCHG r8, r/m8 | RM | Valid | Valid | Exchange byte from r/m8 with r8 (byte register). |
| REX + 86 /r | XCHG r8\*, r/m8\* | RM | Valid | N.E. | Exchange byte from r/m8 with r8 (byte register). |
| 87 /r | XCHG r/m16, r16 | MR | Valid | Valid | Exchange r16 with word from r/m16. |
| 87 /r | XCHG r16, r/m16 | RM | Valid | Valid | Exchange word from r/m16 with r16. |
| 87 /r | XCHG r/m32, r32 | MR | Valid | Valid | Exchange r32 with doubleword from r/m32. |
| REX.W + 87 /r | XCHG r/m64, r64 | MR | Valid | N.E. | Exchange r64 with quadword from r/m64. |
| 87 /r | XCHG r32, r/m32 | RM | Valid | Valid | Exchange doubleword from r/m32 with r32. |
| REX.W + 87 /r | XCHG r64, r/m64 | RM | Valid | N.E. | Exchange quadword from r/m64 with r64. |
> * In 64-bit mode, r/m8 cannot been coded to access the following byte registers if a REX prefix is used: AH, BH, CH, DH.