[Перевод] Пишем x86-64 комплятор JIT с нуля в стоковом Python
|
|
Среда, 15 Ноября 2017 г. 08:29
+ в цитатник
В этой статье я покажу, как написать рудиментарный, нативный x86-64
just-in-time компилятор (JIT) на CPython, используя только встроенные модули.
Код предназначен для UNIX-систем, таких как macOS и Linux, но его должно быть легко транслировать на другие системы, типа Windows. Весь код опубликован на
github.com/cslarsen/minijit.
Цель — сгенерировать в рантайме новые версии нижеприведённого ассемблерного кода и выполнить их.
48 b8 ed ef be ad de movabs $0xdeadbeefed, %rax
00 00 00
48 0f af c7 imul %rdi,%rax
c3 retq
В основном, мы будем иметь дело с левой частью кода — байтовой последовательностью
48 b8 ed ...
и так далее. Эти 15 байтов в
машинном коде составляют функцию x86-64, которая умножает свой аргумент на константу
0xdeadbeefed
. На этапе JIT будут созданы функции с разными такими константами. Такая надуманная форма
специализации должна продемонстрировать базовую механику JIT-компиляции.
Читать дальше ->
https://habrahabr.ru/post/342410/
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-