Skip to content

Commit 7e4d2e1

Browse files
committed
docs(isa): сильное обнавление ISA
1 parent 7f1a867 commit 7e4d2e1

File tree

1 file changed

+40
-41
lines changed

1 file changed

+40
-41
lines changed

ISA.md

Lines changed: 40 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -41,50 +41,49 @@
4141

4242
### Таблица команд
4343
V = Аргумент
44-
F = `Flags`
4544
ZF = `Zero flag`
4645
CF = `Carry flag`
4746

48-
| Базовый код | Мнемоника | Аргумент | Влияние на флаги | Влияние на регистры | Действие команды (Порядок сдесь ОЧЕНЬ важен) |
49-
| ----------- | ---------- | -------- | ---------------- | ------------------- | ------------------------------------------------- |
50-
| 0x00 | NOP | Нет | Нет | Нет | Ничего |
51-
| 0x01 | NOT R1 | Нет | ZF, CF | R1 | CF = 0; R1 = ~R1 |
52-
| 0x02 | ADD R1, R2 | Нет | ZF, CF | R1 | R1 += R2; CF = R1 < R2 |
53-
| 0x03 | SUB R1, R2 | Нет | ZF, CF | R1 | CF = R1 < R2; R1 -= R2 |
54-
| 0x04 | AND R1, R2 | Нет | ZF, CF | R1 | R1 &= R2; CF = 0 |
55-
| 0x05 | OR R1, R2 | Нет | ZF, CF | R1 | R1 |= R2; CF = 0 |
56-
| 0x06 | SHL R1 | Нет | ZF, CF | R1 | CF = R1\[11\]; R1 = R1 << 1 |
57-
| 0x07 | SHR R1 | Нет | ZF, CF | R1 | CF = R1\[0\]; R1 = R1 >> 1 (Логический сдвиг) |
58-
| 0x08 | SAR R1 | Нет | ZF, CF | R1 | CF = R1\[0\]; R1 = R1 >> 1 (Арефметический сдвиг) |
59-
| 0x09 | XOR R1, R2 | Нет | ZF, CF | R1 | R1 ^= R2; CF = 0 |
60-
| 0x0A | INC R1 | Нет | ZF | R1 | R1 += 1 |
61-
| 0x0B | DEC R1 | Нет | ZF | R1 | R1 -= 1 |
62-
| 0x0C | CMP R1, R2 | Нет | ZF, CF | Нет | CF = R1 < R2; R1 - R2 |
63-
| 0x0D | CMP R1, V | Да | ZF, CF | Нет | CF = R1 < V; R1 - V |
64-
| 0x0E | LDI R1, V | Да | Нет | R1 | R1 = V |
65-
| 0x0F | MOV R1, R2 | Нет | Нет | R1 | R1 = R2 |
66-
| 0x10 | ST R1, R2 | Нет | Нет | Нет | MEM\[R2\] = R1 |
67-
| 0x11 | LD R1, R2 | Нет | Нет | R1 | R1 = MEM\[R2\] |
68-
| 0x12 | ST R1, V | Да | Нет | Нет | MEM\[V\] = R1 |
69-
| 0x13 | LD R1, V | Да | Нет | R1 | R1 = MEM\[V\] |
70-
| 0x14 | PUSH R1 | Нет | Нет | SP | Помещяет R1 в стек |
71-
| 0x15 | POP R1 | Нет | Нет | SP | Извлекает R1 из стека |
72-
| 0x16 | JZ R1 | Нет | Нет | PC | Если ZF, то PC = R1 |
73-
| 0x17 | JNZ R1 | Нет | Нет | PC | Если !ZF, то PC = R1 |
74-
| 0x18 | JC R1 | Нет | Нет | PC | Если OF, то PC = R1 |
75-
| 0x19 | JNC R1 | Нет | Нет | PC | Если !OF, то PC = R1 |
76-
| 0x1A | JZ V | Да | Нет | PC | Если ZF, то PC = V |
77-
| 0x1B | JNZ V | Да | Нет | PC | Если !ZF, то PC = V |
78-
| 0x1C | JC V | Да | Нет | PC | Если OF, то PC = V |
79-
| 0x1D | JNC V | Да | Нет | PC | Если !OF, то PC = V |
80-
| 0x1E | JMP R1 | Нет | Нет | PC | PC = R1 |
81-
| 0x1F | JMP V | Да | Нет | PC | PC = V |
82-
| 0x20 | CALL R1 | Нет | Нет | PC | Помещяет PC в стек и PC = R1 |
83-
| 0x21 | CALL V | Да | Нет | PC | Помещяет PC в стек и PC = V |
84-
| 0x22 | RET | Нет | Нет | PC | Извлекает PC из стека |
85-
| 0x23 | HLT | Нет | Нет | Нет | Завершает работу процесора |
86-
| 0x24 | PUSHA | Нет | Нет | SP | Помещяет регистры все регистры в стек[^pusha] |
87-
| 0x25 | POPA | Нет | Нет | A, B, C, D, F, SP | Извлекает все регистры из стека[^popa] |
47+
| Базовый код | Мнемоника | Аргумент | Влияние на флаги | Влияние на регистры | Действие команды (Порядок сдесь ОЧЕНЬ важен) |
48+
| ----------- | ----------- | -------- | ---------------- | --------------------- | --------------------------------------------- |
49+
| 0x00 | NOP | Нет | Нет | Нет | Ничего |
50+
| 0x01 | HLT | Нет | Нет | Нет | Завершает работу процесора |
51+
| 0x02 | AND R1, R2 | Нет | ZF, CF | R1 | R1 &= R2; CF = 0 |
52+
| 0x03 | NOT R1 | Нет | ZF, CF | R1 | R1 = ~R1; CF = 0 |
53+
| 0x04 | OR R1, R2 | Нет | ZF, CF | R1 | R1 |= R2; CF = 0 |
54+
| 0x05 | XOR R1, R2 | Нет | ZF, CF | R1 | R1 ^= R2; CF = 0 |
55+
| 0x06 | SHL R1 | Нет | ZF, CF | R1 | CF = R1\[11\]; R1 <<= 1 |
56+
| 0x07 | SHR R1 | Нет | ZF, CF | R1 | CF = R1\[0\]; R1 >>= 1 (Логический сдвиг) |
57+
| 0x08 | ADD R1, R2 | Нет | ZF, CF | R1 | R1 += R2; CF = R1 < R2 |
58+
| 0x09 | SAR R1 | Нет | ZF, CF | R1 | CF = R1\[0\]; R1 >>= 1 (Арефметический сдвиг) |
59+
| 0x0A | INC R1 | Нет | ZF | R1 | R1 += 1 |
60+
| 0x0B | DEC R1 | Нет | ZF | R1 | R1 -= 1 |
61+
| 0x0C | CMP R1, R2 | Нет | ZF, CF | Нет | CF = R1 < R2; R1 - R2 |
62+
| 0x0D | CMP R1, V | Да | ZF, CF | Нет | CF = R1 < V; R1 - V |
63+
| 0x0E | MOV R1, R2 | Нет | Нет | R1 | R1 = R2 |
64+
| 0x0F | LDI R1, V | Да | Нет | R1 | R1 = V |
65+
| 0x10 | ST R1, R2 | Нет | Нет | Нет | MEM\[R2\] = R1 |
66+
| 0x11 | ST R1, V | Да | Нет | Нет | MEM\[V\] = R1 |
67+
| 0x12 | LD R1, R2 | Нет | Нет | R1 | R1 = MEM\[R2\] |
68+
| 0x13 | LD R1, V | Да | Нет | R1 | R1 = MEM\[V\] |
69+
| 0x14 | PUSH R1 | Нет | Нет | SP | Помещяет R1 в стек |
70+
| 0x15 | POP R1 | Нет | Нет | SP | Извлекает R1 из стека |
71+
| 0x16 | JMP R1 | Нет | Нет | PC | PC = R1 |
72+
| 0x17 | JMP V | Да | Нет | PC | PC = V |
73+
| 0x18 | JZ R1 | Нет | Нет | PC | Если ZF, то PC = R1 |
74+
| 0x19 | JZ V | Да | Нет | PC | Если ZF, то PC = V |
75+
| 0x1A | JC R1 | Нет | Нет | PC | Если OF, то PC = R1 |
76+
| 0x1B | JC V | Да | Нет | PC | Если OF, то PC = V |
77+
| 0x1C | JNZ R1 | Нет | Нет | PC | Если !ZF, то PC = R1 |
78+
| 0x1D | JNZ V | Да | Нет | PC | Если !ZF, то PC = V |
79+
| 0x1E | JNC R1 | Нет | Нет | PC | Если !OF, то PC = R1 |
80+
| 0x1F | JNC V | Да | Нет | PC | Если !OF, то PC = V |
81+
| 0x20 | PUSHA | Нет | Нет | SP | Помещяет регистры все регистры в стек[^pusha] |
82+
| 0x21 | POPA | Нет | Нет | A, B, C, D, Flags, SP | Извлекает все регистры из стека[^popa] |
83+
| 0x22 | CALL R1 | Нет | Нет | PC | Помещяет PC в стек и PC = R1 |
84+
| 0x23 | CALL V | Да | Нет | PC | Помещяет PC в стек и PC = V |
85+
| 0x24 | RET | Нет | Нет | PC | Извлекает PC из стека |
86+
| 0x25 | XCNG R1, R2 | Нет | Нет | R1, R2 | Меняет R1 и R2 местами |
8887

8988
[^pusha]:
9089
Регистры помещяются в таком порядке: `Flags`, `D`, `C`, `B`, `A`

0 commit comments

Comments
 (0)