Pull to refresh

Comments 28

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

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

UFO just landed and posted this here

Тогда это уже будет не своя ВМ, а ВМ для этого процессора :)

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

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

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

Ну вот про это я и писал — мое представление о «собственном» не настолько широкое :)
И не ВМ, а эмулятор процессора.
Я тоже сначала хотел это написать, но потом подумал, что не смогу ясно объяснить чем по большому счету отличается виртуальная машина от эмулятора процессора :)
Как сказано на странице репозитория проекта это VM для LC-3 и, по всей видимости, компилятор можно найти тут compilerLC3.shtml
эта VM — грамотная программа.

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


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

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

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

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

UFO just landed and posted this here

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

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

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

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

Похоже, 2 байта недоложили.
Спасибо! Очень полезный материал! Как раз сейчас занимаюсь разработкой NES эмулятора (просто так, just for fun).
Sign up to leave a comment.

Articles