Primula C Compiler     Xameleon Project        |        In English

Карта инструкций процессора

Comment are off

Мы создали карту системы команд, поместив все реализованные инструкции процессора в таблицу размером 16×16 элементов. Первая строка это однобайтовые инструкции. Третья строка — двухбайтовые инструкции. Желтым фоном помещены зарезервированные коды операций (картинка кликабельна):

MAP_EVER_1_1

Помимо введённых нами расширенных инструкций для поддержки многозадачности и взаимодействия задач, вы можете увидеть что многие инструкции повторяются. Инструкции повторяются, образуя при этом различные формы доступа к операндам. Например, операция сложения с переносом (ADDC) может иметь несколько форм — сложение регистров, сложение регистра и значения ячейки памяти, указываемой другим регистром. Так же существует форма операций когда помимо регистра указателя в коде инструкции указывается смещение.

Ниже показаны формы инструкции, определённые в версии 1 ревизии 1 системы команд «Эверест»:


; Прибавление к регистру R1 значение регистра R2
addc r1, r2

; Вычитание из ячейки памяти, на которую ссылается регистр R3, значение регистра R4
subc (r3), r4

; Копирование в регистр R1, значение ячейки памяти, на которую ссылается регистр R3
mov r1, (r3)

; «Логическое ИЛИ» регистра R1 и ячейки памяти, адрес которой равен сумме R3 и смещения
or r1, r3[8]

Если не принимать во внимание отличие системы команд от популярных архитектур, а выделить инструкции, задействованные для поддержки многозадачности и синхронных сообщений, подробности которых мы до сих пор не открывали, то это следующие инструкции — IDLE, TASK_ID, SEND, RECV, LOCK, FREE, SET_MR, GET_MR. Именно они являются причиной, по которой началась разработка микропроцессора. Они заменяют прерывания, инструкции переходов по абсолютным адресам и многое многое другое. Подробности использования этих инструкций мы раскроем позже.


Оставить комментарий