В этой статье я хочу рассказать о том, как создатели симуляторов добиваются максимальной производительности моделей процессоров, при этом не жертвуя гибкостью и расширяемостью полного решения. Если кратко, то решение состоит в сосуществовании нескольких движков, наилучшие качества которых используются на различных этапах работы модели.
Содержимое данной заметки будет основываться на моём опыте разработки функциональных симуляторов, а также на публикациях и технических статьях, описывающих различные симуляторы и виртуальные машины: Wind River Simics, VMWare, Qemu, Bochs и другим. Слово «функциональный» в контексте данной статьи обозначает то, что точность моделей ограничена уровнем набора команд (instruction set architecture, ISA).
Читать полностью »
Рубрика «интерпретатор» - 5
Программная симуляция микропроцессора. Коробка передач
2013-12-09 в 6:54, admin, рубрики: interpreter, simulation, virtualization, Блог компании Intel, виртуализация, интерпретатор, Процессоры, симуляция, метки: interpreter, simulation, virtualization, виртуализация, интерпретатор, симуляцияПишем свой интерпретируемый шестнадцатиричный язык программирования для QR-кодов
2013-05-27 в 16:18, admin, рубрики: java, QR-коды, дополненная реальность, интерпретатор, ненормальное программирование, Программирование, метки: java, QR-коды, дополненная реальность, интерпретаторВдохновившись проектом Google Glass, я подумал, как хорошо было бы сделать крайне простой, но мощный инструмент дополненной реальности специально для таких очков. И почему бы не сделать его на основе такой широко используемой технологии как QR-коды. Так родилась задумка языка QuRava — набора байтов, записанных в QR-коде и интерпретируемого в полноценную программу, реализующую часть возможностей языка Java.
Хочу сразу предупредить, что все нижеизложенное — альфа-версия, сделано за несколько вечеров. Поэтому по поводу маленьких возможностей сильно не ругайтесь и вопросов про отсутствие лямбда-исчисления не задавайте.

Читать полностью »
Контроллер MeteoBoard
2013-02-04 в 10:24, admin, рубрики: python, интерпретатор, микроконтроллеры, Программинг микроконтроллеров, Программирование, метки: python, интерпретатор, микроконтроллерыПонадобилось нам однажды измерять температуру и влажность в одном помещении, несложная задача, стоит обратиться в гугл и там до кучи примеров на ардуино как это сделать, скетчи, схемы и пояснения. Простые задачи подобного рода возникают достаточно часто и каждый раз модифицировать код для контроллера не хотелось. Мы подумали, а что если написать что-то типа интерпретатора для микроконтроллера(МК), который бы принимал команды и выполнял их. Таким образом отпадает необходимость писать софт каждый раз для МК, это занятие требует времени зачастую больше, чем под ПК из-за того, что объем памяти МК ограничен и не попользуешься развитыми средствами типа regex и прочего. Интерпретатор должен быть расширяемый, то есть добавление новой команды, не должно быть зубодробительной операцией. Также в будущем он должен быть легко переносим на ARM Cortex-M3 архитектуру и способен работать через различные интерфейсы связи будь то RS485, Ethernet, ZigBee.
На основании этих требований было решено разработать такое устройство и + библиотеки для работы с ним под несколько языков (сейчас Python и GCC C/C++) и ОС ( Win и Linux) чтобы не париться больше с написанием каждый раз софта для контроллера, который делает рутину — собирает данные или что-то включает или выключает.

Рис. 1. Контроллер MeteoBoard
Читать полностью »
Lisp-интерпретатор на чистом C
2012-09-04 в 11:48, admin, рубрики: c++, интерпретатор, ненормальное программирование, метки: интерпретатор, ЛиспЯ люблю язык C за его простоту и эффективность. Тем не менее, его нельзя назвать гибким и расширяемым. Есть другой простой язык, обладающий беспрецедентной гибкостью и расширяемостью, но проигрывающий C в эффективности использования ресурсов. Я имею в виду LISP. Оба языка использовались для системного программирования и имеют давнюю и славную историю.
Уже достаточно долго я размышляю над идеей, объединяющей подходы обоих этих языков. Её суть заключается в реализации языка программирования на основе LISP, решающего те же задачи, что и C: обеспечение высокой степени контроля над оборудованием (включая низкоуровневый доступ к памяти). На практике это будет система LISP-макросов, генерирующая бинарный код. Возможности LISP для препроцессирования исходного кода, как мне кажется, обеспечат небывалую гибкость, в сравнении с препроцессором C или шаблонами C++, при сохранении исходной простоты языка. Это даст возможность на базе такого DSL надстраивать новые расширения, повышающие скорость и удобство разработки. В частности, на этом языке может реализовываться и сама LISP-система.
Написание компилятора требуют наличие кодогенератора, а в конечном итоге — ассемблера. Поэтому практические изыскания стоит начинать с реализации ассемблера (для подмножества инструкций целевого процессора). Мне было интересно минимизировать какие-либо зависимости от конкретных технологий, языков программирования и операционной системы. Поэтому я решил с нуля реализовать на C простейший интерпретатор импровизированного LISP-диалекта, а также написать к нему систему макрорасширений, позволяющих удобно кодировать на подмножестве ассемблера x86. Венцом моих усилий должен стать результирующий загрузочный образ, выводящий «Hello world!» в реальном режиме процессора.
На текущий момент мною реализован работающий интерпретатор (файл int.c, около 900 строк C-кода), а также набор базовых функций и макросов (файл lib.l, около 100 строк LISP-кода). Кому интересны принципы выполнения LISP-кода, а также подробности реализации интерпретатора, прошу под кат.
Читать полностью »
Интерпретатор для… Си
2012-03-29 в 5:38, admin, рубрики: python, интерпретатор, Программирование, метки: c++, python, интерпретаторЗдравствуй, %username%!
Недавно меня посетила идея
Многие новички не хотят изучать Си (да и вообще все языки-компиляторы) из-за того, что даже после внесения незначительной правки, нужно перекомпилировать программу, что отнимает немало времени.
У интерпретаторов такого изъяна нет. У некоторых языков, например у python, есть даже интерактивный интерпретатор, котороый вообще позволяет не думать о второстепенных командах, по запуску приложения, и полностью отдаться процессу изучения языка.
Но что мешает написать интерпретатор (конечно это мы делать не будем) для Си?
Читать полностью »
