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

10
.obsidian/app.json vendored
View File

@ -22,6 +22,12 @@
"editor:toggle-keyboard", "editor:toggle-keyboard",
"editor:configure-toolbar", "editor:configure-toolbar",
"editor:fold-less", "editor:fold-less",
"editor:fold-more" "editor:fold-more",
] "table-editor-obsidian:format-table"
],
"newLinkFormat": "relative",
"useMarkdownLinks": true,
"livePreview": false,
"defaultViewMode": "preview",
"showLineNumber": true
} }

16
.obsidian/graph.json vendored
View File

@ -7,16 +7,16 @@
"showOrphans": true, "showOrphans": true,
"collapse-color-groups": true, "collapse-color-groups": true,
"colorGroups": [], "colorGroups": [],
"collapse-display": false, "collapse-display": true,
"showArrow": true, "showArrow": true,
"textFadeMultiplier": 0, "textFadeMultiplier": 0,
"nodeSizeMultiplier": 1.52787610619469, "nodeSizeMultiplier": 1.52787610619469,
"lineSizeMultiplier": 5, "lineSizeMultiplier": 5,
"collapse-forces": false, "collapse-forces": true,
"centerStrength": 0.0714285714285714, "centerStrength": 0,
"repelStrength": 0.771175726927939, "repelStrength": 9.92414664981037,
"linkStrength": 1, "linkStrength": 0.486093552465234,
"linkDistance": 250, "linkDistance": 383,
"scale": 1.5884613927474214, "scale": 0.7401932494444989,
"close": true "close": false
} }

View File

