diff --git a/.obsidian/workspace-mobile.json b/.obsidian/workspace-mobile.json index 35f37c3..9eb49ea 100644 --- a/.obsidian/workspace-mobile.json +++ b/.obsidian/workspace-mobile.json @@ -4,15 +4,19 @@ "type": "split", "children": [ { - "id": "516a54f9621a92fe", + "id": "63d32247f792c29d", "type": "tabs", "children": [ { - "id": "d2bffea13176633c", + "id": "1f59df9499f764ed", "type": "leaf", "state": { - "type": "graph", - "state": {} + "type": "markdown", + "state": { + "file": "X86/Общего назначения.md", + "mode": "source", + "source": true + } } } ] @@ -81,6 +85,7 @@ "state": { "type": "backlink", "state": { + "file": "X86/Общего назначения.md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -97,6 +102,7 @@ "state": { "type": "outgoing-link", "state": { + "file": "X86/Общего назначения.md", "linksCollapsed": true, "unlinkedCollapsed": false } @@ -107,7 +113,9 @@ "type": "leaf", "state": { "type": "outline", - "state": {} + "state": { + "file": "X86/Общего назначения.md" + } } }, { @@ -133,17 +141,21 @@ "homepage:Open homepage": false } }, - "active": "d2bffea13176633c", + "active": "1f59df9499f764ed", "lastOpenFiles": [ + "X86/Общего назначения/Двоичные арифметические/CMP.md", + "X86/Общего назначения/Двоичные арифметические/NEG.md", + "X86/Общего назначения/Двоичные арифметические/ADC.md", + "X86/Общего назначения/Двоичные арифметические/DEC.md", + "X86/Общего назначения/Двоичные арифметические/INC.md", "X86/Общего назначения.md", + "Оглавление.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/Общего назначения/Двоичные арифметические", "X86/Общего назначения/Передачи данных/MOVZX.md", @@ -160,10 +172,6 @@ "Общего назначения", "Общего назначения/Передачи данных", "X86/Общего назначения/Untitled.md", - "X86/Общего назначения/Передачи данных/CMPXCHG8(16)B.md", - "X86/Общего назначения/Передачи данных/POP.md", - "X86/Общего назначения/Передачи данных/PUSH.md", - "X86/Общего назначения/Передачи данных/CMPXCHG.md", "Untitled", "Общегоы/Общего назначения", "Общегоы", diff --git a/X86/Общего назначения.md b/X86/Общего назначения.md index d8f222f..da37d9f 100644 --- a/X86/Общего назначения.md +++ b/X86/Общего назначения.md @@ -33,7 +33,7 @@ | [MUL](Общего%20назначения/Двоичные%20арифметические/MUL.md) | Беззнаковое умножение | | [IDIV](Общего%20назначения/Двоичные%20арифметические/IDIV.md) | Знаковое деление | | [DIV](Общего%20назначения/Двоичные%20арифметические/DIV.md) | Беззнаковое деление | -| INC | Инкремент | -| DEC | Декремент | -| NEG | Смена знака | -| CMP | Сравнение | \ No newline at end of file +| [INC](Общего%20назначения/Двоичные%20арифметические/INC.md) | Инкремент | +| [DEC](Общего%20назначения/Двоичные%20арифметические/DEC.md) | Декремент | +| [NEG](Общего%20назначения/Двоичные%20арифметические/NEG.md) | Смена знака | +| [CMP](Общего%20назначения/Двоичные%20арифметические/CMP.md) | Сравнение | \ No newline at end of file diff --git a/X86/Общего назначения/Двоичные арифметические/CMP.md b/X86/Общего назначения/Двоичные арифметические/CMP.md new file mode 100644 index 0000000..822240b --- /dev/null +++ b/X86/Общего назначения/Двоичные арифметические/CMP.md @@ -0,0 +1,26 @@ +| Opcode | Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description | +| ---------------- | ---------------- | ----- | ----------- | --------------- | -------------------------------------------------- | +| 3C ib | CMP AL, imm8 | I | Valid | Valid | Compare imm8 with AL. | +| 3D iw | CMP AX, imm16 | I | Valid | Valid | Compare imm16 with AX. | +| 3D id | CMP EAX, imm32 | I | Valid | Valid | Compare imm32 with EAX. | +| REX.W + 3D id | CMP RAX, imm32 | I | Valid | N.E. | Compare imm32 sign-extended to 64-bits with RAX. | +| 80 /7 ib | CMP r/m8, imm8 | MI | Valid | Valid | Compare imm8 with r/m8. | +| REX + 80 /7 ib | CMP r/m8\*, imm8 | MI | Valid | N.E. | Compare imm8 with r/m8. | +| 81 /7 iw | CMP r/m16, imm16 | MI | Valid | Valid | Compare imm16 with r/m16. | +| 81 /7 id | CMP r/m32, imm32 | MI | Valid | Valid | Compare imm32 with r/m32. | +| REX.W + 81 /7 id | CMP r/m64, imm32 | MI | Valid | N.E. | Compare imm32 sign-extended to 64-bits with r/m64. | +| 83 /7 ib | CMP r/m16, imm8 | MI | Valid | Valid | Compare imm8 with r/m16. | +| 83 /7 ib | CMP r/m32, imm8 | MI | Valid | Valid | Compare imm8 with r/m32. | +| REX.W + 83 /7 ib | CMP r/m64, imm8 | MI | Valid | N.E. | Compare imm8 with r/m64. | +| 38 /r | CMP r/m8, r8 | MR | Valid | Valid | Compare r8 with r/m8. | +| REX + 38 /r | CMP r/m8\*, r8\* | MR | Valid | N.E. | Compare r8 with r/m8. | +| 39 /r | CMP r/m16, r16 | MR | Valid | Valid | Compare r16 with r/m16. | +| 39 /r | CMP r/m32, r32 | MR | Valid | Valid | Compare r32 with r/m32. | +| REX.W + 39 /r | CMP r/m64,r64 | MR | Valid | N.E. | Compare r64 with r/m64. | +| 3A /r | CMP r8, r/m8 | RM | Valid | Valid | Compare r/m8 with r8. | +| REX + 3A /r | CMP r8\*, r/m8\* | RM | Valid | N.E. | Compare r/m8 with r8. | +| 3B /r | CMP r16, r/m16 | RM | Valid | Valid | Compare r/m16 with r16. | +| 3B /r | CMP r32, r/m32 | RM | Valid | Valid | Compare r/m32 with r32. | +| REX.W + 3B /r | CMP r64, r/m64 | RM | Valid | N.E. | Compare r/m64 with r64. | + +> * In64-bit mode, r/m8 cannot been coded to access the following byte registers if a REX prefix is used: AH, BH, CH, DH. \ No newline at end of file diff --git a/X86/Общего назначения/Двоичные арифметические/DEC.md b/X86/Общего назначения/Двоичные арифметические/DEC.md new file mode 100644 index 0000000..7a48f8b --- /dev/null +++ b/X86/Общего назначения/Двоичные арифметические/DEC.md @@ -0,0 +1,11 @@ +| Opcode | Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description | +| ------------- | ------------ | ----- | ----------- | --------------- | ----------------------- | +| FE /1 | DEC _r/m8_ | M | Valid | Valid | Decrement _r/m8_ by 1. | +| REX + FE /1 | DEC _r/m8_\* | M | Valid | N.E. | Decrement _r/m8_ by 1. | +| FF /1 | DEC _r/m16_ | M | Valid | Valid | Decrement _r/m16_ by 1. | +| FF /1 | DEC _r/m32_ | M | Valid | Valid | Decrement _r/m32_ by 1. | +| REX.W + FF /1 | DEC _r/m64_ | M | Valid | N.E. | Decrement _r/m64_ by 1. | +| 48+rw | DEC _r16_ | O | N.E. | Valid | Decrement _r16_ by 1. | +| 48+rd | DEC _r32_ | O | N.E. | Valid | Decrement _r32_ by 1. | + +> * In64-bit mode, r/m8 cannot been coded to access the following byte registers if a REX prefix is used: AH, BH, CH, DH. \ No newline at end of file diff --git a/X86/Общего назначения/Двоичные арифметические/INC.md b/X86/Общего назначения/Двоичные арифметические/INC.md new file mode 100644 index 0000000..125793c --- /dev/null +++ b/X86/Общего назначения/Двоичные арифметические/INC.md @@ -0,0 +1,13 @@ +| Opcode | Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description | +| ------------- | ----------- | ----- | ----------- | --------------- | ----------------------------------- | +| FE /0 | INC r/m8 | M | Valid | Valid | Increment r/m byte by 1. | +| REX + FE /0 | INC r/m8\* | M | Valid | N.E. | Increment r/m byte by 1. | +| FF /0 | INC r/m16 | M | Valid | Valid | Increment r/m word by 1. | +| FF /0 | INC r/m32 | M | Valid | Valid | Increment r/m doubleword by 1. | +| REX.W + FF /0 | INC r/m64 | M | Valid | N.E. | Increment r/m quadword by 1. | +| 40+ rw\*\* | INC r16 | O | N.E. | Valid | Increment word register by 1. | +| 40+ rd | INC r32 | O | N.E. | Valid | Increment doubleword register by 1. | + +> \*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. +> +> \*\*40H through 47H are REX prefixes in 64-bit mode. \ No newline at end of file diff --git a/X86/Общего назначения/Двоичные арифметические/NEG.md b/X86/Общего назначения/Двоичные арифметические/NEG.md new file mode 100644 index 0000000..a2f977d --- /dev/null +++ b/X86/Общего назначения/Двоичные арифметические/NEG.md @@ -0,0 +1,9 @@ +| Opcode | Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description | +| ------------- | ----------- | ----- | ----------- | --------------- | ------------------------------ | +| F6 /3 | NEG r/m8 | M | Valid | Valid | Two's complement negate r/m8. | +| REX + F6 /3 | NEG r/m8\* | M | Valid | N.E. | Two's complement negate r/m8. | +| F7 /3 | NEG r/m16 | M | Valid | Valid | Two's complement negate r/m16. | +| F7 /3 | NEG r/m32 | M | Valid | Valid | Two's complement negate r/m32. | +| REX.W + F7 /3 | NEG r/m64 | M | Valid | N.E. | Two's complement negate 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. \ No newline at end of file