Подтвердить что ты не робот

Запуск/Интерпретация C сверху JVM?

Есть ли способ запустить простой код c поверх JVM?
Не подключайтесь через JNI, работая, как вы можете запускать ruby-код через JRuby или javascript через Rhino.

Если нет текущего решения, что бы вы порекомендовали мне сделать?
Очевидно, я хочу использовать как можно больше решений частичных решений, чтобы это произошло.

ANTLR кажется хорошим местом для начала, имея полную реализацию грамматики ANSI C...
должен ли я построить "игрушечную" виртуальную машину через JVM с использованием кода, сгенерированного ANTLR?

4b9b3361

Ответ 2

Есть еще две возможности, оба с открытым исходным кодом:

JPC имитирует весь ПК x86 в JVM и способен запускать как DOS, так и Linux.

NestedVM обеспечивает двоичный перевод для Java Bytecode. Это делается путем компиляции GCC в двоичный код MIPS, который затем переводится в файл класса Java. Следовательно, любое приложение, написанное на C, С++, Fortran или любом другом языке, поддерживаемое GCC, может быть запущено на 100% чистой Java без изменений источника.

Ответ 3

Возможно, не совсем то, что вам нужно, но коммерческий вариант http://www.axiomsol.com/

Ответ 4

Кажется, что LLJVM также может удовлетворить ваши требования.

LLJVM: Исходный код сначала компилируется в промежуточное представление LLVM (IR) с помощью интерфейса, такого как llvm-gcc или clang. Затем LLVM IR переводится на ассемблерный код Jasmin, связанный с другими классами Java, а затем собирается в байт-код JVM.

Ответ 5

По состоянию на 2016 год существует молодой, но многообещающий вариант под названием gcc-bridge. Его целью является использование реализации R. виртуальной машины Java. Цель состоит в том, чтобы использовать R-библиотеки, написанные на C или Fortran. Но gcc-bridge может использоваться независимо как обычный плагин maven. Также смотрите пример gcc-brigde.