Описание тега vm-implementation

Проектирование и реализация виртуальных машин, интерпретаторов, автоматов, машин Тьюринга. ** НЕ ** используйте этот тег для виртуализированных компьютеров (VirtualBox, VMWare, ...), если вопрос не касается реализации таких инструментов.
5 ответов

Какие языки генерируют байт-коды и могут быть загружены / выполнены в C++

Я хотел бы знать, какие языки соответствуют этому сценарию: Я пишу приложение (C++), и мне нужно добавить в него некоторую поддержку сценариев, но этот язык должен быть "скомпилирован". Эта компиляция генерирует некоторый тип "байт-кода", который не…
2 ответа

Формат абстрагируемого параметра функции и его влияние на производительность?

Я занимаюсь разработкой виртуальной машины, и я хотел бы сделать возможным вызывать скомпилированные функции. Тем не менее, поскольку каждая функция может иметь свою сигнатуру, я планирую обобщить все вызовы на 2 возможных сценария - вызов функции б…
6 ответов

Учебное пособие / ресурс для реализации ВМ

Я хочу, чтобы в целях самообразования была реализована простая виртуальная машина для динамического языка, предпочитаемая на C. Что-то вроде Lua VM, или Parrot, или Python VM, но проще. Существуют ли какие-либо хорошие ресурсы / учебные пособия по д…
09 янв '10 в 18:30
5 ответов

Поиск хорошей встроенной и хостинговой языковой пары

Я ищу два (один?) Языка. Одним из них будет хост, способный запускать некоторую "среду", а вторым - сценарий "агентов", действующих в этой среде. Некоторые детали: Хост должен быть способен запускать несколько "агентов" (потоков встроенного языка), …
3 ответа

Проблемы реализации вызова / возврата функции стековой виртуальной машины

Сегодня я решил создать небольшую виртуальную машину на основе стека в C++11 - все шло довольно хорошо, пока я не начал вызывать функции и возвращаться из функций. Я пытался следовать правилам вызова, аналогичным сборке x86, но я действительно запут…
19 дек '13 в 23:09
7 ответов

Что именно попугай?

Я понимаю, что Parrot - это виртуальная машина, но мне кажется, что я не совсем понимаю идею, стоящую за ней. Как я понимаю, это виртуальная машина, которая предназначена для работы с несколькими языками. Это правильно? Каковы преимущества использов…
22 сен '08 в 23:04
3 ответа

Можно ли повысить производительность в языках на основе vm, написав код вручную в их сборке?

Я знаю, что, вероятно, не имеет смысла делать это, так как обычно быстрее и логичнее просто переписывать критичные для производительности разделы на более быстром языке, но, если оставить в стороне, можно ли писать более быстрые программы на CPython…
02 апр '12 в 07:46
3 ответа

Ускорить скомпилированные программы, используя информацию времени выполнения, как, например, JVM делает это?

Java-программы могут превзойти скомпилированные языки программирования, такие как C, в определенных задачах. Это потому, что JVM имеет информацию во время выполнения и выполняет JIT-компиляцию при необходимости (я думаю). (пример: http://benchmarksg…
16 дек '14 в 12:55
2 ответа

Виртуальная машина из регулярного выражения

Я прочитал " Сопоставление регулярных выражений: подход виртуальной машины" и теперь пытаюсь разобрать регулярное выражение и создать из него виртуальную машину. Токенизатор работает и создает свои токены. После этого шага я создаю обратную польскую…
22 май '15 в 13:13
2 ответа

Существует ли Lua 5.1 Ассемблер?

Я уже некоторое время изучаю коды операций Lua 5.1 VM без скуки. И я хочу попробовать что-то кодировать! Так есть ли какой-нибудь способ собрать Lua Assembly в байт-код?
11 дек '10 в 01:44
2 ответа

Альтернативы виртуальной машине на основе стека для переводчика

При создании интерпретатора для другого языка часто рекомендуется создавать виртуальную машину на основе стека, которая может интерпретировать байт-код, сгенерированный фактическим интерпретатором. Интерпретатор тогда будет состоять из двух частей: …
2 ответа

Дизайн виртуальной машины с отдельным стеком и кучей

Я пытаюсь узнать немного больше о виртуальных машинах и языках программирования в целом, реализуя некоторые вещи, которые можно найти в книгах. Книга, которую я сейчас изучаю, хранит стек и кучу в одной области памяти. Стек растет вверх, а куча раст…
2 ответа

Как полиморфные встроенные кэши работают с изменяемыми типами?

Полиморфный встроенный кэш (PIC) работает путем кэширования фактического метода по типу объекта, чтобы избежать дорогостоящих процедур поиска (обычно это поиск в хеш-таблице). Как справиться со сравнением типов, если объекты типов являются изменяемы…
4 ответа

Сколько регистров в кастомной ВМ?

Я создаю собственную виртуальную машину, и мне интересно, сколько регистров мне следует использовать. Изначально у меня было 255, но я немного беспокоюсь о том, чтобы сохранять 255 указателей (целых КБ) в стеке или куче каждый раз, когда я вызываю ф…
01 июн '10 в 09:55
3 ответа

Согласование дизайна виртуальной машины с ее основным языком программирования

В качестве фона для побочного проекта я читал о различных проектах виртуальных машин, и JVM, конечно же, получила наибольшее количество прессы. Я также посмотрел на BEAM (Erlang), RH GHC (вроде, но не совсем VM) и некоторые реализации JavaScript. У …
09 июн '12 в 05:52
1 ответ

Каков наиболее надежный / переносимый способ выделения памяти по низким адресам в 64-битных системах?

Мне нужно выделить большие блоки памяти (которые будут использоваться моим пользовательским распределителем), которые попадают в первые 32 ГБ виртуального адресного пространства. Я полагаю, что если бы мне понадобились, скажем, блоки 1 МБ, я мог бы …
3 ответа

Модель интерпретации Python по сравнению с прямой и виртуальной компиляцией

Я составлял диаграммы (каламбур) в надежде понять различные реализации распространенных языков программирования. Я понимаю, скомпилирован или интерпретирован код, зависит от реализации кода и не является аспектом самого языка программирования. Я заи…
1 ответ

Тип стековой записи (в виртуальной машине)

Есть кое-что, что я не совсем понимаю в виртуальных машинах на основе стека: какой тип значения хранится в стеке? Я имею в виду, что, например, если я помещаю целое число в стек, становится ясно, что его тип является 32-разрядным целым числом. Однак…
15 июн '18 в 03:10
1 ответ

Язык не сидит на виртуальной машине, для которой он предназначен

Я хочу узнать, как спроектировать виртуальную машину, которая может поддерживать несколько языков и работать с их многочисленными обновлениями без снижения производительности. Например, Scala может напрямую взаимодействовать со старыми библиотеками …
10 дек '16 в 04:16
3 ответа

Виртуальная машина с открытым исходным кодом написана в.net?

Мне интересно, если кто-нибудь знает какие-либо проекты с открытым исходным кодом виртуальной машины? Язык, на котором он написан, не имеет значения, я бы очень хотел посмотреть, как они работают. Я сделал много поиска и не мог найти много. Я догады…
08 янв '13 в 00:15