Прежде всего, это не ваш стандарт «Я хочу скомпилировать код Java-кода для машинного кода».Можно ли скомпилировать машинный код в Java без внешней программы?
Я работаю над компилятором, написанным на Java, который переведет определенный язык (в моем случае: Brainfuck) на сборку x86, после чего я в настоящее время планирую использовать NASM и GCC для создания машинного кода.
Видя, как JSM HotSpot может скомпилировать байт-код Java для машинного кода, я предполагаю, что имеется некоторый механизм для компиляции исходного кода типа A в машинный код.
Есть ли способ использовать это в компиляторе, написанном на Java? Моя основная цель - изучить возможность написания компилятора на Java без использования внешних программ, например GCC и NASM, доступных на пути. Мне нужен компилятор C, потому что я связываюсь с cstdlib, поскольку я использую эти функции в своем коде сборки x86.
Чтобы уточнить, что я делаю в данный момент следующие:
- Написать x86 ассамблею к
bf.asm
файла. - Преобразование сборки в код объекта с
nasm -f win32 bf.asm
. - Связать код объекта с ОС Windows и библиотеками cstdlib с помощью
gcc -o bf bf.obj
.
Я ищу возможности замены необходимости использования nasm
и gcc
шаги 2 и 3, и вместо того, чтобы делать те с Java кодом.
Может ли downvoter объяснить, почему этот вопрос не показывает каких-либо исследований, что делает его неясным или не полезным? – skiwi
Ну @skiwi, некоторые фундаментальные исследования расскажут вам, что делает компилятор или ассемблер. И от этого ответ на ваш вопрос будет очевиден. –
@StephenC Я знаю, что делают компиляторы и сборщики. Пожалуйста, переходите к делу. – skiwi