| Главная | post 639 # QVPC | [ Связь ] [ no Python ] [ no AJAX ] [ css ] |
Задача:
Написать лабораторные работы по темам:
1. Макет виртуальной машины
2. +Виртуальный дисплей
3. +Виртуальная клавиатура
4. Система прерываний
5. Иерархическая документация
Реализация: QVPC.
Проект представляет собой виртуальную машину, выполняющую интепретируемый язык программирования. В любой момент можно посмотреть карту памяти машины.
Интерпретатор последовательно выполняет команды, разделенные точкой с запятой или переводом строки (\n).
Команды:
cpy: копирует содержимое ячейки 0 в ячейки 1+
sto: записывает число 0 в ячейки 1+
sum: записывает сумму значений в ячейках 1+ в ячейку 0
jmp: переходит к исполнению строки, номер которой содержится в ячейке 0
int: создает обработчик прерывания 0, который переводит исполнение к строке, указанной в ячейке 1. После окончания программы исполнение продолжается со строки, в которой было вызвано прерывание.
prn: выводит содержимое ячеек 0+
Примечание: аргументы каждого оператора — ряд целых чисел. "ячейка 0" обознает "ячейка с номером из аргумента 0", а ячейки 1+ — ячейки с номерами из аргументов 1,2,3 и так далее.
Пример:
sto 3,1,2,3
cpy 1,4,5
sum 6,1,2,3,4,5
prn 6Выведет 15.
На картинке выше приведен более сложный пример, использующий прерывания. Он выводит 1 в цикле, а при возникновении прерывания 1 выводит 666.
Исходник можно скачать здесь или получить через git:
git clone git://git.bitcheese.net/qvpc
Итак, все темы раскрыты (исходники я обработал doxygen и получил офигенную документацию), кроме виртуальной клавиатуры. Думаю, приделаю небольшую с фиксированными прерываниями.
Метки: code, qt, git | Комментировать[3] »
Jan 22nd, 2009 (Thursday) 18:56 от AlexanderMarkov@c7bd9cc7// Why doesn't cpp have lambdas? Or string switches either.
lex+yacc
Но cpp — говно, да.
> lex+yacc
а причем тут лямбды?
Если ты имел в виду использовать их для парсинга, то тут синтаксис очень простой и не хотелось дополнительные тулзы подключать.
Не важно. Весь смысл — в последнем предложении.
Ни одно из полей не обязательно.
Можно граиспользовать textile + NBL markup, a BB-code и HTML категорически запрещено.