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,7 +1,7 @@
[Условия](Условия.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). |

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,5 +1,5 @@
| 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. |

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,5 +1,5 @@
| 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. |
@ -16,6 +16,5 @@
| 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.
```