Ads
Comments
А писать программы для этой VM предполагается сразу в машинных кодах? :)
UFO landed and left these words here
Ну вот описание компилятора я и ожидал увидеть в статье в первую очередь, это же самое интересное в таких задачах :) А выполнение десятка операций из их кодов — это так, на закуску :)
UFO landed and left these words here

Я уже понял из статьи, что компилятора не будет. Но ведь согласитесь — глупо делать свою ВМ без компилятора в ее байт-код из какого-то удобочитаемого вида :) Поэтому, увидев название статьи я и подумал что будет описан компилятор :)

UFO landed and left these words here
UFO landed and left these words here
Ну, может я неправильно воспринимаю слово «собственный» в этом контексте, но почему-то всегда воспринимал его как «уникальный, под свои собственные цели». «Собственный язык программирования» — уникальный, «собственноручно» придуманный ЯП, «Собственная виртуальная машина» — то же, уникальная, придуманная ВМ со своим байт-кодом :) Как-то так :)
UFO landed and left these words here
Если вы нашли колеса, руль(они ваши) и собрали это вместе — это ваш велосипед, и он уникален

Ваше описание больше подходит под то, чтобы взять какой-либо существующий встраиваемый скриптовый язык, встроить его в свою программу и сказать, что написал свой интерпретатор :) Формально оно, конечно, так, только вот что-то тут не так :)
Колеса и руль вы не делали, вы не залазили в шахту чтобы добыть металл, вы не ездили в Индонезию чтобы добыть резину, колесо не изобретали.

Я и не утверждаю, что для собственной ВМ надо сначала изобрести процессор со всей периферией, потом написать для него компилятор и уже с помощью этого компилятора на этом процессоре писать саму ВМ :)
UFO landed and left these words here
От того, что вы интерпретируете не свой язык(описание), интерпретатор не становится не своим(вы же написали его и он в своем роде уникальный).

Ну вот про это я и писал — мое представление о «собственном» не настолько широкое :)
Я тоже сначала хотел это написать, но потом подумал, что не смогу ясно объяснить чем по большому счету отличается виртуальная машина от эмулятора процессора :)
эта VM — грамотная программа.

А почему literate program переведено как грамотная программа?


Там речь то вроде о том, что программа написана как книга. Ну то есть литературная программа получается. Звучит, конечно не очень, но лучше чем грамотная и по смыслу ближе.

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

Потому что она не интерпретирует какой-то язык, а выполняет инструкции процессора, то есть эмулирует его работу? :)

Исходя из вашего утверждения, мы можем сказать что brainfuck это эмулятор очень бедной процессорной архитектуры ?

UFO landed and left these words here

Я потому и задумался, толи я забыл точную терминалогию толи ее другие господа немного свободно трактуют.

Знаком с ним только понаслышке, поэтому ничего определенного сказать не могу :)
Где-то по LISP-машинам проходит тонкая граница между интерпретаторами и виртуальными машинами :)

ВМ получает на вход готовую программу (asm, cil и подобные). Интерпретатор получает на вход текст языка, который он компилирует в программу и посылает в виртуальную или аппаратную машину.

/* 65536 locations */
uint16_t memory[UINT16_MAX];

Похоже, 2 байта недоложили.
Спасибо! Очень полезный материал! Как раз сейчас занимаюсь разработкой NES эмулятора (просто так, just for fun).
Only those users with full accounts are able to leave comments. Log in, please.