Arts-Union

Мастерская => Теория и практика => Тема начата: Altmer от 21 Ноябрь 2012, 05:22:39

Название: Динамическая рекомпиляция - LibJIT
Отправлено: Altmer от 21 Ноябрь 2012, 05:22:39
Давно я думал над этой фичей для эмулятора, поэтому решил поискать готовые решения, наковырял три библиотеки GNU lightning, LLVM и LibJIT.
Первая генерит код без определения необходимого объема памяти, т.е. программист должен быть хорошим телепатом, что бы не словить критическую ошибку и не транжирить память - короче не подходит.
Вторая хороша, но специфична + не хочет компилироваться, уж не знаю почему, видимо не умею ее готовить )
Третья - идеальный кандидат, но тоже не хотела компилироваться - пришлось заставить, билд прилагаю :)

Что бы скомпилировать libjit-0.1.2 на Mingw 4.6.2 пришлось поправить файл libjit-0.1.2\tools\gen-apply.c, добавив атрибут volatile в строке 962.
Название: Re: Динамическая рекомпиляция - LibJIT
Отправлено: ПАУК от 21 Ноябрь 2012, 14:04:51
А что она делает? Для чего?
Название: Re: Динамическая рекомпиляция - LibJIT
Отправлено: Altmer от 22 Ноябрь 2012, 05:16:36
Принципиально поднимает скорость эмуляции.
Название: Re: Динамическая рекомпиляция - LibJIT
Отправлено: Evgen-san от 30 Ноябрь 2012, 02:23:22
это для эмулятора FreeDO?
Название: Re: Динамическая рекомпиляция - LibJIT
Отправлено: Altmer от 30 Ноябрь 2012, 19:13:18
Это программная библиотека дли формирования исполнимого кода в процессе работы приложения независимо от платформы, поддерживает генерацию кода для x86, ARM и еще ряда платформ, для остальных платформ обеспечивает компиляцию в байткод и интерпритацию результата.

Для самого эмуля она как мертвому припарка. В Фениксе я прикручу ее для рекомпиляции кода DSP, а затем и ARM. В итоге эмуляция должна получиться на порядок быстрее.
Название: Re: Динамическая рекомпиляция - LibJIT
Отправлено: Evgen-san от 02 Декабрь 2012, 08:03:32
понятненько :)