Форматы инструкций¶
Сводная таблица¶
| ID | Имя | Длина | Синтаксис |
|---|---|---|---|
00h |
S0 | 2B | <OP> <-> |
01h |
S1 | 3B | <OP> <-> <rD> |
02h |
S2 | 3B | <OP> <-> <rS> |
03h |
S3 | 3B | <OP> <-> <rS/D> |
04h |
S4 | 3B | <OP> <-> <Imm8> |
05h |
S5 | 4B | <OP> <-> <Imm16> |
06h |
S6 | 5B | <OP> <-> <Imm24> |
07h |
A0 | 4B | <OP> <SF> <rS/D> <rS> |
08h |
A1 | 4B | <OP> <SF> <rS/D> <Imm8> |
09h |
A2 | 5B | <OP> <SF> <rS/D> <Imm16> |
0Ah |
A3 | 6B | <OP> <SF> <rS/D> <Imm24> |
0Bh |
J0 | 6B | <OP> <-> <COND> <Imm24> |
0Ch |
D0 | 4B | <OP> <SF> <rD> <rS> |
0Dh |
D1B | 4B | <OP> <SF> <rD> <Imm8> |
0Eh |
D1W | 5B | <OP> <SF> <rD> <Imm16> |
0Fh |
D1A | 6B | <OP> <SF> <rD> <Imm24> |
10h |
D2F | 6B | <OP> <SF> <rS> <Addr24> |
11h |
D2S | 5B | <OP> <SF> <rS> <rB>:<rA> |
12h |
D2SI | 7B | <OP> <SF> <rS> <rB>:<Addr24> |
13h |
D2R | 4B | <OP> <SF> <rS> <rA> |
14h |
D3F | 6B | <OP> <SF> <rD> <Addr24> |
15h |
D3S | 5B | <OP> <SF> <rD> <rB>:<rA> |
16h |
D3SI | 7B | <OP> <SF> <rD> <rB>:<Addr24> |
17h |
D3R | 4B | <OP> <SF> <rD> <rA> |
18h |
I0 | 6B | <OP> <-> <imm8> <imm24> |
Пояснения к обозначениям¶
<OP>- код операции (opcode).<SF>- суффикс / режим (byte, word, addr, …).<rD>- регистр-приёмник (destination).<rS>- регистр-источник (source).<rS/D>- регистр, который может быть и источником, и приёмником.<rA>,<rB>- регистры базового и индексного смещения.<Imm8>,<Imm16>,<Imm24>- непосредственные значения соответствующей разрядности.<Addr24>- 24-битный абсолютный адрес.<COND>- код условия перехода.
Длина инструкции¶
Длина инструкции кодируется в PLA-таблице LENGHT_PLA. Выходное значение - это длина − 2:
| Выход | Длина |
|---|---|
000 |
2 байта |
001 |
3 байта |
010 |
4 байта |
011 |
5 байт |
100 |
6 байт |
101 |
7 байт |
Например, формат S0 даёт на выходе 000 → 2 байта, а D2SI - 101 → 7 байт.