§ Базовые сведения
В данном случае ЛИС — это Легкая Информационная Система, процессор, который имеет небольшое количество инструкции. Особенность моего процессора:- Тип — CISC
- Скорость — низкая
- Разрядность — 32 бита
- Шина данных — 8 бит
- Количество регистров — 256 регистров
- Размер стека — 1024 элементов, 32х битный
- Группы инструкции — перемещения, арифметико-логические, сдвиговые, условные и безусловные переходы, стековые, умножение и деление
- Операции — регистр-регистр
- Защищенный режим — опционально
- Доступ к портам — осуществляется через доступ к памяти
§ Архитектура
Набор флагов: O-Overflow, S-Sign, Z-Zero, C-Carry. Всего лишь 4 флага, которые устанавливаются после выполнении операции АЛУ и сдвигов.§ Набор инструкции (ISA)
Перемещения | ||||
---|---|---|---|---|
OPC | Мнемоника | Операнды | Циклов | Описание |
00 | MOV | AA ** | 6 | Поместить непосредственное значение двойного слова в регистр A |
01 | MOV | BB AA | 3 | Скопировать регистр B в регистр A |
02 | MOVB A, [B] | BB AA | 5 | Извлечь байт из памяти и запись в A с очисткой старших 24 бит в 0 |
03 | MOVW A, [B] | BB AA | 6 | Извлечь слово из памяти и запись в A с очисткой старших 16 бит в 0 |
04 | MOVD A, [B] | BB AA | 8 | Извлечь двойное слово из памяти в регистр A |
05 | MOVB [A], B | BB AA | 5 | Запись младших 8 бит регистра B в память A |
06 | MOVW [A], B | BB AA | 6 | Запись младших 16 бит регистра B в память A (little endian) |
07 | MOVD [A], B | BB AA | 8 | Запись регистра B в память A (little endian) |
1E | MOVS | AA ** | 3 | Помещение знакорасширенного значения байта в регистр A |
Вычисление | ||||
OPC | Мнемоника | Операнды | Циклов | Описание |
08 | MUL | BB CC AA RR | 5 | Беззнаковое умножение B x C с записью младшего результата в A, старшего в R |
09 | DIV | BB CC AA RR | 38 | Беззнаковое деление B на C с результатом в A и остатком в R |
Переход | ||||
OPC | Мнемоника | Операнды | Циклов | Описание |
0C | CALL | ** | 5 | Вызов процедуры, запись в стек следующего за CALL адреса PC |
0D | RET | 3 | Возврат из процедуры | |
70 | JR | b8 | 2 | Короткий переход -128..127 |
71 | JP | ** | 5 | Перейти по 32-х битному адресу |
7A | JP | AA | 3 | Перейти на адрес, указанный в регистре A |
Стек | ||||
OPC | Мнемоника | Операнды | Циклов | Описание |
0E | PUSH | nn ... | 4+ | Запись nn регистров в стек, номера их следуют за параметром nn |
0F | POP | nn ... | 3+ | Извлечение из стека nn регистров, номера их следуют за параметром nn |
АЛУ | ||||
OPC | Мнемоника | Операнды | Циклов | Описание |
10 | ADD | AA BB CC | 4 | Сложение A + B с записью в C |
11 | ADC | AA BB CC | 4 | Сложение с учетом переноса A + B с записью в C |
12 | SUB | AA BB CC | 4 | Вычитание A - B с записью в C |
13 | SBC | AA BB CC | 4 | Вычитание с учетом переноса A - B с записью в C |
14 | AND | AA BB CC | 4 | Логическое A and B с записью в C |
15 | XOR | AA BB CC | 4 | Логическое A xor B с записью в C |
16 | OR | AA BB CC | 4 | Логическое A or B с записью в C |
17 | CMP | AA BB | 4 | Вычитание A - B без записи в регистр, только флаги |
Сдвиги | ||||
OPC | Мнемоника | Операнды | Циклов | Описание |
18 | ROL | AA BB | 4 | Циклический сдвиг регистра A налево |
19 | ROR | AA BB | 4 | Циклический сдвиг регистра A вправо |
1A | SHL | AA BB | 4 | Логический сдвиг регистра A влево |
1B | SHR | AA BB | 4 | Логический сдвиг регистра A вправо |
1C | RCL | AA BB | 4 | Сдвиг регистра A влево, заполняя младшие биты значением CF |
1D | RCR | AA BB | 4 | Сдвиг регистра A вправо, заполняя старшие биты значением CF |
1F | SAR | AA BB | 4 | Сдвиг регистра A вправо, заполняя старшие биты значением старшего 31-го бита |
Условный переход | ||||
OPC | Мнемоника | Операнды | Циклов | Описание |
72 | JC | b8 | 1-2 | Короткий переход если CF=1 |
73 | JNC | b8 | 1-2 | Короткий переход если CF=0 |
74 | JZ | b8 | 1-2 | Короткий переход если ZF=1 |
75 | JNZ | b8 | 1-2 | Короткий переход если ZF=1 |
76 | JBE | b8 | 1-2 | Короткий переход если CF=1 AND ZF=1 |
77 | JA | b8 | 1-2 | Короткий переход если CF=0 OR ZF=0 |
78 | JS | b8 | 1-2 | Короткий переход если SF=0 |
79 | JNS | b8 | 1-2 | Короткий переход если SF=1 |
7C | JL | b8 | 1-2 | Знаковое сравнение и если A < B, переход |
7D | JNL | b8 | 1-2 | Знаковое сравнение и если A >= B, переход |
7E | JLE | b8 | 1-2 | Знаковое сравнение и если A <= B, переход |
7F | JG | b8 | 1-2 | Знаковое сравнение и если A > B, переход |
27 авг, 2023
© 2007-2023 Отличная чашка сидела