О статической эмуляции
2013-06-07 07:47 pmЭндрю Кэлли попытался написать статический эмулятор игровой приставки Nintendo для x86 (транслятор бинарных исполняемых файлов).
Основная идея заключается в том, чтобы взять бинарный блоб какой-нибудь игры для Nintendo, дизассемблировать его, кое-как плохо оттранслировать ассемблерные команды в байткод LLVM, а далее заставить оптимизирующий компилятор вычистить весь этот свинюшник и на этом выжать максимум скорости в циклах, за счёт инлайнинга, автоматической векторизации и т.п.
http://andrewkelley.me/post/jamulator.html
Естественно, почти ничего не получилось из-за indirect branching.
Такой фокус мог бы пройти с объектными файлами или с их архивами (статическими библиотеками), но результат работы компоновщика уже слишком усечён для подобных трюков.
Основная идея заключается в том, чтобы взять бинарный блоб какой-нибудь игры для Nintendo, дизассемблировать его, кое-как плохо оттранслировать ассемблерные команды в байткод LLVM, а далее заставить оптимизирующий компилятор вычистить весь этот свинюшник и на этом выжать максимум скорости в циклах, за счёт инлайнинга, автоматической векторизации и т.п.
http://andrewkelley.me/post/jamulator.html
Естественно, почти ничего не получилось из-за indirect branching.
Такой фокус мог бы пройти с объектными файлами или с их архивами (статическими библиотеками), но результат работы компоновщика уже слишком усечён для подобных трюков.