vault backup: 2024-01-05 23:00:41

This commit is contained in:
sweetbread 2024-01-05 23:00:41 +03:00
parent 9aa10fb36c
commit ff9b6251e5
11 changed files with 122 additions and 45 deletions

21
.obsidian/graph.json vendored
View File

@ -5,8 +5,23 @@
"showAttachments": false, "showAttachments": false,
"hideUnresolved": false, "hideUnresolved": false,
"showOrphans": true, "showOrphans": true,
"collapse-color-groups": true, "collapse-color-groups": false,
"colorGroups": [], "colorGroups": [
{
"query": "path:\"X86/Общего назначения/Передачи данных\" ",
"color": {
"a": 1,
"rgb": 14701138
}
},
{
"query": "path:\"X86/Общего назначения/Двоичные арифметические\" ",
"color": {
"a": 1,
"rgb": 14725458
}
}
],
"collapse-display": true, "collapse-display": true,
"showArrow": true, "showArrow": true,
"textFadeMultiplier": 0, "textFadeMultiplier": 0,
@ -17,6 +32,6 @@
"repelStrength": 9.92414664981037, "repelStrength": 9.92414664981037,
"linkStrength": 0.486093552465234, "linkStrength": 0.486093552465234,
"linkDistance": 383, "linkDistance": 383,
"scale": 0.7401932494444989, "scale": 0.5602434643767382,
"close": false "close": false
} }

View File