@ -1,7 +1,7 @@
{ {
"commitMessage": "vault backup: {{date}}", "commitMessage": "vault backup: {{date}}",
"commitDateFormat": "YYYY-MM-DD HH:mm:ss", "commitDateFormat": "YYYY-MM-DD HH:mm:ss",
"autoSaveInterval": 0, "autoSaveInterval": 10,
"autoPushInterval": 0, "autoPushInterval": 0,
"autoPullInterval": 0, "autoPullInterval": 0,
"autoPullOnBoot": true, "autoPullOnBoot": true,

View File

@ -4,18 +4,18 @@
"type": "split", "type": "split",
"children": [ "children": [
{ {
"id": "68d7c37b4d7272bb", "id": "38ced402f0e058bc",
"type": "tabs", "type": "tabs",
"children": [ "children": [
{ {
"id": "de27de3851d40181", "id": "d3c4775ae208c831",
"type": "leaf", "type": "leaf",
"state": { "state": {
"type": "markdown", "type": "markdown",
"state": { "state": {
"file": "X86/Общего назначения.md", "file": "Оглавление.md",
"mode": "source", "mode": "preview",
"source": false "source": true
} }
} }
} }
@ -85,7 +85,7 @@
"state": { "state": {
"type": "backlink", "type": "backlink",
"state": { "state": {
"file": "X86/Общего назначения.md", "file": "Оглавление.md",
"collapseAll": false, "collapseAll": false,
"extraContext": false, "extraContext": false,
"sortOrder": "alphabetical", "sortOrder": "alphabetical",
@ -102,7 +102,7 @@
"state": { "state": {
"type": "outgoing-link", "type": "outgoing-link",
"state": { "state": {
"file": "X86/Общего назначения.md", "file": "Оглавление.md",
"linksCollapsed": true, "linksCollapsed": true,
"unlinkedCollapsed": false "unlinkedCollapsed": false
} }
@ -114,7 +114,7 @@
"state": { "state": {
"type": "outline", "type": "outline",
"state": { "state": {
"file": "X86/Общего назначения.md" "file": "Оглавление.md"
} }
} }
}, },
@ -126,7 +126,8 @@
"state": {} "state": {}
} }
} }
] ],
"currentTab": 3
}, },
"left-ribbon": { "left-ribbon": {
"hiddenItems": { "hiddenItems": {
@ -140,17 +141,30 @@
"homepage:Open homepage": false "homepage:Open homepage": false
} }
}, },
"active": "de27de3851d40181", "active": "d3c4775ae208c831",
"lastOpenFiles": [ "lastOpenFiles": [
"X86/Общего назначения/Условия.md",
"X86/Общего назначения/Передачи данных/CMOVxx.md",
"X86/Общего назначения.md", "X86/Общего назначения.md",
"X86.md", "X86/Общего назначения/Передачи данных/IN.md",
"X86/Общего назначения/Передачи данных/POPA(D).md",
"X86/Общего назначения/Передачи данных/PUSHA(D).md",
"Общего назначения/Передачи данных/PUSHA(D).md",
"Общего назначения",
"Общего назначения/Передачи данных",
"X86/Общего назначения/Untitled.md",
"X86/Общего назначения/Передачи данных/CMPXCHG8(16)B.md",
"X86/Общего назначения/Передачи данных/POP.md",
"X86/Общего назначения/Передачи данных/PUSH.md",
"Оглавление.md", "Оглавление.md",
"Команды.md", "X86/Общего назначения/Передачи данных/CMPXCHG.md",
"FASM.md",
"X86/Общего назначения/Передачи данных/XCHG.md", "X86/Общего назначения/Передачи данных/XCHG.md",
"X86/Общего назначения/Передачи данных/CMOVxx.md",
"X86/Общего назначения/Передачи данных/MOV.md", "X86/Общего назначения/Передачи данных/MOV.md",
"X86/Общего назначения/Передачи данных/XADD.md",
"X86.md",
"FASM.md",
"X86/Общего назначения/Передачи данных/BSWAP.md",
"X86/Общего назначения/Условия.md",
"Команды.md",
"Команды 1.md", "Команды 1.md",
"Команды%2FОбщего назначения%2FПередачи данных%2FXCHG.md", "Команды%2FОбщего назначения%2FПередачи данных%2FXCHG.md",
"Untitled", "Untitled",

View File

View File

@ -1,17 +1,17 @@
## Команды передачи данных ## Команды передачи данных
| Команды | Описание | | Команды | Описание |
|-------------:|:----------------------------------------------------- | | -------------------------------------------------------------------------------:|:----------------------------------------------------- |
| [MOV](MOV.md) | Присваивание | | [MOV](Общего%20назначения/Передачи%20данных/MOV.md) | Присваивание |
| [CMOVxx](CMOVxx.md) | Условное присваивание | | [CMOVxx](Общего%20назначения/Передачи%20данных/CMOVxx.md) | Условное присваивание |
| [XCHG](XCHG.md) | Обмен значений | | [XCHG](Общего%20назначения/Передачи%20данных/XCHG.md) | Обмен значений |
| BSWAP | Перестановка байтов | | [BSWAP](Общего%20назначения/Передачи%20данных/BSWAP.md) | Перестановка байтов |
| XADD | Обмен и сложение | | [XADD](Общего%20назначения/Передачи%20данных/XADD.md) | Обмен и сложение |
| CMPXCHG | Сравнение и обмен | | [CMPXCHG](Общего%20назначения/Передачи%20данных/CMPXCHG.md) | Сравнение и обмен |
| CMPXCHG8B | Сравнение и обмен 8 байтов | | [CMPXCHG8B, CMPXCHG16B](Общего%20назначения/Передачи%20данных/CMPXCHG8(16)B.md) | Сравнение и обмен 8/16 байтов |
| PUSH | Поместить значение в стек | | [PUSH](Общего%20назначения/Передачи%20данных/PUSH.md) | Поместить значение в стек |
| POP | Взять значение из стека | | [POP](Общего%20назначения/Передачи%20данных/POP.md) | Взять значение из стека |
| PUSHA/PUSHAD | Поместить значения регистров общего назначения в стек | | [PUSHA/PUSHAD](Общего%20назначения/Передачи%20данных/PUSHA(D).md) | Поместить значения регистров общего назначения в стек |
| POPA/POPAD | Взять значения регистров общего назначения из стека | | [POPA/POPAD](Общего%20назначения/Передачи%20данных/POPA(D).md) | Взять значения регистров общего назначения из стека |
| IN | Прочитать значение из порта ввода/вывода | | IN | Прочитать значение из порта ввода/вывода |
| OUT | Записать значение в порт ввода/вывода | | OUT | Записать значение в порт ввода/вывода |
| CWD | Преобразовать Word в DWord | | CWD | Преобразовать Word в DWord |
@ -20,3 +20,20 @@
| CWDE | Преобразовать Word в DWord в регистре eax | | CWDE | Преобразовать Word в DWord в регистре eax |
| MOVSX | Присвоить и расширить с учетом знака | | MOVSX | Присвоить и расширить с учетом знака |
| MOVZX | Присвоить и расширить нулевым значением | | MOVZX | Присвоить и расширить нулевым значением |
## Двоичные арифметические команды
| Команды | Описание |
| -------:|:--------------------- |
| ADD | Сложение |
| ADC | Сложение с переносом |
| SUB | Вычитание |
| SBB | Вычитание с заемом |
| IMUL | Знаковое умножение |
| MUL | Беззнаковое умножение |
| IDIV | Знаковое деление |
| DIV | Беззнаковое деление |
| INC | Инкремент |
| DEC | Декремент |
| NEG | Смена знака |
| CMP | Сравнение |

View File

@ -0,0 +1,4 @@
| Opcode | Instruction | Op/En | 64-bit Mode | Compat/Leg Mode | Description |
| ------------------ | ----------- | ----- | ----------- | --------------- | --------------------------------------------- |
| 0F C8+_rd_ | BSWAP _r32_ | O | Valid | Valid | Reverses the byte order of a 32-bit register. |
| REX.W + 0F C8+_rd_ | BSWAP _r64_ | O | Valid | N.E. | Reverses the byte order of a 64-bit register. |

View File

@ -1,94 +1,94 @@
[Условия](Условия.md) [Условия](Условия.md)
|Опкод|Инструкция|Op/En|64-битный режим|Легаси|Описание| | Опкод | Инструкция | Op/En | 64-битный режим | Легаси | Описание |
|---|---|---|---|---|---| | ---------------- | ------------------ | ----- | --------------- | ------ | ------------------------------------------- |
|0F 47 /r|CMOVA r16, r/m16|RM|Valid|Valid|Move if above (CF=0 and ZF=0).| | 0F 47 /r | CMOVA r16, r/m16 | RM | Valid | Valid | Move if above (CF=0 and ZF=0). |
|0F 47 /r|CMOVA r32, r/m32|RM|Valid|Valid|Move if above (CF=0 and ZF=0).| | 0F 47 /r | CMOVA r32, r/m32 | RM | Valid | Valid | Move if above (CF=0 and ZF=0). |
|REX.W + 0F 47 /r|CMOVA r64, r/m64|RM|Valid|N.E.|Move if above (CF=0 and ZF=0).| | REX.W + 0F 47 /r | CMOVA r64, r/m64 | RM | Valid | N.E. | Move if above (CF=0 and ZF=0). |
|0F 43 /r|CMOVAE r16, r/m16|RM|Valid|Valid|Move if above or equal (CF=0).| | 0F 43 /r | CMOVAE r16, r/m16 | RM | Valid | Valid | Move if above or equal (CF=0). |
|0F 43 /r|CMOVAE r32, r/m32|RM|Valid|Valid|Move if above or equal (CF=0).| | 0F 43 /r | CMOVAE r32, r/m32 | RM | Valid | Valid | Move if above or equal (CF=0). |
|REX.W + 0F 43 /r|CMOVAE r64, r/m64|RM|Valid|N.E.|Move if above or equal (CF=0).| | REX.W + 0F 43 /r | CMOVAE r64, r/m64 | RM | Valid | N.E. | Move if above or equal (CF=0). |
|0F 42 /r|CMOVB r16, r/m16|RM|Valid|Valid|Move if below (CF=1).| | 0F 42 /r | CMOVB r16, r/m16 | RM | Valid | Valid | Move if below (CF=1). |
|0F 42 /r|CMOVB r32, r/m32|RM|Valid|Valid|Move if below (CF=1).| | 0F 42 /r | CMOVB r32, r/m32 | RM | Valid | Valid | Move if below (CF=1). |
|REX.W + 0F 42 /r|CMOVB r64, r/m64|RM|Valid|N.E.|Move if below (CF=1).| | REX.W + 0F 42 /r | CMOVB r64, r/m64 | RM | Valid | N.E. | Move if below (CF=1). |
|0F 46 /r|CMOVBE r16, r/m16|RM|Valid|Valid|Move if below or equal (CF=1 or ZF=1).| | 0F 46 /r | CMOVBE r16, r/m16 | RM | Valid | Valid | Move if below or equal (CF=1 or ZF=1). |
|0F 46 /r|CMOVBE r32, r/m32|RM|Valid|Valid|Move if below or equal (CF=1 or ZF=1).| | 0F 46 /r | CMOVBE r32, r/m32 | RM | Valid | Valid | Move if below or equal (CF=1 or ZF=1). |
|REX.W + 0F 46 /r|CMOVBE r64, r/m64|RM|Valid|N.E.|Move if below or equal (CF=1 or ZF=1).| | REX.W + 0F 46 /r | CMOVBE r64, r/m64 | RM | Valid | N.E. | Move if below or equal (CF=1 or ZF=1). |
|0F 42 /r|CMOVC r16, r/m16|RM|Valid|Valid|Move if carry (CF=1).| | 0F 42 /r | CMOVC r16, r/m16 | RM | Valid | Valid | Move if carry (CF=1). |
|0F 42 /r|CMOVC r32, r/m32|RM|Valid|Valid|Move if carry (CF=1).| | 0F 42 /r | CMOVC r32, r/m32 | RM | Valid | Valid | Move if carry (CF=1). |
|REX.W + 0F 42 /r|CMOVC r64, r/m64|RM|Valid|N.E.|Move if carry (CF=1).| | REX.W + 0F 42 /r | CMOVC r64, r/m64 | RM | Valid | N.E. | Move if carry (CF=1). |
|0F 44 /r|CMOVE r16, r/m16|RM|Valid|Valid|Move if equal (ZF=1).| | 0F 44 /r | CMOVE r16, r/m16 | RM | Valid | Valid | Move if equal (ZF=1). |
|0F 44 /r|CMOVE r32, r/m32|RM|Valid|Valid|Move if equal (ZF=1).| | 0F 44 /r | CMOVE r32, r/m32 | RM | Valid | Valid | Move if equal (ZF=1). |
|REX.W + 0F 44 /r|CMOVE r64, r/m64|RM|Valid|N.E.|Move if equal (ZF=1).| | REX.W + 0F 44 /r | CMOVE r64, r/m64 | RM | Valid | N.E. | Move if equal (ZF=1). |
|0F 4F /r|CMOVG r16, r/m16|RM|Valid|Valid|Move if greater (ZF=0 and SF=OF).| | 0F 4F /r | CMOVG r16, r/m16 | RM | Valid | Valid | Move if greater (ZF=0 and SF=OF). |
|0F 4F /r|CMOVG r32, r/m32|RM|Valid|Valid|Move if greater (ZF=0 and SF=OF).| | 0F 4F /r | CMOVG r32, r/m32 | RM | Valid | Valid | Move if greater (ZF=0 and SF=OF). |
|REX.W + 0F 4F /r|CMOVG r64, r/m64|RM|V/N.E.|N/A|Move if greater (ZF=0 and SF=OF).| | REX.W + 0F 4F /r | CMOVG r64, r/m64 | RM | V/N.E. | N/A | Move if greater (ZF=0 and SF=OF). |
|0F 4D /r|CMOVGE r16, r/m16|RM|Valid|Valid|Move if greater or equal (SF=OF).| | 0F 4D /r | CMOVGE r16, r/m16 | RM | Valid | Valid | Move if greater or equal (SF=OF). |
|0F 4D /r|CMOVGE r32, r/m32|RM|Valid|Valid|Move if greater or equal (SF=OF).| | 0F 4D /r | CMOVGE r32, r/m32 | RM | Valid | Valid | Move if greater or equal (SF=OF). |
|REX.W + 0F 4D /r|CMOVGE r64, r/m64|RM|Valid|N.E.|Move if greater or equal (SF=OF).| | REX.W + 0F 4D /r | CMOVGE r64, r/m64 | RM | Valid | N.E. | Move if greater or equal (SF=OF). |
|0F 4C /r|CMOVL r16, r/m16|RM|Valid|Valid|Move if less (SF≠ OF).| | 0F 4C /r | CMOVL r16, r/m16 | RM | Valid | Valid | Move if less (SF≠ OF). |
|0F 4C /r|CMOVL r32, r/m32|RM|Valid|Valid|Move if less (SF≠ OF).| | 0F 4C /r | CMOVL r32, r/m32 | RM | Valid | Valid | Move if less (SF≠ OF). |
|REX.W + 0F 4C /r|CMOVL r64, r/m64|RM|Valid|N.E.|Move if less (SF≠ OF).| | REX.W + 0F 4C /r | CMOVL r64, r/m64 | RM | Valid | N.E. | Move if less (SF≠ OF). |
|0F 4E /r|CMOVLE r16, r/m16|RM|Valid|Valid|Move if less or equal (ZF=1 or SF≠ OF).| | 0F 4E /r | CMOVLE r16, r/m16 | RM | Valid | Valid | Move if less or equal (ZF=1 or SF≠ OF). |
|0F 4E /r|CMOVLE r32, r/m32|RM|Valid|Valid|Move if less or equal (ZF=1 or SF≠ OF).| | 0F 4E /r | CMOVLE r32, r/m32 | RM | Valid | Valid | Move if less or equal (ZF=1 or SF≠ OF). |
|REX.W + 0F 4E /r|CMOVLE r64, r/m64|RM|Valid|N.E.|Move if less or equal (ZF=1 or SF≠ OF).| | REX.W + 0F 4E /r | CMOVLE r64, r/m64 | RM | Valid | N.E. | Move if less or equal (ZF=1 or SF≠ OF). |
|0F 46 /r|CMOVNA r16, r/m16|RM|Valid|Valid|Move if not above (CF=1 or ZF=1).| | 0F 46 /r | CMOVNA r16, r/m16 | RM | Valid | Valid | Move if not above (CF=1 or ZF=1). |
|0F 46 /r|CMOVNA r32, r/m32|RM|Valid|Valid|Move if not above (CF=1 or ZF=1).| | 0F 46 /r | CMOVNA r32, r/m32 | RM | Valid | Valid | Move if not above (CF=1 or ZF=1). |
|REX.W + 0F 46 /r|CMOVNA r64, r/m64|RM|Valid|N.E.|Move if not above (CF=1 or ZF=1).| | REX.W + 0F 46 /r | CMOVNA r64, r/m64 | RM | Valid | N.E. | Move if not above (CF=1 or ZF=1). |
|0F 42 /r|CMOVNAE r16, r/m16|RM|Valid|Valid|Move if not above or equal (CF=1).| | 0F 42 /r | CMOVNAE r16, r/m16 | RM | Valid | Valid | Move if not above or equal (CF=1). |
|0F 42 /r|CMOVNAE r32, r/m32|RM|Valid|Valid|Move if not above or equal (CF=1).| | 0F 42 /r | CMOVNAE r32, r/m32 | RM | Valid | Valid | Move if not above or equal (CF=1). |
|REX.W + 0F 42 /r|CMOVNAE r64, r/m64|RM|Valid|N.E.|Move if not above or equal (CF=1).| | REX.W + 0F 42 /r | CMOVNAE r64, r/m64 | RM | Valid | N.E. | Move if not above or equal (CF=1). |
|0F 43 /r|CMOVNB r16, r/m16|RM|Valid|Valid|Move if not below (CF=0).| | 0F 43 /r | CMOVNB r16, r/m16 | RM | Valid | Valid | Move if not below (CF=0). |
|0F 43 /r|CMOVNB r32, r/m32|RM|Valid|Valid|Move if not below (CF=0).| | 0F 43 /r | CMOVNB r32, r/m32 | RM | Valid | Valid | Move if not below (CF=0). |
|REX.W + 0F 43 /r|CMOVNB r64, r/m64|RM|Valid|N.E.|Move if not below (CF=0).| | REX.W + 0F 43 /r | CMOVNB r64, r/m64 | RM | Valid | N.E. | Move if not below (CF=0). |
|0F 47 /r|CMOVNBE r16, r/m16|RM|Valid|Valid|Move if not below or equal (CF=0 and ZF=0).| | 0F 47 /r | CMOVNBE r16, r/m16 | RM | Valid | Valid | Move if not below or equal (CF=0 and ZF=0). |
|0F 47 /r|CMOVNBE r32, r/m32|RM|Valid|Valid|Move if not below or equal (CF=0 and ZF=0).| | 0F 47 /r | CMOVNBE r32, r/m32 | RM | Valid | Valid | Move if not below or equal (CF=0 and ZF=0). |
|REX.W + 0F 47 /r|CMOVNBE r64, r/m64|RM|Valid|N.E.|Move if not below or equal (CF=0 and ZF=0).| | REX.W + 0F 47 /r | CMOVNBE r64, r/m64 | RM | Valid | N.E. | Move if not below or equal (CF=0 and ZF=0). |
|0F 43 /r|CMOVNC r16, r/m16|RM|Valid|Valid|Move if not carry (CF=0).| | 0F 43 /r | CMOVNC r16, r/m16 | RM | Valid | Valid | Move if not carry (CF=0). |
|0F 43 /r|CMOVNC r32, r/m32|RM|Valid|Valid|Move if not carry (CF=0).| | 0F 43 /r | CMOVNC r32, r/m32 | RM | Valid | Valid | Move if not carry (CF=0). |
|REX.W + 0F 43 /r|CMOVNC r64, r/m64|RM|Valid|N.E.|Move if not carry (CF=0).| | REX.W + 0F 43 /r | CMOVNC r64, r/m64 | RM | Valid | N.E. | Move if not carry (CF=0). |
|0F 45 /r|CMOVNE r16, r/m16|RM|Valid|Valid|Move if not equal (ZF=0).| | 0F 45 /r | CMOVNE r16, r/m16 | RM | Valid | Valid | Move if not equal (ZF=0). |
|0F 45 /r|CMOVNE r32, r/m32|RM|Valid|Valid|Move if not equal (ZF=0).| | 0F 45 /r | CMOVNE r32, r/m32 | RM | Valid | Valid | Move if not equal (ZF=0). |
|REX.W + 0F 45 /r|CMOVNE r64, r/m64|RM|Valid|N.E.|Move if not equal (ZF=0).| | REX.W + 0F 45 /r | CMOVNE r64, r/m64 | RM | Valid | N.E. | Move if not equal (ZF=0). |
|0F 4E /r|CMOVNG r16, r/m16|RM|Valid|Valid|Move if not greater (ZF=1 or SF≠ OF).| | 0F 4E /r | CMOVNG r16, r/m16 | RM | Valid | Valid | Move if not greater (ZF=1 or SF≠ OF). |
|0F 4E /r|CMOVNG r32, r/m32|RM|Valid|Valid|Move if not greater (ZF=1 or SF≠ OF).| | 0F 4E /r | CMOVNG r32, r/m32 | RM | Valid | Valid | Move if not greater (ZF=1 or SF≠ OF). |
|REX.W + 0F 4E /r|CMOVNG r64, r/m64|RM|Valid|N.E.|Move if not greater (ZF=1 or SF≠ OF).| | REX.W + 0F 4E /r | CMOVNG r64, r/m64 | RM | Valid | N.E. | Move if not greater (ZF=1 or SF≠ OF). |
|0F 4C /r|CMOVNGE r16, r/m16|RM|Valid|Valid|Move if not greater or equal (SF≠ OF).| | 0F 4C /r | CMOVNGE r16, r/m16 | RM | Valid | Valid | Move if not greater or equal (SF≠ OF). |
|0F 4C /r|CMOVNGE r32, r/m32|RM|Valid|Valid|Move if not greater or equal (SF≠ OF).| | 0F 4C /r | CMOVNGE r32, r/m32 | RM | Valid | Valid | Move if not greater or equal (SF≠ OF). |
|REX.W + 0F 4C /r|CMOVNGE r64, r/m64|RM|Valid|N.E.|Move if not greater or equal (SF≠ OF).| | REX.W + 0F 4C /r | CMOVNGE r64, r/m64 | RM | Valid | N.E. | Move if not greater or equal (SF≠ OF). |
|0F 4D /r|CMOVNL r16, r/m16|RM|Valid|Valid|Move if not less (SF=OF).| | 0F 4D /r | CMOVNL r16, r/m16 | RM | Valid | Valid | Move if not less (SF=OF). |
|0F 4D /r|CMOVNL r32, r/m32|RM|Valid|Valid|Move if not less (SF=OF).| | 0F 4D /r | CMOVNL r32, r/m32 | RM | Valid | Valid | Move if not less (SF=OF). |
|REX.W + 0F 4D /r|CMOVNL r64, r/m64|RM|Valid|N.E.|Move if not less (SF=OF).| | REX.W + 0F 4D /r | CMOVNL r64, r/m64 | RM | Valid | N.E. | Move if not less (SF=OF). |
|0F 4F /r|CMOVNLE r16, r/m16|RM|Valid|Valid|Move if not less or equal (ZF=0 and SF=OF).| | 0F 4F /r | CMOVNLE r16, r/m16 | RM | Valid | Valid | Move if not less or equal (ZF=0 and SF=OF). |
|0F 4F /r|CMOVNLE r32, r/m32|RM|Valid|Valid|Move if not less or equal (ZF=0 and SF=OF).| | 0F 4F /r | CMOVNLE r32, r/m32 | RM | Valid | Valid | Move if not less or equal (ZF=0 and SF=OF). |
|REX.W + 0F 4F /r|CMOVNLE r64, r/m64|RM|Valid|N.E.|Move if not less or equal (ZF=0 and SF=OF).| | REX.W + 0F 4F /r | CMOVNLE r64, r/m64 | RM | Valid | N.E. | Move if not less or equal (ZF=0 and SF=OF). |
|0F 41 /r|CMOVNO r16, r/m16|RM|Valid|Valid|Move if not overflow (OF=0).| | 0F 41 /r | CMOVNO r16, r/m16 | RM | Valid | Valid | Move if not overflow (OF=0). |
|0F 41 /r|CMOVNO r32, r/m32|RM|Valid|Valid|Move if not overflow (OF=0).| | 0F 41 /r | CMOVNO r32, r/m32 | RM | Valid | Valid | Move if not overflow (OF=0). |
|REX.W + 0F 41 /r|CMOVNO r64, r/m64|RM|Valid|N.E.|Move if not overflow (OF=0).| | REX.W + 0F 41 /r | CMOVNO r64, r/m64 | RM | Valid | N.E. | Move if not overflow (OF=0). |
|0F 4B /r|CMOVNP r16, r/m16|RM|Valid|Valid|Move if not parity (PF=0).| | 0F 4B /r | CMOVNP r16, r/m16 | RM | Valid | Valid | Move if not parity (PF=0). |
|0F 4B /r|CMOVNP r32, r/m32|RM|Valid|Valid|Move if not parity (PF=0).| | 0F 4B /r | CMOVNP r32, r/m32 | RM | Valid | Valid | Move if not parity (PF=0). |
|REX.W + 0F 4B /r|CMOVNP r64, r/m64|RM|Valid|N.E.|Move if not parity (PF=0).| | REX.W + 0F 4B /r | CMOVNP r64, r/m64 | RM | Valid | N.E. | Move if not parity (PF=0). |
|0F 49 /r|CMOVNS r16, r/m16|RM|Valid|Valid|Move if not sign (SF=0).| | 0F 49 /r | CMOVNS r16, r/m16 | RM | Valid | Valid | Move if not sign (SF=0). |
|0F 49 /r|CMOVNS r32, r/m32|RM|Valid|Valid|Move if not sign (SF=0).| | 0F 49 /r | CMOVNS r32, r/m32 | RM | Valid | Valid | Move if not sign (SF=0). |
|REX.W + 0F 49 /r|CMOVNS r64, r/m64|RM|Valid|N.E.|Move if not sign (SF=0).| | REX.W + 0F 49 /r | CMOVNS r64, r/m64 | RM | Valid | N.E. | Move if not sign (SF=0). |
|0F 45 /r|CMOVNZ r16, r/m16|RM|Valid|Valid|Move if not zero (ZF=0).| | 0F 45 /r | CMOVNZ r16, r/m16 | RM | Valid | Valid | Move if not zero (ZF=0). |
|0F 45 /r|CMOVNZ r32, r/m32|RM|Valid|Valid|Move if not zero (ZF=0).| | 0F 45 /r | CMOVNZ r32, r/m32 | RM | Valid | Valid | Move if not zero (ZF=0). |
|REX.W + 0F 45 /r|CMOVNZ r64, r/m64|RM|Valid|N.E.|Move if not zero (ZF=0).| | REX.W + 0F 45 /r | CMOVNZ r64, r/m64 | RM | Valid | N.E. | Move if not zero (ZF=0). |
|0F 40 /r|CMOVO r16, r/m16|RM|Valid|Valid|Move if overflow (OF=1).| | 0F 40 /r | CMOVO r16, r/m16 | RM | Valid | Valid | Move if overflow (OF=1). |
|0F 40 /r|CMOVO r32, r/m32|RM|Valid|Valid|Move if overflow (OF=1).| | 0F 40 /r | CMOVO r32, r/m32 | RM | Valid | Valid | Move if overflow (OF=1). |
|REX.W + 0F 40 /r|CMOVO r64, r/m64|RM|Valid|N.E.|Move if overflow (OF=1).| | REX.W + 0F 40 /r | CMOVO r64, r/m64 | RM | Valid | N.E. | Move if overflow (OF=1). |
|0F 4A /r|CMOVP r16, r/m16|RM|Valid|Valid|Move if parity (PF=1).| | 0F 4A /r | CMOVP r16, r/m16 | RM | Valid | Valid | Move if parity (PF=1). |
|0F 4A /r|CMOVP r32, r/m32|RM|Valid|Valid|Move if parity (PF=1).| | 0F 4A /r | CMOVP r32, r/m32 | RM | Valid | Valid | Move if parity (PF=1). |
|REX.W + 0F 4A /r|CMOVP r64, r/m64|RM|Valid|N.E.|Move if parity (PF=1).| | REX.W + 0F 4A /r | CMOVP r64, r/m64 | RM | Valid | N.E. | Move if parity (PF=1). |
|0F 4A /r|CMOVPE r16, r/m16|RM|Valid|Valid|Move if parity even (PF=1).| | 0F 4A /r | CMOVPE r16, r/m16 | RM | Valid | Valid | Move if parity even (PF=1). |
|0F 4A /r|CMOVPE r32, r/m32|RM|Valid|Valid|Move if parity even (PF=1).| | 0F 4A /r | CMOVPE r32, r/m32 | RM | Valid | Valid | Move if parity even (PF=1). |
|REX.W + 0F 4A /r|CMOVPE r64, r/m64|RM|Valid|N.E.|Move if parity even (PF=1).| | REX.W + 0F 4A /r | CMOVPE r64, r/m64 | RM | Valid | N.E. | Move if parity even (PF=1). |
|0F 4B /r|CMOVPO r16, r/m16|RM|Valid|Valid|Move if parity odd (PF=0).| | 0F 4B /r | CMOVPO r16, r/m16 | RM | Valid | Valid | Move if parity odd (PF=0). |
|0F 4B /r|CMOVPO r32, r/m32|RM|Valid|Valid|Move if parity odd (PF=0).| | 0F 4B /r | CMOVPO r32, r/m32 | RM | Valid | Valid | Move if parity odd (PF=0). |
|REX.W + 0F 4B /r|CMOVPO r64, r/m64|RM|Valid|N.E.|Move if parity odd (PF=0).| | REX.W + 0F 4B /r | CMOVPO r64, r/m64 | RM | Valid | N.E. | Move if parity odd (PF=0). |
|0F 48 /r|CMOVS r16, r/m16|RM|Valid|Valid|Move if sign (SF=1).| | 0F 48 /r | CMOVS r16, r/m16 | RM | Valid | Valid | Move if sign (SF=1). |
|0F 48 /r|CMOVS r32, r/m32|RM|Valid|Valid|Move if sign (SF=1).| | 0F 48 /r | CMOVS r32, r/m32 | RM | Valid | Valid | Move if sign (SF=1). |
|REX.W + 0F 48 /r|CMOVS r64, r/m64|RM|Valid|N.E.|Move if sign (SF=1).| | REX.W + 0F 48 /r | CMOVS r64, r/m64 | RM | Valid | N.E. | Move if sign (SF=1). |
|0F 44 /r|CMOVZ r16, r/m16|RM|Valid|Valid|Move if zero (ZF=1).| | 0F 44 /r | CMOVZ r16, r/m16 | RM | Valid | Valid | Move if zero (ZF=1). |
|0F 44 /r|CMOVZ r32, r/m32|RM|Valid|Valid|Move if zero (ZF=1).| | 0F 44 /r | CMOVZ r32, r/m32 | RM | Valid | Valid | Move if zero (ZF=1). |
|REX.W + 0F 44 /r|CMOVZ r64, r/m64|RM|Valid|N.E.|Move if zero (ZF=1).| | REX.W + 0F 44 /r | CMOVZ r64, r/m64 | RM | Valid | N.E. | Move if zero (ZF=1). |

View File

@ -0,0 +1,9 @@
| Opcode/Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description |
| ---------------------------------- | ----- | ----------- | --------------- | ----------------------------------------------------------------------------------------------------------------- |
| 0F B0/r CMPXCHG r/m8, r8 | MR | Valid | Valid | Compare AL with r/m8. If equal, ZF is set and r8 is loaded into r/m8. Else, clear ZF and load r/m8 into AL. |
| REX + 0F B0/r CMPXCHG r/m8*,r8 | MR | Valid | N.E. | Compare AL with r/m8. If equal, ZF is set and r8 is loaded into r/m8. Else, clear ZF and load r/m8 into AL. |
| 0F B1/r CMPXCHG r/m16, r16 | MR | Valid | Valid | Compare AX with r/m16. If equal, ZF is set and r16 is loaded into r/m16. Else, clear ZF and load r/m16 into AX. |
| 0F B1/r CMPXCHG r/m32, r32 | MR | Valid | Valid | Compare EAX with r/m32. If equal, ZF is set and r32 is loaded into r/m32. Else, clear ZF and load r/m32 into EAX. |
| REX.W + 0F B1/r CMPXCHG r/m64, r64 | MR | Valid | N.E. | Compare RAX with r/m64. If equal, ZF is set and r64 is loaded into r/m64. Else, clear ZF and load r/m64 into RAX. |
> * In 64-bit mode, r/m8 can not be encoded to access the following byte registers if a REX prefix is used: AH, BH, CH, DH.

View File

@ -0,0 +1,4 @@
| Opcode/Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description |
| -------------------------------- | ----- | ----------- | --------------- | ------------------------------------------------------------------------------------------------------------------ |
| 0F C7 /1 CMPXCHG8B m64 | M | Valid | Valid | Compare EDX:EAX with m64. If equal, set ZF and load ECX:EBX into m64. Else, clear ZF and load m64 into EDX:EAX. |
| REX.W + 0F C7 /1 CMPXCHG16B m128 | M | Valid | N.E. | Compare RDX:RAX with m128. If equal, set ZF and load RCX:RBX into m128. Else, clear ZF and load m128 into RDX:RAX. |

View File

@ -0,0 +1,8 @@
| Opcode | Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description |
| ------ | ------------ | ----- | ----------- | --------------- | ------------------------------------------------ |
| E4 ib | IN AL, imm8 | I | Valid | Valid | Input byte from imm8 I/O port address into AL. |
| E5 ib | IN AX, imm8 | I | Valid | Valid | Input word from imm8 I/O port address into AX. |
| E5 ib | IN EAX, imm8 | I | Valid | Valid | Input dword from imm8 I/O port address into EAX. |
| EC | IN AL,DX | ZO | Valid | Valid | Input byte from I/O port in DX into AL. |
| ED | IN AX,DX | ZO | Valid | Valid | Input word from I/O port in DX into AX. |
| ED | IN EAX,DX | ZO | Valid | Valid | Input doubleword from I/O port in DX into EAX. |

View File

@ -1,37 +1,37 @@
|Opcode|Instruction|Op/En|64-Bit Mode|Compat/Leg Mode|Description| | Opcode | Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description |
|---|---|---|---|---|---| | ----------------- | ---------------------- | ----- | ----------- | --------------- | ---------------------------------------------------------- |
|88 /r|MOV r/m8, r8|MR|Valid|Valid|Move r8 to r/m8.| | 88 /r | MOV r/m8, r8 | MR | Valid | Valid | Move r8 to r/m8. |
|REX + 88 /r|MOV r/m81, r81|MR|Valid|N.E.|Move r8 to r/m8.| | REX + 88 /r | MOV r/m81, r81 | MR | Valid | N.E. | Move r8 to r/m8. |
|89 /r|MOV r/m16, r16|MR|Valid|Valid|Move r16 to r/m16.| | 89 /r | MOV r/m16, r16 | MR | Valid | Valid | Move r16 to r/m16. |
|89 /r|MOV r/m32, r32|MR|Valid|Valid|Move r32 to r/m32.| | 89 /r | MOV r/m32, r32 | MR | Valid | Valid | Move r32 to r/m32. |
|REX.W + 89 /r|MOV r/m64, r64|MR|Valid|N.E.|Move r64 to r/m64.| | REX.W + 89 /r | MOV r/m64, r64 | MR | Valid | N.E. | Move r64 to r/m64. |
|8A /r|MOV r8, r/m8|RM|Valid|Valid|Move r/m8 to r8.| | 8A /r | MOV r8, r/m8 | RM | Valid | Valid | Move r/m8 to r8. |
|REX + 8A /r|MOV r81, r/m81|RM|Valid|N.E.|Move r/m8 to r8.| | REX + 8A /r | MOV r81, r/m81 | RM | Valid | N.E. | Move r/m8 to r8. |
|8B /r|MOV r16, r/m16|RM|Valid|Valid|Move r/m16 to r16.| | 8B /r | MOV r16, r/m16 | RM | Valid | Valid | Move r/m16 to r16. |
|8B /r|MOV r32, r/m32|RM|Valid|Valid|Move r/m32 to r32.| | 8B /r | MOV r32, r/m32 | RM | Valid | Valid | Move r/m32 to r32. |
|REX.W + 8B /r|MOV r64, r/m64|RM|Valid|N.E.|Move r/m64 to r64.| | REX.W + 8B /r | MOV r64, r/m64 | RM | Valid | N.E. | Move r/m64 to r64. |
|8C /r|MOV r/m16, Sreg2|MR|Valid|Valid|Move segment register to r/m16.| | 8C /r | MOV r/m16, Sreg2 | MR | Valid | Valid | Move segment register to r/m16. |
|8C /r|MOV r16/r32/m16, Sreg2|MR|Valid|Valid|Move zero extended 16-bit segment register to r16/r32/m16.| | 8C /r | MOV r16/r32/m16, Sreg2 | MR | Valid | Valid | Move zero extended 16-bit segment register to r16/r32/m16. |
|REX.W + 8C /r|MOV r64/m16, Sreg2|MR|Valid|Valid|Move zero extended 16-bit segment register to r64/m16.| | REX.W + 8C /r | MOV r64/m16, Sreg2 | MR | Valid | Valid | Move zero extended 16-bit segment register to r64/m16. |
|8E /r|MOV Sreg, r/m162|RM|Valid|Valid|Move r/m16 to segment register.| | 8E /r | MOV Sreg, r/m162 | RM | Valid | Valid | Move r/m16 to segment register. |
|REX.W + 8E /r|MOV Sreg, r/m642|RM|Valid|Valid|Move lower 16 bits of r/m64 to segment register.| | REX.W + 8E /r | MOV Sreg, r/m642 | RM | Valid | Valid | Move lower 16 bits of r/m64 to segment register. |
|A0|MOV AL, moffs83|FD|Valid|Valid|Move byte at (seg:offset) to AL.| | A0 | MOV AL, moffs83 | FD | Valid | Valid | Move byte at (seg:offset) to AL. |
|REX.W + A0|MOV AL, moffs83|FD|Valid|N.E.|Move byte at (offset) to AL.| | REX.W + A0 | MOV AL, moffs83 | FD | Valid | N.E. | Move byte at (offset) to AL. |
|A1|MOV AX, moffs163|FD|Valid|Valid|Move word at (seg:offset) to AX.| | A1 | MOV AX, moffs163 | FD | Valid | Valid | Move word at (seg:offset) to AX. |
|A1|MOV EAX, moffs323|FD|Valid|Valid|Move doubleword at (seg:offset) to EAX.| | A1 | MOV EAX, moffs323 | FD | Valid | Valid | Move doubleword at (seg:offset) to EAX. |
|REX.W + A1|MOV RAX, moffs643|FD|Valid|N.E.|Move quadword at (offset) to RAX.| | REX.W + A1 | MOV RAX, moffs643 | FD | Valid | N.E. | Move quadword at (offset) to RAX. |
|A2|MOV moffs8, AL|TD|Valid|Valid|Move AL to (seg:offset).| | A2 | MOV moffs8, AL | TD | Valid | Valid | Move AL to (seg:offset). |
|REX.W + A2|MOV moffs81, AL|TD|Valid|N.E.|Move AL to (offset).| | REX.W + A2 | MOV moffs81, AL | TD | Valid | N.E. | Move AL to (offset). |
|A3|MOV moffs163, AX|TD|Valid|Valid|Move AX to (seg:offset).| | A3 | MOV moffs163, AX | TD | Valid | Valid | Move AX to (seg:offset). |
|A3|MOV moffs323, EAX|TD|Valid|Valid|Move EAX to (seg:offset).| | A3 | MOV moffs323, EAX | TD | Valid | Valid | Move EAX to (seg:offset). |
|REX.W + A3|MOV moffs643, RAX|TD|Valid|N.E.|Move RAX to (offset).| | REX.W + A3 | MOV moffs643, RAX | TD | Valid | N.E. | Move RAX to (offset). |
|B0+ rb ib|MOV r8, imm8|OI|Valid|Valid|Move imm8 to r8.| | B0+ rb ib | MOV r8, imm8 | OI | Valid | Valid | Move imm8 to r8. |
|REX + B0+ rb ib|MOV r81, imm8|OI|Valid|N.E.|Move imm8 to r8.| | REX + B0+ rb ib | MOV r81, imm8 | OI | Valid | N.E. | Move imm8 to r8. |
|B8+ rw iw|MOV r16, imm16|OI|Valid|Valid|Move imm16 to r16.| | B8+ rw iw | MOV r16, imm16 | OI | Valid | Valid | Move imm16 to r16. |
|B8+ rd id|MOV r32, imm32|OI|Valid|Valid|Move imm32 to r32.| | B8+ rd id | MOV r32, imm32 | OI | Valid | Valid | Move imm32 to r32. |
|REX.W + B8+ rd io|MOV r64, imm64|OI|Valid|N.E.|Move imm64 to r64.| | REX.W + B8+ rd io | MOV r64, imm64 | OI | Valid | N.E. | Move imm64 to r64. |
|C6 /0 ib|MOV r/m8, imm8|MI|Valid|Valid|Move imm8 to r/m8.| | C6 /0 ib | MOV r/m8, imm8 | MI | Valid | Valid | Move imm8 to r/m8. |
|REX + C6 /0 ib|MOV r/m81, imm8|MI|Valid|N.E.|Move imm8 to r/m8.| | REX + C6 /0 ib | MOV r/m81, imm8 | MI | Valid | N.E. | Move imm8 to r/m8. |
|C7 /0 iw|MOV r/m16, imm16|MI|Valid|Valid|Move imm16 to r/m16.| | C7 /0 iw | MOV r/m16, imm16 | MI | Valid | Valid | Move imm16 to r/m16. |
|C7 /0 id|MOV r/m32, imm32|MI|Valid|Valid|Move imm32 to r/m32.| | C7 /0 id | MOV r/m32, imm32 | MI | Valid | Valid | Move imm32 to r/m32. |
|REX.W + C7 /0 id|MOV r/m64, imm32|MI|Valid|N.E.|Move imm32 sign extended to 64-bits to r/m64.| | REX.W + C7 /0 id | MOV r/m64, imm32 | MI | Valid | N.E. | Move imm32 sign extended to 64-bits to r/m64. |

View File

@ -0,0 +1,17 @@
| Opcode | Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description |
| ------ | ----------- | ----- | ----------- | --------------- | -------------------------------------------------------------------------------------- |
| 8F /0 | POP r/m16 | M | Valid | Valid | Pop top of stack into m16; increment stack pointer. |
| 8F /0 | POP r/m32 | M | N.E. | Valid | Pop top of stack into m32; increment stack pointer. |
| 8F /0 | POP r/m64 | M | Valid | N.E. | Pop top of stack into m64; increment stack pointer. Cannot encode 32-bit operand size. |
| 58+ rw | POP r16 | O | Valid | Valid | Pop top of stack into r16; increment stack pointer. |
| 58+ rd | POP r32 | O | N.E. | Valid | Pop top of stack into r32; increment stack pointer. |
| 58+ rd | POP r64 | O | Valid | N.E. | Pop top of stack into r64; increment stack pointer. Cannot encode 32-bit operand size. |
| 1F | POP DS | ZO | Invalid | Valid | Pop top of stack into DS; increment stack pointer. |
| 07 | POP ES | ZO | Invalid | Valid | Pop top of stack into ES; increment stack pointer. |
| 17 | POP SS | ZO | Invalid | Valid | Pop top of stack into SS; increment stack pointer. |
| 0F A1 | POP FS | ZO | Valid | Valid | Pop top of stack into FS; increment stack pointer by 16 bits. |
| 0F A1 | POP FS | ZO | N.E. | Valid | Pop top of stack into FS; increment stack pointer by 32 bits. |
| 0F A1 | POP FS | ZO | Valid | N.E. | Pop top of stack into FS; increment stack pointer by 64 bits. |
| 0F A9 | POP GS | ZO | Valid | Valid | Pop top of stack into GS; increment stack pointer by 16 bits. |
| 0F A9 | POP GS | ZO | N.E. | Valid | Pop top of stack into GS; increment stack pointer by 32 bits. |
| 0F A9 | POP GS | ZO | Valid | N.E. | Pop top of stack into GS; increment stack pointer by 64 bits. |

View File

@ -0,0 +1,4 @@
| Opcode | Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description |
| ------ | ----------- | ----- | ----------- | --------------- | ------------------------------------------ |
| 61 | POPA | ZO | Invalid | Valid | Pop DI, SI, BP, BX, DX, CX, and AX. |
| 61 | POPAD | ZO | Invalid | Valid | Pop EDI, ESI, EBP, EBX, EDX, ECX, and EAX. |

View File

@ -0,0 +1,17 @@
| Opcode | Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description |
| ------ | ----------- | ----- | ----------- | --------------- | ----------- |
| FF /6 | PUSH r/m16 | M | Valid | Valid | Push r/m16. |
| FF /6 | PUSH r/m32 | M | N.E. | Valid | Push r/m32. |
| FF /6 | PUSH r/m64 | M | Valid | N.E. | Push r/m64. |
| 50+rw | PUSH r16 | O | Valid | Valid | Push r16. |
| 50+rd | PUSH r32 | O | N.E. | Valid | Push r32. |
| 50+rd | PUSH r64 | O | Valid | N.E. | Push r64. |
| 6A ib | PUSH imm8 | I | Valid | Valid | Push imm8. |
| 68 iw | PUSH imm16 | I | Valid | Valid | Push imm16. |
| 68 id | PUSH imm32 | I | Valid | Valid | Push imm32. |
| 0E | PUSH CS | ZO | Invalid | Valid | Push CS. |
| 16 | PUSH SS | ZO | Invalid | Valid | Push SS. |
| 1E | PUSH DS | ZO | Invalid | Valid | Push DS. |
| 06 | PUSH ES | ZO | Invalid | Valid | Push ES. |
| 0F A0 | PUSH FS | ZO | Valid | Valid | Push FS. |
| 0F A8 | PUSH GS | ZO | Valid | Valid | Push GS. |

View File

@ -0,0 +1,4 @@
| Opcode | Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description |
| ------ | ----------- | ----- | ----------- | --------------- | --------------------------------------------------------- |
| 60 | PUSHA | ZO | Invalid | Valid | Push AX, CX, DX, BX, original SP, BP, SI, and DI. |
| 60 | PUSHAD | ZO | Invalid | Valid | Push EAX, ECX, EDX, EBX, original ESP, EBP, ESI, and EDI. |

View File

@ -0,0 +1,4 @@
| Opcode | Instruction | Op/En | 64-bit Mode | Compat/Leg Mode | Description |
| ------------------ | ----------- | ----- | ----------- | --------------- | --------------------------------------------- |
| 0F C8+_rd_ | BSWAP _r32_ | O | Valid | Valid | Reverses the byte order of a 32-bit register. |
| REX.W + 0F C8+_rd_ | BSWAP _r64_ | O | Valid | N.E. | Reverses the byte order of a 64-bit register. |

View File

@ -1,21 +1,20 @@
|Opcode|Instruction|Op/En|64-Bit Mode|Compat/Leg Mode|Description| | 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 AX, r16 | O | Valid | Valid | Exchange r16 with AX. |
|90+rw|XCHG r16, AX|O|Valid|Valid|Exchange AX with r16.| | 90+rw | XCHG r16, AX | O | Valid | Valid | Exchange AX with r16. |
|90+rd|XCHG EAX, r32|O|Valid|Valid|Exchange r32 with EAX.| | 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.| | 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.| | 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.| | 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.| | 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.| | 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).| | 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).| | 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 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 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.| | 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.| | 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.| | 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.| | 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. > * 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.
```