
- •Общие требования к разрабатываемому процессору:
- •Структура системы
- •Архитектура внешних выводов
- •Выбор форматов данных
- •5) Определение модели памяти и структуры регистровой памяти Модель памяти
- •1 Гбайт
- •0.5 Гбайт
- •0.5 Гбайт
- •2 Гбайт
- •2 Гбайт
- •6) Форматы команд Способы адресации
- •Форматы команд
- •7) Система команд
- •Внутренняя организация
- •Структурно-функциональная схема процессора
- •Основные алгоритмы функционирования
- •Чтение команды из озу
- •Декодирование команды
- •Обработка регистровой команды (rg-rg)
- •Обработка команды типа регистр – память (rg-озу)
- •Обработка условного ввода / вывода (в/в)
- •Обработка безусловных переходов (б/п)
- •Обработка условных переходов (у/п)
- •Обработка прерываний
- •10) Алгоритмы выполнения отдельных операций Выборка команды
- •Арифметические и логические операции
- •Передача управления
- •11) Вывод
- •2) Система команд.
- •12) Список использованной литературы.
6) Форматы команд Способы адресации
Согласно заданию необходимо предусмотреть следующие способы адресации:
-
Относительная
База, Индекс – адреса регистров, в которых адреса базы и индекса.
-
Косвенная
Форматы команд
Согласно заданию команды имеют максимальную адресность равную 2, т.е. операции имеют вид:
-
О1:=O1 (операция) O2
-
(операция) O1
-
(операция)
Также команды можно разделить на:
арифметические
логические
пересылки
A – указывает, какая адресность используется для второго операнда:
00 – косвенная
11 – относительная
01 – зарезервировано
переходов
управления
7) Система команд
|
Мнемоника |
название |
содержание |
Флаги |
Код |
|||||||||||||||
Z |
C |
S |
O |
I |
T |
U |
||||||||||||||
Обращение пересылки |
||||||||||||||||||||
RDB |
Чтение байта |
R1<=<R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
000000 |
||||||||||
RDHW |
Чтение полуслова |
R1<=<R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
000001 |
||||||||||
RDW |
Чтение слова |
R1<=<R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
000010 |
||||||||||
WRB |
Запись байта |
<R1>=><R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
000011 |
||||||||||
WRHW |
Запись полуслова |
<R1>=><R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
000100 |
||||||||||
WRW |
Запись слова |
<R1>=><R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
000101 |
||||||||||
IN |
Чтение из порта |
R2<=порт<R1> |
- |
- |
- |
- |
- |
- |
- |
000110 |
||||||||||
OUT |
Запись в порт |
R2=>порт<R1> |
- |
- |
- |
- |
- |
- |
- |
000111 |
||||||||||
MOV |
Обмен RG<>RG |
<R2><=<R1> |
- |
- |
- |
- |
- |
- |
- |
001000 |
||||||||||
MOVI |
Занос в регистр значения |
<R1><= R2 |
- |
- |
- |
- |
- |
- |
- |
001001 |
||||||||||
Арифметические операции с ФТ |
||||||||||||||||||||
ADD |
Сложение |
<R1><=<R1>+<R2> |
+ |
+ |
+ |
+ |
- |
- |
- |
001100 |
||||||||||
SUB |
Вычитание |
<R1><=<R1>-<R2> |
+ |
+ |
+ |
+ |
- |
- |
- |
001101 |
||||||||||
MUL |
Умножение |
<R1><=<R1>*<R2> |
+ |
+ |
+ |
+ |
- |
- |
- |
001110 |
||||||||||
DIV |
Деление |
<R1><=<R1>/<R2> |
+ |
+ |
+ |
+ |
- |
- |
- |
001111 |
||||||||||
ADDI |
Сложение с неп оп. |
<R1><=<R1>+R2 |
+ |
+ |
+ |
+ |
- |
- |
- |
010000 |
||||||||||
SUBI |
Выч. с неп оп. |
<R1><=<R1>-R2 |
+ |
+ |
+ |
+ |
- |
- |
- |
010001 |
||||||||||
MULI |
Умн/ с неп оп. |
<R1><=<R1>*R2 |
+ |
+ |
+ |
+ |
- |
- |
- |
010010 |
||||||||||
DIVI |
Деление с неп оп. |
<R1><=<R1>/R2 |
+ |
+ |
+ |
+ |
- |
- |
- |
010011 |
||||||||||
Логические оперции с ФТ |
||||||||||||||||||||
AND |
«И» |
<R1><=<R1>&<R2> |
+ |
- |
+ |
- |
- |
- |
- |
010100 |
||||||||||
OR |
«ИЛИ» |
<R1><=<R1>v<R2> |
+ |
- |
+ |
- |
- |
- |
- |
010101 |
||||||||||
XOR |
Искл «ИЛИ» |
<R1><=<R1>+<R2> |
+ |
- |
+ |
- |
- |
- |
- |
010110 |
||||||||||
NOT |
«НЕ» |
<R1><=~<R1> |
+ |
- |
+ |
- |
- |
- |
- |
010111 |
||||||||||
RCL |
Циклический сдвиг влево |
|
- |
+ |
- |
+ |
- |
- |
- |
011000 |
||||||||||
RCR |
Циклический сдвиг вправо |
|
- |
+ |
- |
+ |
- |
- |
- |
011001 |
||||||||||
Команды переходов и прерываний |
||||||||||||||||||||
CLI |
Очистить флаг разрешения прерываний |
|
- |
- |
- |
- |
0 |
- |
- |
011010 |
||||||||||
INT |
Вызов прерывания |
<SP><=PC <R15><=flags |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
011100 |
||||||||||
IRET |
Возврат из прерывания |
<PC><=SP flags<=R15 |
- |
- |
- |
- |
- |
- |
- |
011101 |
||||||||||
CALL |
Вызов подпрограммы |
<SP><=PC PC<=<R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
011110 |
||||||||||
RET |
Возврат из подпрограммы |
<PC><=SP |
- |
- |
- |
- |
- |
- |
- |
011111 |
||||||||||
JMP |
Безусловный переход |
PC<=<R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
100000 |
||||||||||
JZ |
Переход по нулю |
PC<=<R1>+R2 |
+ |
- |
- |
- |
- |
- |
- |
100001 |
||||||||||
JNZ |
Переход не по нулю |
PC<=<R1>+R2 |
+ |
- |
- |
- |
- |
- |
- |
100010 |
||||||||||
JO |
Переход по переполнению |
PC<=<R1>+R2 |
- |
- |
- |
+ |
- |
- |
- |
100011 |
||||||||||
JNO |
Переход по не переполнению |
PC<=<R1>+R2 |
- |
- |
- |
+ |
- |
- |
- |
100100 |
||||||||||
JC |
Переход по переносу |
PC<=<R1>+R2 |
- |
+ |
- |
- |
- |
- |
- |
100101 |
||||||||||
JNC |
Переход не по переносу |
PC<=<R1>+R2 |
- |
+ |
- |
- |
- |
- |
- |
100110 |
||||||||||
JS |
Переход переход по < 0 |
PC<=<R1>+R2 |
- |
- |
+ |
- |
- |
- |
- |
100111 |
||||||||||
JNS |
Переход переход по >= 0 |
PC<=<R1>+R2 |
- |
- |
+ |
- |
- |
- |
- |
101000 |
||||||||||
Операции управления
|
||||||||||||||||||||
RFL |
Чтение флагов |
R1<=Flags |
- |
- |
- |
- |
- |
- |
- |
101001 |
||||||||||
WFL |
Запись флагов |
<R1>=>Flags |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
101010 |
||||||||||
RTLBR |
Чтение TLBP |
R1<=TLB |
- |
- |
- |
- |
- |
- |
- |
101011 |
||||||||||
WTLBR |
Запись TLBP |
<R1>=>TLB |
- |
- |
- |
- |
- |
- |
- |
101100 |
||||||||||
RISR |
Чтение TINT |
R1<=TINT |
- |
- |
- |
- |
- |
- |
- |
101101 |
||||||||||
WISR |
Запись TINT |
<R1>=>TINT |
- |
- |
- |
- |
- |
- |
- |
101110 |
||||||||||
RBVA |
Чтение BVA |
<R0><=BVA |
- |
- |
- |
- |
- |
- |
- |
110011 |
||||||||||
RFE |
Возврат в пользователя |
|
- |
- |
- |
- |
- |
- |
0 |
101111 |
||||||||||
SCALL |
Переход в супервизора |
|
- |
- |
- |
- |
- |
- |
1 |
110000 |
||||||||||
HALT |
Ожидание прерывания |
|
- |
- |
- |
- |
1 |
- |
- |
110001 |
||||||||||
NOP |
Нет операции |
PC<=<PC>+1 |
- |
- |
- |
- |
- |
- |
- |
110010 |
||||||||||
Арифметические операции с ПТ |
||||||||||||||||||||
FADD |
Сложение |
<F0><=<F1>+<F2> |
+ |
+ |
+ |
+ |
- |
- |
- |
111000 |
||||||||||
FSUB |
Вычитание |
<F0><=<F1>-<F2> |
+ |
+ |
+ |
+ |
- |
- |
- |
111001 |
||||||||||
FMUL |
Умножение |
<F0><=<F1>*<F2> |
+ |
+ |
+ |
+ |
- |
- |
- |
111010 |
||||||||||
FDIV |
Деление |
<F0><=<F1>/<F2> |
+ |
+ |
+ |
+ |
- |
- |
- |
111011 |
||||||||||
FMOV |
Обмен RG<>RG |
F0<=<F1> |
- |
- |
- |
- |
- |
- |
- |
111100 |
||||||||||
FRDW |
Чтение |
<F0><=<R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
111101 |
||||||||||
FWRW |
Запись |
<F0><=<R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
111110 |
||||||||||
MFC |
Преобр ПТ-ФТ |
<R0><=<F1> |
+ |
+ |
+ |
+ |
- |
- |
- |
111111 |
||||||||||
MCF |
Преобр ФТ-ПТ |
<R0>=><F1> |
+ |
- |
+ |
+ |
- |
- |
- |
111111 |