Взлом Open JDK - Emit LLVM Assembler, а не Java Bytecode - PullRequest
2 голосов
/ 17 июня 2011

У меня есть возможность работать в университете и помогать взламывать javac из OpenJDK. Цель состоит в том, чтобы прочитать пользовательский исходный код (для «нашего» языка программирования в сочетании с antlr) и не записывать байт-код Java - компилятор должен выписать код ассемблера LLVM. Это было бы моей задачей, однако проект настолько велик, что я не знаю, где и как начать понимать, что там происходит. Мне сказали попробовать отладить код и пройти его шаг за шагом, но я хотел бы знать, есть ли какая-нибудь хорошая документация в дикой природе, дав мне короткий прорыв, чтобы понять, какие части являются наиболее важными.

1 Ответ

2 голосов
/ 18 июня 2011

У вас есть "myprogram.myprogrlang" в "myprogram.llvm".

Я не вижу необходимости использовать / hack javac.Я думаю, что вы хотите использовать инструменты компилятора Java / openjdk, но я думаю, что это только усложняет вашу задачу, а не помогает вам.

Мое предложение - взять antlr, узнайте, как это работает для анализазапрограммируйте на своем языке программирования, как сгенерировать AST, а затем превратить эти данные AST в байт-код или ассемблер LLVM.

В этом случае вам не нужна Java.

Итак:

[1] Изучите грамматики / правила ANTLR для вашего языка программирования

[2] Изучите байт-код / ​​ассемблер LLVM

[3] Узнайте, как преобразовать вывод данных ANTLR в данные LLVMввод

...