Система команд ядра PicoBlaze
ISA (instruction set architecture) – описание микропроцессора с точки зрения программиста. Каждый тип процессора имеет свой ISA.
Рассмотрим ISA PicoBlaze.
В процессорном ядре имеется 57 ассемблерных команд.
Эти команды делятся на группы
Команды загрузки выгрузки РОН
Логические команды
Арифметические команды
Команда сравнения
Команды ветвления
Команды работы со сверхоперативным ОЗУ
Команды ввода\вывода.
Команды вызова подпрограмм и обработки прерываний
Разрядность РОН и разрядность АЛУ имеет 8 бит, т.е. операнды могут быть однобайтные. Поэтому процессор считается восьмиразрядным. Хотя, например шина инструкций 18 разрядная, а шина адреса 10-и разрядная.
Команды загрузки выгрузки рон
Данные команды позволяют загрузить в регистр константу или загрузить данные из другого регистра.
Пример:
LOAD s2, 88
LOAD s0, s2
Формат представления команды в памяти:

Сначала идет код операции. Данные биты используются блоком декодера команд для определения выполняемой операции и определения того, какие блоки будут задействованы для ее выполнения.
В ядре PicoBlaze под код операции отводится 6 бит из 18. Это означает что максимальное число инструкций =2^6=64. Т.к. задействованы только 57 вариантов, то данное ядро может быт расширено еще 7-ю командами.
Следующие 4 бита используются для указания номера регистра, где храниться 1-й операнд. Всего регистров 2^4=16.
Оставшиеся 8 бит используются либо для указания константы, либо регистра. Во втором случае используют только половину разрядов.
Логические команды
Позволяют выполнить логическую операцию AND, OR, XOR над двумя операндами. Причем один операнд должен обязательно находиться в регистре, а второй может быть константой или тоже находиться в регистре общего назначения. Данные команды могут повлиять на значение флага Zero. Флаг Zero установится в единицу, когда будет получен результат из одних нулей.



Пример
Файл a.psm
start:
LOAD s2,10
LOAD s1,4F
AND s2,s1
JUMP start ///безусловныйпереход
После выполнения данной программы установится флаг Zero, т.к. в регистр s2 будет записан нулевой результат.
Арифметические инструкции
Рассматриваемое процессорное ядро может выполнять команды сложения и вычитания. Для выполнения умножения надо написать код используя сложение и операции сдвига.
ADD - сложение двух операндов
ADDCY - сложение с учетом флага переноса
SUB - вычитание
SUBCY – вычитание с учетом флага переноса
Пример
start:
LOAD s2, 5
LOAD s1, 3
ADD s2, s1
JUMP start
Результат сложение =8 будет записан в регистр s2
Команды сравнения
К командам сравнения относятся TEST и COMPARE. Эти команды влияют только на флаги ZERO и CARRY, и не влияет на операнды.
Рассмотрим команду COMPARE.
Команда COMPARE сравнивает два операнда и выставляет флаги в соответствии с таблицей:

start:
LOAD sa,20
compare sa,50
JUMP start
Результат Z=0,C=1
Пример2
start:
LOAD sa,20
COMPARE sa,20
JUMP start
Результат Z=1,C=0
