Пишу новый джит - PullRequest
       25

Пишу новый джит

3 голосов
/ 04 ноября 2010

Я заинтересован в запуске собственного JIT-проекта на C ++.Я не настолько незнаком с ассемблером, дизайном компилятора и т. Д. И т. Д. Но я не очень знаком с результирующим форматом машинного кода - например, как на самом деле выглядит инструкция mov, когда все сказано и сделано, и пришло время вызвать этоуказатель на функциюИтак, каковы лучшие ресурсы для создания такой вещи?

Редактировать: В настоящее время меня интересует только x86 для Windows, немного растянувшаяся до 64-битной Windows в будущем.

Ответы [ 4 ]

5 голосов
/ 04 ноября 2010

Запуск вашего проекта поверх LLVM может защитить вас от деталей платформы.

http://llvm.org/

LLVM используется несколькими JIT-компиляторами динамического языка.

5 голосов
/ 04 ноября 2010

Вы хотите ознакомиться с руководствами по процессорам для интересующей вас архитектуры. Эти руководства описывают кодирование кода операции. Для процессоров x86 руководства можно загрузить с на этой странице .

2 голосов
/ 05 ноября 2010

GNU lightning - это многофункциональная библиотека (x86, SPARC, PPC) для генерации кода в другой программе.Вам нужно понимать общие понятия языка ассемблера, но не на очень глубоком уровне.Вам не нужно будет писать что-либо специфичное для архитектуры.Недостатком молнии (по крайней мере, в прошлый раз, когда я его использовал) является то, что представленный интерфейс является пересечением функций, доступных для поддерживаемых целей: небольшой набор регистров x86, набор команд RISC, такой как SPARC, и так далее.Генерация однопроходного кода проста в использовании, но имеет свои особенности, например, вы не можете переместить выходной буфер (из-за ссылок на адреса), поэтому, если у вас заканчивается свободное место, вам, как правило, придется начинать все сначала.Хорошо, что вы, вероятно, получите рабочий пример очень быстро.

0 голосов
/ 05 ноября 2010

Более старые версии NASM поставляются с довольно краткой ссылкой на код операции с кодировками команд x86.(Похоже, что нет 64-битной информации.) Я нашел это с помощью Google:

http://alien.dowling.edu/~rohit/nasmdocb.html

Официальные руководства говорят в основном то же самое (и многое другое), но не совсем так удобно.

...