Любопытно: можно ли использовать LLVM для машинного кода Infocom z, и если да, то как? (в общем) - PullRequest
4 голосов
/ 18 апреля 2010

Простите, если это глупый вопрос, но мне интересно, можно ли / как использовать LLVM для получения высокопроизводительной виртуальной машины Z-Machine для интерактивной фантастики.(Если бы это можно было использовать, я просто искал некоторые идеи или предложения высокого уровня, а не подробное решение.)

Может показаться странным стремиться к более высокой производительности для технологии около 1978 года, но, очевидно,Игры Z-Machine, созданные в современной среде Inform 7, могут иметь проблемы с производительностью из-за огромного количества правил, которые необходимо оценивать с каждым ходом.

Спасибо!

К вашему сведению: Z-Архитектура машины была переработана Грэмом Нельсоном и задокументирована по адресу http://www.inform -fiction.org / zmachine / standard / z1point0 / Overview.html

Ответы [ 2 ]

2 голосов
/ 19 апреля 2010

Да, это может быть. Наивный порт интерпретатора в компилятор может быть сделан относительно легко.

Тем не менее, это не будет большой победой в производительности. Проблема с любым компилятором для ZCode или Glulx заключается в том, что они оба относительно низкого уровня. Например, Glulx поддерживает косвенные переходы и самоизменяющийся код. Нет способа статически скомпилировать это в эффективный нативный код. Чтобы сделать его действительно быстрым, потребуется компиляция трассировки или что-то подобное.

1 голос
/ 18 апреля 2010

Конечно, было бы возможно (но трудно) использовать LLVM как своего рода JIT для машинного кода Z, но не будет ли проще просто скомпилировать исходный код Inform напрямую на более быстрый язык? Например, C для максимальной скорости, или .NET или Java, если вы предпочитаете переносимость. Я подозреваю, что этот маршрут будет намного проще и эффективнее, чем просто подгонять JIT на сторону интерпретатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...