Различия между версиями 5 и 6
Версия 5 от 2015-05-01 00:10:52
Размер: 3792
Редактор: PavelSutyrin
Комментарий:
Версия 6 от 2015-06-12 02:11:21
Размер: 4754
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 6: Строка 6:

== «Проект 0» ==

Написать на Python реализацию всех модельных машин, упомянутых в [[http://al.cs.msu.su/files/ModComp.pdf|учебном пособии]]

У УМ3 описана [[http://al.cs.msu.ru/static/bordachenkova/UMCommands2007.pdf|система команд]] (кажется, не полностью). Остальное надо допридумывать.

Машина должна поддерживать:
 * Трассировку выполнения
 * Пошаговый проход

На вход машине подаётся образ памяти (бинарный файл). Изготавливается из программы в 16-ричных кодах путём простого перевода.

Впоследствии надо будет сделать ещё и ассемблер.

/!\ все, заснул, до следующего раза

Конструктор модельных машин

В курсе «Архитектура ЭВМ» есть такая тема: «модельные машины». Учебная трёхадресная машина на (неофициальном) сайте практикума АЯ.

А на самом деле нужен конструктор, чтобы любые машины проектировать.

«Проект 0»

Написать на Python реализацию всех модельных машин, упомянутых в учебном пособии

У УМ3 описана система команд (кажется, не полностью). Остальное надо допридумывать.

Машина должна поддерживать:

  • Трассировку выполнения
  • Пошаговый проход

На вход машине подаётся образ памяти (бинарный файл). Изготавливается из программы в 16-ричных кодах путём простого перевода.

Впоследствии надо будет сделать ещё и ассемблер.

/!\ все, заснул, до следующего раза

Что можно сконструировать

В машине может быть ( /!\ TODO: выкинуть действительно лишнее, эшелонировать):

  • Память:
    • Память с абсолютными адресами
    • Аппаратный стек с адресацией относительно вершины
  • Регистры:
    • Регистры общего назначения
      • …в т. ч. привязанные к ABI (акккумулятор и прочее)
    • Вычисляемые регистры (SP, PC, Flags)
  • Инструкции:
    • Фиксированной длины с заданным количеством адресов
    • Переменной длины
    • Автоинкремент/автодекремент
    • Обращение к сопроцессору
    • Обращение к внешнему устройству
    • Прерывания
  • Способы адресации:
    • прямая абсолютная
    • прямая относительная
    • косвенная
    • двойная косвенная
  • Сопроцессор
    • ABI по хранению FP
  • Внешние устройства
    • Печать
    • Ввод
    • «Медленное» устройство для использования аппаратных прерываний"
    • «Быстрое» устройство для использования ПДП
    • ПЗУ

Реализация

Никакого GUI, всё программируется (например, на Python) с помощью API конструктора. Причём само объектное планирование API воссоздаёт архитектуру ЭВМ, в этом фишка!

Например, могут быть готовые модули, соответствующие подсистемам

  • Память
    • Побайтовая (для команд переменной длины и произвольных данных)
    • Пословная (с указанием структуры слова, например, трёхадресное), для машин с данными отдельно, командами отдельно
    • Пословная с несколькими вариантами трактовки слова
  • Регистры (отличаются тем, что их значение может измениться, даже если в команде они явно не заданы)
  • Стек
  • АЛУ
  • Сопроцессор
  • Внешние устройства
    • Шина
      • ПЗУ
      • терминал

Получится что-то вроде такого myComputer.py:

   1 import myCPU
   2 import myRegisters
   3 import myMemory
   4 import myTerminal
   5 import myBIOS
   6 import myFPU
   7 

А вот какой-нибудь myFPU.py:

   1 import myRegisters
   2 

Означает, что смоделированный сопроцессор не работает с памятью, а работает только с регистрами

/!\ TBC

Полезные ссылки

* http://www.m5sim.org/Main_Page

FrBrGeorge/ActualEducationalTasks/ModelComputerConstructor (последним исправлял пользователь FrBrGeorge 2021-10-11 12:23:50)