@ -4,19 +4,15 @@
"type": "split", "type": "split",
"children": [ "children": [
{ {
"id": "0a9a3914929b7205", "id": "516a54f9621a92fe",
"type": "tabs", "type": "tabs",
"children": [ "children": [
{ {
"id": "6a0ff7f9aaa2f335", "id": "d2bffea13176633c",
"type": "leaf", "type": "leaf",
"state": { "state": {
"type": "markdown", "type": "graph",
"state": { "state": {}
"file": "Оглавление.md",
"mode": "preview",
"source": true
}
} }
} }
] ]
@ -85,7 +81,6 @@
"state": { "state": {
"type": "backlink", "type": "backlink",
"state": { "state": {
"file": "Оглавление.md",
"collapseAll": false, "collapseAll": false,
"extraContext": false, "extraContext": false,
"sortOrder": "alphabetical", "sortOrder": "alphabetical",
@ -102,7 +97,6 @@
"state": { "state": {
"type": "outgoing-link", "type": "outgoing-link",
"state": { "state": {
"file": "Оглавление.md",
"linksCollapsed": true, "linksCollapsed": true,
"unlinkedCollapsed": false "unlinkedCollapsed": false
} }
@ -113,9 +107,7 @@
"type": "leaf", "type": "leaf",
"state": { "state": {
"type": "outline", "type": "outline",
"state": { "state": {}
"file": "Оглавление.md"
}
} }
}, },
{ {
@ -141,12 +133,17 @@
"homepage:Open homepage": false "homepage:Open homepage": false
} }
}, },
"active": "6a0ff7f9aaa2f335", "active": "d2bffea13176633c",
"lastOpenFiles": [ "lastOpenFiles": [
"Оглавление.md",
"X86/Общего назначения/Двоичные арифметические/SUB.md",
"X86/Общего назначения/Двоичные арифметические/ADC.md",
"X86/Общего назначения.md", "X86/Общего назначения.md",
"X86/Общего назначения/Двоичные арифметические/DIV.md",
"X86/Общего назначения/Двоичные арифметические/IDIV.md",
"X86/Общего назначения/Двоичные арифметические/MUL.md",
"X86/Общего назначения/Двоичные арифметические/SUB.md",
"X86/Общего назначения/Двоичные арифметические/SBB.md",
"X86/Общего назначения/Двоичные арифметические/ADC.md",
"X86/Общего назначения/Двоичные арифметические/IMUL.md",
"Оглавление.md",
"X86/Общего назначения/Двоичные арифметические/ADD.md", "X86/Общего назначения/Двоичные арифметические/ADD.md",
"X86/Общего назначения/Двоичные арифметические", "X86/Общего назначения/Двоичные арифметические",
"X86/Общего назначения/Передачи данных/MOVZX.md", "X86/Общего назначения/Передачи данных/MOVZX.md",
@ -167,11 +164,6 @@
"X86/Общего назначения/Передачи данных/POP.md", "X86/Общего назначения/Передачи данных/POP.md",
"X86/Общего назначения/Передачи данных/PUSH.md", "X86/Общего назначения/Передачи данных/PUSH.md",
"X86/Общего назначения/Передачи данных/CMPXCHG.md", "X86/Общего назначения/Передачи данных/CMPXCHG.md",
"X86/Общего назначения/Передачи данных/XCHG.md",
"X86/Общего назначения/Передачи данных/CMOVxx.md",
"X86/Общего назначения/Передачи данных/MOV.md",
"X86/Общего назначения/Передачи данных/XADD.md",
"X86/Общего назначения/Передачи данных/BSWAP.md",
"Untitled", "Untitled",
"Общегоы/Общего назначения", "Общегоы/Общего назначения",
"Общегоы", "Общегоы",

View File

@ -24,15 +24,15 @@
## Двоичные арифметические команды ## Двоичные арифметические команды
| Команды | Описание | | Команды | Описание |
| -----------------------------------------------------------:|:--------------------- | | -------------------------------------------------------------:|:--------------------- |
| [ADD](Общего%20назначения/Двоичные%20арифметические/ADD.md) | Сложение | | [ADD](Общего%20назначения/Двоичные%20арифметические/ADD.md) | Сложение |
| [ADC](Общего%20назначения/Двоичные%20арифметические/ADC.md) | Сложение с переносом | | [ADC](Общего%20назначения/Двоичные%20арифметические/ADC.md) | Сложение с переносом |
| SUB | Вычитание | | [SUB](Общего%20назначения/Двоичные%20арифметические/SUB.md) | Вычитание |
| SBB | Вычитание с заемом | | [SBB](Общего%20назначения/Двоичные%20арифметические/SBB.md) | Вычитание с заемом |
| IMUL | Знаковое умножение | | [IMUL](Общего%20назначения/Двоичные%20арифметические/IMUL.md) | Знаковое умножение |
| MUL | Беззнаковое умножение | | [MUL](Общего%20назначения/Двоичные%20арифметические/MUL.md) | Беззнаковое умножение |
| IDIV | Знаковое деление | | [IDIV](Общего%20назначения/Двоичные%20арифметические/IDIV.md) | Знаковое деление |
| DIV | Беззнаковое деление | | [DIV](Общего%20назначения/Двоичные%20арифметические/DIV.md) | Беззнаковое деление |
| INC | Инкремент | | INC | Инкремент |
| DEC | Декремент | | DEC | Декремент |
| NEG | Смена знака | | NEG | Смена знака |

View File

@ -23,4 +23,4 @@
| 13 /r | ADC r32, r/m32 | RM | Valid | Valid | Add with CF r/m32 to r32. | | 13 /r | ADC r32, r/m32 | RM | Valid | Valid | Add with CF r/m32 to r32. |
| REX.W + 13 /r | ADC r64, r/m64 | RM | Valid | N.E. | Add with CF r/m64 to r64. | | REX.W + 13 /r | ADC r64, r/m64 | RM | Valid | N.E. | Add with CF r/m64 to r64. |
> *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. > \*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

@ -23,4 +23,4 @@
| 03 /r | ADD r32, r/m32 | RM | Valid | Valid | Add r/m32 to r32. | | 03 /r | ADD r32, r/m32 | RM | Valid | Valid | Add r/m32 to r32. |
| REX.W + 03 /r | ADD r64, r/m64 | RM | Valid | N.E. | Add r/m64 to r64. | | REX.W + 03 /r | ADD r64, r/m64 | RM | Valid | N.E. | Add r/m64 to r64. |
> *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. > \*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,9 @@
| Opcode | Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description |
| ------------- | ----------- | ----- | ----------- | --------------- | ------------------------------------------------------------------------------------------ |
| F6 /6 | DIV r/m8 | M | Valid | Valid | Unsigned divide AX by r/m8, with result stored in AL := Quotient, AH := Remainder. |
| REX + F6 /6 | DIV r/m8\* | M | Valid | N.E. | Unsigned divide AX by r/m8, with result stored in AL := Quotient, AH := Remainder. |
| F7 /6 | DIV r/m16 | M | Valid | Valid | Unsigned divide DX:AX by r/m16, with result stored in AX := Quotient, DX := Remainder. |
| F7 /6 | DIV r/m32 | M | Valid | Valid | Unsigned divide EDX:EAX by r/m32, with result stored in EAX := Quotient, EDX := Remainder. |
| REX.W + F7 /6 | DIV r/m64 | M | Valid | N.E. | Unsigned divide RDX:RAX by r/m64, with result stored in RAX := Quotient, RDX := Remainder. |
> \*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,9 @@
| Opcode | Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description |
| ------------- | ----------- | ----- | ----------- | --------------- | ---------------------------------------------------------------------------------------- |
| F6 /7 | IDIV r/m8 | M | Valid | Valid | Signed divide AX by r/m8, with result stored in: AL := Quotient, AH := Remainder. |
| REX + F6 /7 | IDIV r/m8\* | M | Valid | N.E. | Signed divide AX by r/m8, with result stored in AL := Quotient, AH := Remainder. |
| F7 /7 | IDIV r/m16 | M | Valid | Valid | Signed divide DX:AX by r/m16, with result stored in AX := Quotient, DX := Remainder. |
| F7 /7 | IDIV r/m32 | M | Valid | Valid | Signed divide EDX:EAX by r/m32, with result stored in EAX := Quotient, EDX := Remainder. |
| REX.W + F7 /7 | IDIV r/m64 | M | Valid | N.E. | Signed divide RDX:RAX by r/m64, with result stored in RAX := Quotient, RDX := Remainder. |
> \*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,17 @@
| Opcode | Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description |
| ---------------- | ---------------------- | ----- | ----------- | --------------- | ------------------------------------------------------------ |
| F6 /5 | IMUL r/m8\* | M | Valid | Valid | AX:= AL r/m byte. |
| F7 /5 | IMUL r/m16 | M | Valid | Valid | DX:AX := AX r/m word. |
| F7 /5 | IMUL r/m32 | M | Valid | Valid | EDX:EAX := EAX r/m32. |
| REX.W + F7 /5 | IMUL r/m64 | M | Valid | N.E. | RDX:RAX := RAX r/m64. |
| 0F AF /r | IMUL r16, r/m16 | RM | Valid | Valid | word register := word register r/m16. |
| 0F AF /r | IMUL r32, r/m32 | RM | Valid | Valid | doubleword register := doubleword register r/m32. |
| REX.W + 0F AF /r | IMUL r64, r/m64 | RM | Valid | N.E. | Quadword register := Quadword register r/m64. |
| 6B /r ib | IMUL r16, r/m16, imm8 | RMI | Valid | Valid | word register := r/m16 sign-extended immediate byte. |
| 6B /r ib | IMUL r32, r/m32, imm8 | RMI | Valid | Valid | doubleword register := r/m32 sign-extended immediate byte. |
| REX.W + 6B /r ib | IMUL r64, r/m64, imm8 | RMI | Valid | N.E. | Quadword register := r/m64 sign-extended immediate byte. |
| 69 /r iw | IMUL r16, r/m16, imm16 | RMI | Valid | Valid | word register := r/m16 immediate word. |
| 69 /r id | IMUL r32, r/m32, imm32 | RMI | Valid | Valid | doubleword register := r/m32 immediate doubleword. |
| REX.W + 69 /r id | IMUL r64, r/m64, imm32 | RMI | Valid | N.E. | Quadword register := r/m64 immediate doubleword. |
> \*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,9 @@
| Opcode | Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description |
| ------------- | ----------- | ----- | ----------- | --------------- | ------------------------------------------- |
| F6 /4 | MUL r/m8 | M | Valid | Valid | Unsigned multiply (AX := AL r/m8). |
| REX + F6 /4 | MUL r/m8\* | M | Valid | N.E. | Unsigned multiply (AX := AL r/m8). |
| F7 /4 | MUL r/m16 | M | Valid | Valid | Unsigned multiply (DX:AX := AX r/m16). |
| F7 /4 | MUL r/m32 | M | Valid | Valid | Unsigned multiply (EDX:EAX := EAX r/m32). |
| REX.W + F7 /4 | MUL r/m64 | M | Valid | N.E. | Unsigned multiply (RDX:RAX := RAX r/m64). |
> \*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,26 @@
| Opcode | Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description |
| ---------------- | ---------------- | ----- | ----------- | --------------- | --------------------------------------------------------------- |
| 1C ib | SBB AL, imm8 | I | Valid | Valid | Subtract with borrow imm8 from AL. |
| 1D iw | SBB AX, imm16 | I | Valid | Valid | Subtract with borrow imm16 from AX. |
| 1D id | SBB EAX, imm32 | I | Valid | Valid | Subtract with borrow imm32 from EAX. |
| REX.W + 1D id | SBB RAX, imm32 | I | Valid | N.E. | Subtract with borrow sign-extended imm.32 to 64-bits from RAX. |
| 80 /3 ib | SBB r/m8, imm8 | MI | Valid | Valid | Subtract with borrow imm8 from r/m8. |
| REX + 80 /3 ib | SBB r/m8\*, imm8 | MI | Valid | N.E. | Subtract with borrow imm8 from r/m8. |
| 81 /3 iw | SBB r/m16, imm16 | MI | Valid | Valid | Subtract with borrow imm16 from r/m16. |
| 81 /3 id | SBB r/m32, imm32 | MI | Valid | Valid | Subtract with borrow imm32 from r/m32. |
| REX.W + 81 /3 id | SBB r/m64, imm32 | MI | Valid | N.E. | Subtract with borrow sign-extended imm32 to 64-bits from r/m64. |
| 83 /3 ib | SBB r/m16, imm8 | MI | Valid | Valid | Subtract with borrow sign-extended imm8 from r/m16. |
| 83 /3 ib | SBB r/m32, imm8 | MI | Valid | Valid | Subtract with borrow sign-extended imm8 from r/m32. |
| REX.W + 83 /3 ib | SBB r/m64, imm8 | MI | Valid | N.E. | Subtract with borrow sign-extended imm8 from r/m64. |
| 18 /r | SBB r/m8, r8 | MR | Valid | Valid | Subtract with borrow r8 from r/m8. |
| REX + 18 /r | SBB r/m8\*, r8 | MR | Valid | N.E. | Subtract with borrow r8 from r/m8. |
| 19 /r | SBB r/m16, r16 | MR | Valid | Valid | Subtract with borrow r16 from r/m16. |
| 19 /r | SBB r/m32, r32 | MR | Valid | Valid | Subtract with borrow r32 from r/m32. |
| REX.W + 19 /r | SBB r/m64, r64 | MR | Valid | N.E. | Subtract with borrow r64 from r/m64. |
| 1A /r | SBB r8, r/m8 | RM | Valid | Valid | Subtract with borrow r/m8 from r8. |
| REX + 1A /r | SBB r8\*, r/m8\* | RM | Valid | N.E. | Subtract with borrow r/m8 from r8. |
| 1B /r | SBB r16, r/m16 | RM | Valid | Valid | Subtract with borrow r/m16 from r16. |
| 1B /r | SBB r32, r/m32 | RM | Valid | Valid | Subtract with borrow r/m32 from r32. |
| REX.W + 1B /r | SBB r64, r/m64 | RM | Valid | N.E. | Subtract with borrow r/m64 from r64. |
> \*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

@ -5,7 +5,7 @@
| 2D id | SUB EAX, imm32 | I | Valid | Valid | Subtract imm32 from EAX. | | 2D id | SUB EAX, imm32 | I | Valid | Valid | Subtract imm32 from EAX. |
| REX.W + 2D id | SUB RAX, imm32 | I | Valid | N.E. | Subtract imm32 sign-extended to 64-bits from RAX. | | REX.W + 2D id | SUB RAX, imm32 | I | Valid | N.E. | Subtract imm32 sign-extended to 64-bits from RAX. |
| 80 /5 ib | SUB r/m8, imm8 | MI | Valid | Valid | Subtract imm8 from r/m8. | | 80 /5 ib | SUB r/m8, imm8 | MI | Valid | Valid | Subtract imm8 from r/m8. |
| REX + 80 /5 ib | SUB r/m81, imm8 | MI | Valid | N.E. | Subtract imm8 from r/m8. | | REX + 80 /5 ib | SUB r/m8\*, imm8 | MI | Valid | N.E. | Subtract imm8 from r/m8. |
| 81 /5 iw | SUB r/m16, imm16 | MI | Valid | Valid | Subtract imm16 from r/m16. | | 81 /5 iw | SUB r/m16, imm16 | MI | Valid | Valid | Subtract imm16 from r/m16. |
| 81 /5 id | SUB r/m32, imm32 | MI | Valid | Valid | Subtract imm32 from r/m32. | | 81 /5 id | SUB r/m32, imm32 | MI | Valid | Valid | Subtract imm32 from r/m32. |
| REX.W + 81 /5 id | SUB r/m64, imm32 | MI | Valid | N.E. | Subtract imm32 sign-extended to 64-bits from r/m64. | | REX.W + 81 /5 id | SUB r/m64, imm32 | MI | Valid | N.E. | Subtract imm32 sign-extended to 64-bits from r/m64. |
@ -13,14 +13,14 @@
| 83 /5 ib | SUB r/m32, imm8 | MI | Valid | Valid | Subtract sign-extended imm8 from r/m32. | | 83 /5 ib | SUB r/m32, imm8 | MI | Valid | Valid | Subtract sign-extended imm8 from r/m32. |
| REX.W + 83 /5 ib | SUB r/m64, imm8 | MI | Valid | N.E. | Subtract sign-extended imm8 from r/m64. | | REX.W + 83 /5 ib | SUB r/m64, imm8 | MI | Valid | N.E. | Subtract sign-extended imm8 from r/m64. |
| 28 /r | SUB r/m8, r8 | MR | Valid | Valid | Subtract r8 from r/m8. | | 28 /r | SUB r/m8, r8 | MR | Valid | Valid | Subtract r8 from r/m8. |
| REX + 28 /r | SUB r/m81, r81 | MR | Valid | N.E. | Subtract r8 from r/m8. | | REX + 28 /r | SUB r/m8\*, r8\* | MR | Valid | N.E. | Subtract r8 from r/m8. |
| 29 /r | SUB r/m16, r16 | MR | Valid | Valid | Subtract r16 from r/m16. | | 29 /r | SUB r/m16, r16 | MR | Valid | Valid | Subtract r16 from r/m16. |
| 29 /r | SUB r/m32, r32 | MR | Valid | Valid | Subtract r32 from r/m32. | | 29 /r | SUB r/m32, r32 | MR | Valid | Valid | Subtract r32 from r/m32. |
| REX.W + 29 /r | SUB r/m64, r64 | MR | Valid | N.E. | Subtract r64 from r/m64. | | REX.W + 29 /r | SUB r/m64, r64 | MR | Valid | N.E. | Subtract r64 from r/m64. |
| 2A /r | SUB r8, r/m8 | RM | Valid | Valid | Subtract r/m8 from r8. | | 2A /r | SUB r8, r/m8 | RM | Valid | Valid | Subtract r/m8 from r8. |
| REX + 2A /r | SUB r81, r/m81 | RM | Valid | N.E. | Subtract r/m8 from r8. | | REX + 2A /r | SUB r8\*, r/m8\* | RM | Valid | N.E. | Subtract r/m8 from r8. |
| 2B /r | SUB r16, r/m16 | RM | Valid | Valid | Subtract r/m16 from r16. | | 2B /r | SUB r16, r/m16 | RM | Valid | Valid | Subtract r/m16 from r16. |
| 2B /r | SUB r32, r/m32 | RM | Valid | Valid | Subtract r/m32 from r32. | | 2B /r | SUB r32, r/m32 | RM | Valid | Valid | Subtract r/m32 from r32. |
| REX.W + 2B /r | SUB r64, r/m64 | RM | Valid | N.E. | Subtract r/m64 from r64. | | REX.W + 2B /r | SUB r64, r/m64 | RM | Valid | N.E. | Subtract r/m64 from r64. |
> *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. > \*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.