Я написал реализацию Brainfuck (C ++), которая работает следующим образом:
Это довольно быстро, но теперь узким местом является виртуальная машина. Он написан на C ++ и читает токен, выполняет действие (которого совсем немного, если вы знаете Brainfuck) и т. Д.
Я хочу вырезать виртуальную машину и сгенерировать собственный машинный код на ней. fly (по сути, JIT-компилятор). Это легко может быть 20-кратным ускорением.
Это будет означать, что шаг 3 будет заменен JIT-компилятором, а шаг 4 - выполнением сгенерированного машинного кода.
Я действительно не знаю, с чего начать, поэтому у меня есть несколько вопросов: