12:03
Более упрощенная система команд ЛИС-иц — Лисья нора
§ Система команд
Вторая версия набора команд, в которой убраны 3х операндные инструкции, поскольку в них не было необходимости. Новое имя процессора: Lis Instruction Set [LIS]| Перемещения | |||||
|---|---|---|---|---|---|
| ID | Мнем | Оп | Байт | T | Описание |
00 |
MOV | A,u32 | AA ** | 6 | Загрузка 32-битного значения в регистр A |
01 |
MOV | A,B | BB AA | 3 | Загрузка регистра B в регистр A |
02 |
MOVU | A,u8 | AA ** | 3 | Загрузка 8-битного беззнакового значения в регистр A |
03 |
MOVS | A,s8 | AA ** | 3 | Загрузка 8-битного знакового значения в регистр A |
04 |
MOVB | A,[B] | BB AA | 4 | Извлечь байт из памяти и запись в A с очисткой старших 24 бит в 0 |
05 |
MOVW | A,[B] | BB AA | 5 | Извлечь слово из памяти и запись в A с очисткой старших 16 бит в 0 |
06 |
MOVD | A,[B] | BB AA | 7 | Извлечь байт из памяти и запись в A с очисткой старших 24 бит в 0 |
07 |
MOVB | [A],B | BB AA | 5 | Запись младших 8 бит регистра B в память A |
08 |
MOVW | [A],B | BB AA | 6 | Запись младших 16 бит регистра B в память A |
09 |
MOVD | [A],B | BB AA | 8 | Запись 32 бит регистра B в память A |
0A |
COPY | A,B,C | AA BB CC | 6+2n | Скопировать из адреса A в адрес B, количество копирований C |
| Арифметика | |||||
| ID | Мнем | Оп | Байт | T | Описание |
0B |
MUL | A,B | AA BB | 5 | Умножение числа A x B => A |
0C |
DIV | A,B | AA BB | 36 | Деление числа A / B, результат в A, остаток B |
| АЛУ | |||||
| ID | Мнем | Оп | Байт | T | Описание |
10 |
ADD | A,B | AA BB | 4 | Сложить A+B и записать в A |
11 |
ADC | A,B | AA BB | 4 | Сложить A+B с заемом и записать в A |
12 |
SUB | A,B | AA BB | 4 | Вычесть A-B и записать в A |
13 |
SBC | A,B | AA BB | 4 | Вычесть A-B с заемом и записать в A |
14 |
AND | A,B | AA BB | 4 | Побитовое A & B, записать в A |
15 |
XOR | A,B | AA BB | 4 | Побитовое A ^ B, записать в A |
16 |
OR | A,B | AA BB | 4 | Побитовое A | B, записать в A |
17 |
CMP | A,B | AA BB | 4 | Вычесть A-B, но записать только флаги |
| Сдвиговые | |||||
| ID | Мнем | Оп | Байт | T | Описание |
18 |
ROL | A,B | AA BB | 4 | Циклический сдвиг регистра A влево |
19 |
ROR | A,B | AA BB | 4 | Циклический сдвиг регистра A вправо |
1A |
SHL | A,B | AA BB | 4 | Логический сдвиг регистра A влево |
1B |
SHR | A,B | AA BB | 4 | Логический сдвиг регистра A вправо |
1C |
RCL | A,B | AA BB | 4 | Сдвиг регистра A влево, заполняя младшие биты значением CF |
1D |
RCR | A,B | AA BB | 4 | Сдвиг регистра A вправо, заполняя старшие биты значением CF |
1E |
INC | A,s | AA ** | 3 | Добавить к регистру A знаковое число s8 |
1F |
SAR | A,B | AA BB | 4 | Сдвиг регистра A вправо, заполняя старшие биты значением старшего 31-го бита |
| Переходы | |||||
| ID | Мнем | Оп | Байт | T | Описание |
20 |
JR | b8 | ** | 2 | Короткий переход -128..127 |
21 |
JP | b16 | ** | 3 | Средний переход -32768..32767 |
22 |
JMP | u32 | ** | 5 | Перейти по 32-х битному адресу |
23 |
JMP | A | AA | 3 | Перейти на адрес, указанный в регистре A |
24 |
JC | b8 | ** | 1* | Короткий переход если CF=1 |
25 |
JNC | b8 | ** | 1* | Короткий переход если CF=0 |
26 |
JZ | b8 | ** | 1* | Короткий переход если ZF=1 |
27 |
JNZ | b8 | ** | 1* | Короткий переход если ZF=0 |
28 |
JBE | b8 | ** | 1* | Короткий переход если CF=1 AND ZF=1 |
29 |
JA | b8 | ** | 1* | Короткий переход если CF=0 OR ZF=0 |
2A |
JS | b8 | ** | 1* | Короткий переход если SF=1 |
2B |
JNS | b8 | ** | 1* | Короткий переход если SF=0 |
2C |
JL | b8 | ** | 1* | Короткий переход если SF!=OF :: A < B |
2D |
JNL | b8 | ** | 1* | Короткий переход если SF=OF :: A >= B |
2E |
JLE | b8 | ** | 1* | Короткий переход если SF!=OF OR ZF=1 :: A <= B |
2F |
JG | b8 | ** | 1* | Короткий переход если SF=OF AND ZF=0 :: A > B |
| Стековые | |||||
| ID | Мнем | Оп | Байт | T | Описание |
30 |
PUSH | regs | nn ... | 4+n | Запись nn регистров в стек, номера их следуют за параметром nn |
31 |
POP | regs | nn ... | 3+n | Извлечение из стека nn регистров, номера их следуют за параметром nn |
32 |
CALL | u32 | ** | 5 | Вызов процедуры по адресу 32 бит |
33 |
CALL | A | AA | 3 | Вызов процедуры по адресу значения регистра A |
34 |
RET | 1 | Возврат из процедуры | ||