суббота, 17 января 2009 г.

Подробнее об эмуляторе

Особенности

  • Для представления одного байта MIX машины используются шесть бит,
  • Устройства ввода/вывода предсталяют собой просто файлы (за исключением терминала),
  • Задержек при обмене данными с устройствами ввода/вывода нет :) Если это будет забавно, то реализую в следующей версии.
  • Программы скармливаемые эмулятору не должны содержать синтаксических ошибок --- режим ассемблирования команд вообще предназначался для отладки самого эмулятора, так уж получилось, что я его оставил.
  • ``Лишние'' символы в кодировке Кнутта заменены на знаки вопроса --- я не сообразил, как заставить GCC переваривать UTF8, может подскажет кто.

    Команды эмулятора

  • dr --- вывести на экран содержимое регистров и флагов. Screenshot.
  • dm <addr> <count> --- вывести на экран содержимое ячеек памяти. Screenshot.
  • em <addr> <value> --- записать число в ячейку памяти. Команды записи числа в регистр нет --- она без надобности, так как у самой MIX есть занесение константы в регистр:)
  • run <addr-start> <addr-stop> --- запустить на исполнение код.
  • asm <addr> <instruction> --- самая мощная команда, ассемблирует одну инструкцию MIX по указанному адресу.

    Вот как выглядит текст программы из книги Кнутта Ссылка и результат её запуска.

    Понятно, что такой текст писать не очень весело, поэтому нужен нормальный ассемблер.

    Чтобы собрать эмулятор вместе с документацией, потребуются GCC version 4.1.2 20061115 (prerelease), транслятор [[noweb]] version 2.11, ``украшатель'' кода С++ dpp version 0.2.1 copyright Dan Schmidt и издательская система LaTeX 2e <2003/12/01>.

  • Комментариев нет:

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