![]() |
|
|
![]()
|
|
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
Хочу создать язык, компилируемый в байткод, и виртуальную машину (ВМ), выполняющую этот байткод.
Основное требование - минимальный размер скомпилированного байткода, и минимальный размер файлов исполняемых модулей. При этом размер ВМ, ее потребление ресурсов при выполнении байткода, производительность, имеют существенно меньшее значение. ВМ должна быть написана на нативном языке (асм, Си или С++) под Windows. Язык должен быть способен выполнять любые задачи, какие может выполнять асм или Си. ================= Способы реализации: Наиболее простой - сжимать байткод zip'ом, а перед выполнением распаковывать. Такое можно использовать как последний способ уменьшить размер байткода. Очевидно, что уменьшения объема байткода можно добиться встраивая в ВМ мощные средства, типа solve_me_this_task. На низком уровне, можно использовать упаковку бит инструкций ВМ. Интуитивно понятно, что если взять программу на высокоуровневом языке типа перла, и перевести текст исходника в бинарный вид, то это и будет минимальный размер программы. Причем чем более язык высокоуровневый, тем меньше объем кода программы. Тогда как если ВМ будет RISC, то размер программ будет большим. Это сообщение отредактировал(а) GoldFinch - 21.5.2010, 15:17 |
|||
|
||||
| Lipetsk |
|
|||
![]() в форме ;) ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 28.1.2009 Где: Липецк Репутация: 2 Всего: 5 |
может быть вас Lua устроит? и не надо ничего создавать? ;)
|
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
Lipetsk, прочитайте 3й абзац.
Переписывать Lua под нужные мне требования - это слишком затратно. У программы должен быть полный доступ к регистрам процессора и памяти (в том числе TEB, [fs:18]). Поддержка импорта и вызова функций из длл, и прочие низкоуровневые вещи которых нет в Lua. |
|||
|
||||
| kemiisto |
|
||||||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 1 Всего: 160 |
Я в замешательстве.
А ты пишешь, что
Хочется уточнить, ты хочешь написать низкоуровневый ЯП для своей ВМ? Я правильно понял? Что-то вроде LLVM?
Так происходить на JVM. JAR. -------------------- |
||||||||
|
|||||||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
kemiisto, возможности ВМ определяются ее назначением. В настоящее время есть большой класс ВМ которые не "efficient" и не "isolated" в силу своего назначения. Но если вас смущает термин ВМ, можно использовать термин "платформа /для выполнения байткода/".
Наоборот, я считаю что у ВМ должен быть максимально высокоуровневый ЯП, тогда код для нее будет минимален. Доступ к памяти реальной машины можно реализовать например введя встроенный массив Memory[] в который будет отображена реальная память. Для регистров процессора - встроенную переменную-структуру Registers (соответствующую регистрам на входе в функцию, для коллбеков с соглашением вызова использующим регистры). Как я уже писал, сжатие кода zip-ом, это способ который стоит применять когда все другие уже исчерпаны. Тем более что я ожидаю что размер программ для ВМ будет небольшим, порядка единиц килобайт. Это сообщение отредактировал(а) GoldFinch - 21.5.2010, 18:21 |
|||
|
||||
![]()
|
| Добро пожаловать в раздел "Другие языки" форума Vingrad! | |
|
|
Раздел посвящён различным языкам программирования, для которых (в силу невысокой популярности) нет отдельного раздела (GPSS, Lua, MATLAB, Ada, Forth, Smalltalk, Tcl, REXX, AWK и др.)
Приятного времяпрепровождения! С уважением, Void, kemiisto . |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Другие языки | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |