Comments 28
Я уже понял из статьи, что компилятора не будет. Но ведь согласитесь — глупо делать свою ВМ без компилятора в ее байт-код из какого-то удобочитаемого вида :) Поэтому, увидев название статьи я и подумал что будет описан компилятор :)
Тогда это уже будет не своя ВМ, а ВМ для этого процессора :)
Если вы нашли колеса, руль(они ваши) и собрали это вместе — это ваш велосипед, и он уникален
Ваше описание больше подходит под то, чтобы взять какой-либо существующий встраиваемый скриптовый язык, встроить его в свою программу и сказать, что написал свой интерпретатор :) Формально оно, конечно, так, только вот что-то тут не так :)
Колеса и руль вы не делали, вы не залазили в шахту чтобы добыть металл, вы не ездили в Индонезию чтобы добыть резину, колесо не изобретали.
Я и не утверждаю, что для собственной ВМ надо сначала изобрести процессор со всей периферией, потом написать для него компилятор и уже с помощью этого компилятора на этом процессоре писать саму ВМ :)
эта VM — грамотная программа.
А почему literate program переведено как грамотная программа?
Там речь то вроде о том, что программа написана как книга. Ну то есть литературная программа получается. Звучит, конечно не очень, но лучше чем грамотная и по смыслу ближе.
Не смог сходу придумать почему виртуальную машину для выдуманного процессора нельзя назвать интерпритатором выдуманного языка.
Потому что она не интерпретирует какой-то язык, а выполняет инструкции процессора, то есть эмулирует его работу? :)
ВМ получает на вход готовую программу (asm, cil и подобные). Интерпретатор получает на вход текст языка, который он компилирует в программу и посылает в виртуальную или аппаратную машину.
/* 65536 locations */
uint16_t memory[UINT16_MAX];
Похоже, 2 байта недоложили.
Пишем собственную виртуальную машину