Данному образовательному сайту пришлось несколько раз менять свое имя. С 2022 года доступ к нему обеспечивается по URL
emc.orgfree.com

emc.km.ru (2001-2007) ==> educomp.org.ru (2007-2011) ==> educomp.runnet.ru (2011-2021) ==> emc.orgfree.com (2022-...)
Более подробно об истории сайта можно прочитать здесь.


Учебные модели компьютера



Модели (software):

"Е14" (parallel !!!)
"S9PU" (parallel)

Модели (hardware):






Награды сайта
Награды сайта 2005

Форматы команд MMIX

Структура команд процессора для выполнения различных операций может несколько отличаться: например заранее ясно, что инструкции сложения и условного перехода функционально не похожи настолько сильно, что вполне могут по-разному хранить внутри себя необходимую информацию. Распределение битов команды между отдельными ее частями часто называют форматом команды.

MMIX использует 5 форматов операций. Опишем их, сохраняя введенную Д.Кнутом нумерацию. Напомним читателю, что каждая команда занимает 32 бита, т.е. 4 байта.

Формат 0

Используется довольно редко, только для немногочисленных системных инструкций (я насчитал всего три, и все достаточно экзотические). Существенным является только код операции, остальная часть команды произвольна.

ОП      

При первом знакомстве этот формат смело можно пропустить, поэтому никаких примеров и дополнительных сведений здесь не приводится.

Формат 1

Данный формат в MMIX является основным. Помимо кода операции, задаются адреса трех регистров: в первый из них ($X) заносится результат выполнения операции, а второй и третий ($Y и $Z) позволяют сослаться на исходные данные (операнды).

ОП $X $Y $Z

В наиболее общем виде рассматриваемый тип операций можно сформулировать в виде “установить регистр $X в соответствии с результатом операции над регистрами $Y и $Z”.

формат команды MMIX

Операция может быть любой: арифметической, логической или даже записью или чтением из ячейки памяти. Вот несколько примеров:
20 03 01 02 – сложить регистры $1 и $2, результат поместить в $3;
C8 06 04 05 – выполнить логическую операцию И над регистрами $4 и $5, результат поместить в $6;
AC 07 08 09 – сохранить значение регистра $7 в ячейку памяти с адресом, равным сумме значений регистров $8 и $9.

Формат 2

Фактически является разновидностью предыдущего формата. Единственное отличие состоит в том, что вместо последнего регистра указывается константа – беззнаковое целое значение от 0 до 255.

ОП $X $Y Z

Например: 21 03 01 02 – к содержимому регистра $1 прибавить 2, результат поместить в $3 (сравните с первым примером из предыдущего пункта). Обратите внимание на то обстоятельство, что большинство инструкций MMIX допускает оба формата, причем коды одноименных операций форматов 1 и 2 всегда отличаются на единицу.

Формат 3

Кроме кода операции задается единственный регистр $X и двухбайтовая константа от 0 до 655353, обозначенная на рисунке YZ.

ОП $X YZ

Формат используется в двух различных случаях:

  • для манипуляций с содержимым регистра $X с использованием двухбайтовой константы YZ;
  • для реализации переходов.

    В первом случае непосредственно заданная в команде константа YZ указанным в коде операции способом воздействует на содержимое регистра $X. Например, команда с кодом E1 03 FFFF устанавливает значение регистра $3 равным 0000 FFFF 0000 0000, т.е. в определенную пару байт заносится указанная константа FFFF, а остальные байты обнуляются.

    Во втором случае анализируется содержимое регистра $X и в случае выполнения условия, определяемого кодом операции, к адресу текущей команды добавляется 4*YZ байт, т.е. осуществляется условный переход через заданное число инструкций. Так инструкция с кодом 42 05 0004 в случае нулевого содержимого регистра $5 пропустит 4 следующих после нее команды программы.

    Подчеркнем, что значение смещения YZ в командах перехода MMIX может быть как положительным, так и отрицательным, а коды инструкций "вперед по программе" или "назад" отличаются на единицу.

    Формат 4

    Объединяет 3 последних байта в одну большую беззнаковую константу.

    ОП XYZ

    Используется довольно редко: для реализации "длинных" безусловных переходов и в двух достаточно сложных системных командах. Примеры рассматривать не будем.


  • P.S. Форматы команд здесь описаны по данным Д.Кнута. Но, честно говоря, есть еще несколько специфических форматов для 1-2 операций каждый, не отраженных на данной страничке.


    На начало статьи      Дальше


    © Е.А.Еремин, 2002
    Статья:
    Еремин Е.А. MMIX – учебный RISC-процессор нового тысячелетия от Дональда Кнута. - Газета "Информатика", 2002, N 40, с.18-27


    Автор сайта - Евгений Александрович Еремин (Пермский государственный педагогический университет). e_eremin@yahoo.com


    Free Web Hosting