diff --git a/.obsidian/workspace-mobile.json b/.obsidian/workspace-mobile.json index eb09c00..ed8e670 100644 --- a/.obsidian/workspace-mobile.json +++ b/.obsidian/workspace-mobile.json @@ -4,17 +4,17 @@ "type": "split", "children": [ { - "id": "73e5a9279ce077c6", + "id": "0a9a3914929b7205", "type": "tabs", "children": [ { - "id": "908ebfd0d59a0fdb", + "id": "6a0ff7f9aaa2f335", "type": "leaf", "state": { "type": "markdown", "state": { - "file": "X86/Общего назначения.md", - "mode": "source", + "file": "Оглавление.md", + "mode": "preview", "source": true } } @@ -85,7 +85,7 @@ "state": { "type": "backlink", "state": { - "file": "X86/Общего назначения.md", + "file": "Оглавление.md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -102,7 +102,7 @@ "state": { "type": "outgoing-link", "state": { - "file": "X86/Общего назначения.md", + "file": "Оглавление.md", "linksCollapsed": true, "unlinkedCollapsed": false } @@ -114,7 +114,7 @@ "state": { "type": "outline", "state": { - "file": "X86/Общего назначения.md" + "file": "Оглавление.md" } } }, @@ -141,15 +141,18 @@ "homepage:Open homepage": false } }, - "active": "de240db6ce2a66fa", + "active": "6a0ff7f9aaa2f335", "lastOpenFiles": [ + "Оглавление.md", + "X86/Общего назначения/Двоичные арифметические/SUB.md", + "X86/Общего назначения/Двоичные арифметические/ADC.md", + "X86/Общего назначения.md", + "X86/Общего назначения/Двоичные арифметические/ADD.md", "X86/Общего назначения/Двоичные арифметические", "X86/Общего назначения/Передачи данных/MOVZX.md", "X86/Общего назначения/Передачи данных/MOVSX(D).md", - "X86/Общего назначения.md", "X86/Общего назначения/Передачи данных/CBW,CWDE,CDQE.md", "X86.md", - "Оглавление.md", "FASM.md", "X86/Общего назначения/Передачи данных/CWD,CDQ,CQO.md", "X86/Общего назначения/Передачи данных/OUT.md", @@ -169,8 +172,6 @@ "X86/Общего назначения/Передачи данных/MOV.md", "X86/Общего назначения/Передачи данных/XADD.md", "X86/Общего назначения/Передачи данных/BSWAP.md", - "X86/Общего назначения/Условия.md", - "Команды.md", "Untitled", "Общегоы/Общего назначения", "Общегоы", @@ -178,7 +179,6 @@ "Untitled.canvas", "Общего_назначения", "X86/Общего назначения/Передачи данных", - "X86/Общего назначения", - "X86" + "X86/Общего назначения" ] } \ No newline at end of file diff --git a/X86/Общего назначения.md b/X86/Общего назначения.md index dc3962e..e5154c1 100644 --- a/X86/Общего назначения.md +++ b/X86/Общего назначения.md @@ -23,17 +23,17 @@ ## Двоичные арифметические команды -| Команды | Описание | -| -------:|:--------------------- | -| ADD | Сложение | -| ADC | Сложение с переносом | -| SUB | Вычитание | -| SBB | Вычитание с заемом | -| IMUL | Знаковое умножение | -| MUL | Беззнаковое умножение | -| IDIV | Знаковое деление | -| DIV | Беззнаковое деление | -| INC | Инкремент | -| DEC | Декремент | -| NEG | Смена знака | -| CMP | Сравнение | \ No newline at end of file +| Команды | Описание | +| -----------------------------------------------------------:|:--------------------- | +| [ADD](Общего%20назначения/Двоичные%20арифметические/ADD.md) | Сложение | +| [ADC](Общего%20назначения/Двоичные%20арифметические/ADC.md) | Сложение с переносом | +| SUB | Вычитание | +| SBB | Вычитание с заемом | +| IMUL | Знаковое умножение | +| MUL | Беззнаковое умножение | +| IDIV | Знаковое деление | +| DIV | Беззнаковое деление | +| INC | Инкремент | +| DEC | Декремент | +| NEG | Смена знака | +| CMP | Сравнение | \ No newline at end of file diff --git a/X86/Общего назначения/Двоичные арифметические/ADC.md b/X86/Общего назначения/Двоичные арифметические/ADC.md new file mode 100644 index 0000000..f4d3b6b --- /dev/null +++ b/X86/Общего назначения/Двоичные арифметические/ADC.md @@ -0,0 +1,26 @@ +| Opcode | Instruction | Op/En | 64-bit Mode | Compat/Leg Mode | Description | +| ---------------- | ---------------- | ----- | ----------- | --------------- | ----------------------------------------------------- | +| 14 ib | ADC AL, imm8 | I | Valid | Valid | Add with carry imm8 to AL. | +| 15 iw | ADC AX, imm16 | I | Valid | Valid | Add with carry imm16 to AX. | +| 15 id | ADC EAX, imm32 | I | Valid | Valid | Add with carry imm32 to EAX. | +| REX.W + 15 id | ADC RAX, imm32 | I | Valid | N.E. | Add with carry imm32 sign extended to 64-bits to RAX. | +| 80 /2 ib | ADC r/m8, imm8 | MI | Valid | Valid | Add with carry imm8 to r/m8. | +| REX + 80 /2 ib | ADC r/m8\*, imm8 | MI | Valid | N.E. | Add with carry imm8 to r/m8. | +| 81 /2 iw | ADC r/m16, imm16 | MI | Valid | Valid | Add with carry imm16 to r/m16. | +| 81 /2 id | ADC r/m32, imm32 | MI | Valid | Valid | Add with CF imm32 to r/m32. | +| REX.W + 81 /2 id | ADC r/m64, imm32 | MI | Valid | N.E. | Add with CF imm32 sign extended to 64-bits to r/m64. | +| 83 /2 ib | ADC r/m16, imm8 | MI | Valid | Valid | Add with CF sign-extended imm8 to r/m16. | +| 83 /2 ib | ADC r/m32, imm8 | MI | Valid | Valid | Add with CF sign-extended imm8 into r/m32. | +| REX.W + 83 /2 ib | ADC r/m64, imm8 | MI | Valid | N.E. | Add with CF sign-extended imm8 into r/m64. | +| 10 /r | ADC r/m8, r8 | MR | Valid | Valid | Add with carry byte register to r/m8. | +| REX + 10 /r | ADC r/m8\*, r8\* | MR | Valid | N.E. | Add with carry byte register to r/m64. | +| 11 /r | ADC r/m16, r16 | MR | Valid | Valid | Add with carry r16 to r/m16. | +| 11 /r | ADC r/m32, r32 | MR | Valid | Valid | Add with CF r32 to r/m32. | +| REX.W + 11 /r | ADC r/m64, r64 | MR | Valid | N.E. | Add with CF r64 to r/m64. | +| 12 /r | ADC r8, r/m8 | RM | Valid | Valid | Add with carry r/m8 to byte register. | +| REX + 12 /r | ADC r8\*, r/m8\* | RM | Valid | N.E. | Add with carry r/m64 to byte register. | +| 13 /r | ADC r16, r/m16 | RM | Valid | Valid | Add with carry r/m16 to r16. | +| 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. | + +> *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 diff --git a/X86/Общего назначения/Двоичные арифметические/ADD.md b/X86/Общего назначения/Двоичные арифметические/ADD.md new file mode 100644 index 0000000..94cab36 --- /dev/null +++ b/X86/Общего назначения/Двоичные арифметические/ADD.md @@ -0,0 +1,26 @@ +| Opcode | Instruction | Op/En | 64-bit Mode | Compat/Leg Mode | Description | +| ---------------- | ---------------- | ----- | ----------- | --------------- | -------------------------------------------- | +| 04 ib | ADD AL, imm8 | I | Valid | Valid | Add imm8 to AL. | +| 05 iw | ADD AX, imm16 | I | Valid | Valid | Add imm16 to AX. | +| 05 id | ADD EAX, imm32 | I | Valid | Valid | Add imm32 to EAX. | +| REX.W + 05 id | ADD RAX, imm32 | I | Valid | N.E. | Add imm32 sign-extended to 64-bits to RAX. | +| 80 /0 ib | ADD r/m8, imm8 | MI | Valid | Valid | Add imm8 to r/m8. | +| REX + 80 /0 ib | ADD r/m8\*, imm8 | MI | Valid | N.E. | Add sign-extended imm8 to r/m8. | +| 81 /0 iw | ADD r/m16, imm16 | MI | Valid | Valid | Add imm16 to r/m16. | +| 81 /0 id | ADD r/m32, imm32 | MI | Valid | Valid | Add imm32 to r/m32. | +| REX.W + 81 /0 id | ADD r/m64, imm32 | MI | Valid | N.E. | Add imm32 sign-extended to 64-bits to r/m64. | +| 83 /0 ib | ADD r/m16, imm8 | MI | Valid | Valid | Add sign-extended imm8 to r/m16. | +| 83 /0 ib | ADD r/m32, imm8 | MI | Valid | Valid | Add sign-extended imm8 to r/m32. | +| REX.W + 83 /0 ib | ADD r/m64, imm8 | MI | Valid | N.E. | Add sign-extended imm8 to r/m64. | +| 00 /r | ADD r/m8, r8 | MR | Valid | Valid | Add r8 to r/m8. | +| REX + 00 /r | ADD r/m8\*, r8\* | MR | Valid | N.E. | Add r8 to r/m8. | +| 01 /r | ADD r/m16, r16 | MR | Valid | Valid | Add r16 to r/m16. | +| 01 /r | ADD r/m32, r32 | MR | Valid | Valid | Add r32 to r/m32. | +| REX.W + 01 /r | ADD r/m64, r64 | MR | Valid | N.E. | Add r64 to r/m64. | +| 02 /r | ADD r8, r/m8 | RM | Valid | Valid | Add r/m8 to r8. | +| REX + 02 /r | ADD r8\*, r/m8\* | RM | Valid | N.E. | Add r/m8 to r8. | +| 03 /r | ADD r16, r/m16 | RM | Valid | Valid | Add r/m16 to r16. | +| 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. | + +> *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 diff --git a/X86/Общего назначения/Двоичные арифметические/SUB.md b/X86/Общего назначения/Двоичные арифметические/SUB.md new file mode 100644 index 0000000..e8718af --- /dev/null +++ b/X86/Общего назначения/Двоичные арифметические/SUB.md @@ -0,0 +1,26 @@ +| Opcode | Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description | +| ---------------- | ---------------- | ----- | ----------- | --------------- | --------------------------------------------------- | +| 2C ib | SUB AL, imm8 | I | Valid | Valid | Subtract imm8 from AL. | +| 2D iw | SUB AX, imm16 | I | Valid | Valid | Subtract imm16 from AX. | +| 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. | +| 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. | +| 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. | +| REX.W + 81 /5 id | SUB r/m64, imm32 | MI | Valid | N.E. | Subtract imm32 sign-extended to 64-bits from r/m64. | +| 83 /5 ib | SUB r/m16, imm8 | MI | Valid | Valid | Subtract sign-extended imm8 from r/m16. | +| 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. | +| 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. | +| 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. | +| 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. | +| REX + 2A /r | SUB r81, r/m81 | 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 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. | + +> *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