descargar - javac install
¿De C Source a Java Bytecode? (5)
Estoy buscando una forma de compilar código fuente C en bytecode de Java de alto rendimiento. He utilizado con éxito NestedVM , pero el rendimiento no es aceptable para un proyecto en el que estoy trabajando. También he visto varios proyectos de código abierto dirigidos a este problema y un par de productos comerciales. Esta pregunta SO trata del problema general de convertir fuentes que no son Java en Java, pero solo quiero pasar de C a bytecode de Java.
¿Cuál es la mejor forma de compilar el código fuente C en un bytecode puro de alto rendimiento?
Creo que algunos proyectos han intentado esto, pero simplemente no hay manera de lidiar con punteros sin algunas restricciones bastante severas sobre qué puede acceder a qué (esencialmente tienen que convertirse en índices de matriz y matrices asignadas en lugar de memoria)
Si tiene C sin demasiada confianza en los punteros, y lo quiere en la JVM, puede convertirlo a Java, debería ser bastante fácil y el rendimiento no debería ser demasiado malo. C todavía supera a Java en la mayoría de las áreas en aproximadamente 2x con algunas áreas mucho peores y en algunas áreas Java en realidad supera a C (gestión de memoria de montón, para uno), pero en comparación con la mayoría de otros idiomas (interpretados al menos), Java yc son 100 veces más rápido, por lo que la diferencia entre ellos no tiene sentido desde ese punto de vista.
No es exactamente lo que pediste, pero Cibyl convierte los programas compilados en C en bytecode de JVM. Es la misma idea que NestedVM (que mencionas) pero puede ser más rápido para tu tarea que como una implementación independiente.
Um, eso se llama "compilador". Está pidiendo un compilador de C que se dirija a la JVM.
Google para eso y encontrarás el Axiomatic Ansi C Compiler .
prueba el software C2J ................
escriba c to java translator en google. obtendrá el enlace para descargar
Siendo el autor de Cibyl , podría estar predispuesto aquí. De todos modos, he observado el código byte de Java generado por el compilador Axiomatic C, y no es eficiente. NestedVM y Cibyl funcionan compilando binarios de MIPS y luego traduciendo el binario en bytecode de Java. Es sorprendentemente eficiente, y el principal problema es el acceso a la memoria de valores de 8 y 16 bytes (lo que debe hacerse en varios pasos).
NestedVM y Cibyl tienen características de rendimiento ligeramente diferentes, con Cibyl normalmente siendo más rápido para cargas de trabajo pesadas enteras mientras que NestedVM maneja flotantes y duplica mejor. Esto se debe a que Cibyl utiliza el soporte de flotación suave de GCC (aunque usa instrucciones de coma flotante de bytecode de Java "reales") mientras que NestedVM traduce las instrucciones de FPU de MIPS.
Cibyl también está más orientado a entornos J2ME, aunque también es utilizable en otras plataformas. Supongo que tendrías más suerte con cualquiera de ellos que con el compilador Axiomatic C.