оптимизированная сборка

ел бы написать очень маленький JIT-компилятор, подтверждающий концепцию, для процессора на игрушечном языке, который я написал (чисто академический), но у меня есть некоторые проблемы на средних высотах дизайна. Концептуально, я знаком с тем, как работает JIT - вы компилируете байт-код в код (машина или сборка?) Для запуска. На уровне болтов, однако, я не совсем захватывающийкак вы на самом деле ходитедела это.

Моя (очень «новенькая») реакция коленного рефлекса, так как я не имею ни малейшего понятия, с чего начать, - это попробовать что-то вроде следующего:

mmap () блок памяти, настройка доступа к PROT_EXECнаписать нативный код в блокхранить текущие регистры (указатель стека и т. д.) в удобном местеизменить текущие регистры, чтобы они указывали на блок собственного кода в отображаемой областинативный код теперь будет выполняться на машиневосстановить предыдущие регистры

Это дажеблизко в / правильный алгоритм? Я пытался просмотреть различные проекты, которые я знаю, есть JIT-компиляторы для изучения (например,V8) но эти кодовые базы оказываются сложными для использования из-за их размера, и я не знаю, с чего начать.

Ответы на вопрос(7)

Ваш ответ на вопрос