vault backup: 2024-01-05 21:26:13
This commit is contained in:
parent
9156c5eb18
commit
58f7052890
10
.obsidian/app.json
vendored
10
.obsidian/app.json
vendored
@ -22,6 +22,12 @@
|
||||
"editor:toggle-keyboard",
|
||||
"editor:configure-toolbar",
|
||||
"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
16
.obsidian/graph.json
vendored
@ -7,16 +7,16 @@
|
||||
"showOrphans": true,
|
||||
"collapse-color-groups": true,
|
||||
"colorGroups": [],
|
||||
"collapse-display": false,
|
||||
"collapse-display": true,
|
||||
"showArrow": true,
|
||||
"textFadeMultiplier": 0,
|
||||
"nodeSizeMultiplier": 1.52787610619469,
|
||||
"lineSizeMultiplier": 5,
|
||||
"collapse-forces": false,
|
||||
"centerStrength": 0.0714285714285714,
|
||||
"repelStrength": 0.771175726927939,
|
||||
"linkStrength": 1,
|
||||
"linkDistance": 250,
|
||||
"scale": 1.5884613927474214,
|
||||
"close": true
|
||||
"collapse-forces": true,
|
||||
"centerStrength": 0,
|
||||
"repelStrength": 9.92414664981037,
|
||||
"linkStrength": 0.486093552465234,
|
||||
"linkDistance": 383,
|
||||
"scale": 0.7401932494444989,
|
||||
"close": false
|
||||
}
|
2
.obsidian/plugins/obsidian-git/data.json
vendored
2
.obsidian/plugins/obsidian-git/data.json
vendored
@ -1,7 +1,7 @@
|
||||
{
|
||||
"commitMessage": "vault backup: {{date}}",
|
||||
"commitDateFormat": "YYYY-MM-DD HH:mm:ss",
|
||||
"autoSaveInterval": 0,
|
||||
"autoSaveInterval": 10,
|
||||
"autoPushInterval": 0,
|
||||
"autoPullInterval": 0,
|
||||
"autoPullOnBoot": true,
|
||||
|
44
.obsidian/workspace-mobile.json
vendored
44
.obsidian/workspace-mobile.json
vendored
@ -4,18 +4,18 @@
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "68d7c37b4d7272bb",
|
||||
"id": "38ced402f0e058bc",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "de27de3851d40181",
|
||||
"id": "d3c4775ae208c831",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "X86/Общего назначения.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
"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"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -126,7 +126,8 @@
|
||||
"state": {}
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"currentTab": 3
|
||||
},
|
||||
"left-ribbon": {
|
||||
"hiddenItems": {
|
||||
@ -140,17 +141,30 @@
|
||||
"homepage:Open homepage": false
|
||||
}
|
||||
},
|
||||
"active": "de27de3851d40181",
|
||||
"active": "d3c4775ae208c831",
|
||||
"lastOpenFiles": [
|
||||
"X86/Общего назначения/Условия.md",
|
||||
"X86/Общего назначения/Передачи данных/CMOVxx.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",
|
||||
"FASM.md",
|
||||
"X86/Общего назначения/Передачи данных/CMPXCHG.md",
|
||||
"X86/Общего назначения/Передачи данных/XCHG.md",
|
||||
"X86/Общего назначения/Передачи данных/CMOVxx.md",
|
||||
"X86/Общего назначения/Передачи данных/MOV.md",
|
||||
"X86/Общего назначения/Передачи данных/XADD.md",
|
||||
"X86.md",
|
||||
"FASM.md",
|
||||
"X86/Общего назначения/Передачи данных/BSWAP.md",
|
||||
"X86/Общего назначения/Условия.md",
|
||||
"Команды.md",
|
||||
"Команды 1.md",
|
||||
"Команды%2FОбщего назначения%2FПередачи данных%2FXCHG.md",
|
||||
"Untitled",
|
||||
|
@ -1,17 +1,17 @@
|
||||
## Команды передачи данных
|
||||
| Команды | Описание |
|
||||
|-------------:|:----------------------------------------------------- |
|
||||
| [MOV](MOV.md) | Присваивание |
|
||||
| [CMOVxx](CMOVxx.md) | Условное присваивание |
|
||||
| [XCHG](XCHG.md) | Обмен значений |
|
||||
| BSWAP | Перестановка байтов |
|
||||
| XADD | Обмен и сложение |
|
||||
| CMPXCHG | Сравнение и обмен |
|
||||
| CMPXCHG8B | Сравнение и обмен 8 байтов |
|
||||
| PUSH | Поместить значение в стек |
|
||||
| POP | Взять значение из стека |
|
||||
| PUSHA/PUSHAD | Поместить значения регистров общего назначения в стек |
|
||||
| POPA/POPAD | Взять значения регистров общего назначения из стека |
|
||||
| -------------------------------------------------------------------------------:|:----------------------------------------------------- |
|
||||
| [MOV](Общего%20назначения/Передачи%20данных/MOV.md) | Присваивание |
|
||||
| [CMOVxx](Общего%20назначения/Передачи%20данных/CMOVxx.md) | Условное присваивание |
|
||||
| [XCHG](Общего%20назначения/Передачи%20данных/XCHG.md) | Обмен значений |
|
||||
| [BSWAP](Общего%20назначения/Передачи%20данных/BSWAP.md) | Перестановка байтов |
|
||||
| [XADD](Общего%20назначения/Передачи%20данных/XADD.md) | Обмен и сложение |
|
||||
| [CMPXCHG](Общего%20назначения/Передачи%20данных/CMPXCHG.md) | Сравнение и обмен |
|
||||
| [CMPXCHG8B, CMPXCHG16B](Общего%20назначения/Передачи%20данных/CMPXCHG8(16)B.md) | Сравнение и обмен 8/16 байтов |
|
||||
| [PUSH](Общего%20назначения/Передачи%20данных/PUSH.md) | Поместить значение в стек |
|
||||
| [POP](Общего%20назначения/Передачи%20данных/POP.md) | Взять значение из стека |
|
||||
| [PUSHA/PUSHAD](Общего%20назначения/Передачи%20данных/PUSHA(D).md) | Поместить значения регистров общего назначения в стек |
|
||||
| [POPA/POPAD](Общего%20назначения/Передачи%20данных/POPA(D).md) | Взять значения регистров общего назначения из стека |
|
||||
| IN | Прочитать значение из порта ввода/вывода |
|
||||
| OUT | Записать значение в порт ввода/вывода |
|
||||
| CWD | Преобразовать Word в DWord |
|
||||
@ -20,3 +20,20 @@
|
||||
| CWDE | Преобразовать Word в DWord в регистре eax |
|
||||
| MOVSX | Присвоить и расширить с учетом знака |
|
||||
| MOVZX | Присвоить и расширить нулевым значением |
|
||||
|
||||
## Двоичные арифметические команды
|
||||
|
||||
| Команды | Описание |
|
||||
| -------:|:--------------------- |
|
||||
| ADD | Сложение |
|
||||
| ADC | Сложение с переносом |
|
||||
| SUB | Вычитание |
|
||||
| SBB | Вычитание с заемом |
|
||||
| IMUL | Знаковое умножение |
|
||||
| MUL | Беззнаковое умножение |
|
||||
| IDIV | Знаковое деление |
|
||||
| DIV | Беззнаковое деление |
|
||||
| INC | Инкремент |
|
||||
| DEC | Декремент |
|
||||
| NEG | Смена знака |
|
||||
| CMP | Сравнение |
|
4
X86/Общего назначения/Передачи данных/BSWAP.md
Normal file
4
X86/Общего назначения/Передачи данных/BSWAP.md
Normal 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. |
|
@ -1,7 +1,7 @@
|
||||
[Условия](Условия.md)
|
||||
|
||||
| Опкод | Инструкция | 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 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). |
|
||||
|
9
X86/Общего назначения/Передачи данных/CMPXCHG.md
Normal file
9
X86/Общего назначения/Передачи данных/CMPXCHG.md
Normal 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.
|
4
X86/Общего назначения/Передачи данных/CMPXCHG8(16)B.md
Normal file
4
X86/Общего назначения/Передачи данных/CMPXCHG8(16)B.md
Normal 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. |
|
8
X86/Общего назначения/Передачи данных/IN.md
Normal file
8
X86/Общего назначения/Передачи данных/IN.md
Normal 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. |
|
@ -1,5 +1,5 @@
|
||||
| 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. |
|
||||
| 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. |
|
||||
|
17
X86/Общего назначения/Передачи данных/POP.md
Normal file
17
X86/Общего назначения/Передачи данных/POP.md
Normal 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. |
|
4
X86/Общего назначения/Передачи данных/POPA(D).md
Normal file
4
X86/Общего назначения/Передачи данных/POPA(D).md
Normal 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. |
|
17
X86/Общего назначения/Передачи данных/PUSH.md
Normal file
17
X86/Общего назначения/Передачи данных/PUSH.md
Normal 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. |
|
4
X86/Общего назначения/Передачи данных/PUSHA(D).md
Normal file
4
X86/Общего назначения/Передачи данных/PUSHA(D).md
Normal 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. |
|
4
X86/Общего назначения/Передачи данных/XADD.md
Normal file
4
X86/Общего назначения/Передачи данных/XADD.md
Normal 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. |
|
@ -1,5 +1,5 @@
|
||||
| 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 r16, AX | O | Valid | Valid | Exchange AX with r16. |
|
||||
| 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. |
|
||||
| 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. |
|
||||
```
|
||||
* 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.
|
Loading…
x
Reference in New Issue
Block a user