Java 是否可以将x86 32位汇编代码转换为等效的JVM字节码并执行它?

Java 是否可以将x86 32位汇编代码转换为等效的JVM字节码并执行它?,java,assembly,jvm,bytecode,Java,Assembly,Jvm,Bytecode,是否可以将x86 32位汇编代码转换为等效的JVM字节码并执行它 我有一个.so格式的Fortran库。我想使用GDB对其执行程序集转储,然后使用某种转换器将其转换为有效的JVM字节码 这可能吗 为了简单起见,假设我不再关心平台独立性。汇编代码和字节码都将在同一台机器上运行。可能是几乎所有的事情,但我认为您不会找到一个工具来为您实现这一点-因此您必须手动完成,这可能需要几周或几个月的时间,具体取决于库的大小。 当然,如果编译的图书馆是商业图书馆或受版权保护的图书馆,这可能会引起法律问题 在我看来

是否可以将x86 32位汇编代码转换为等效的JVM字节码并执行它

我有一个.so格式的Fortran库。我想使用GDB对其执行程序集转储,然后使用某种转换器将其转换为有效的JVM字节码

这可能吗


为了简单起见,假设我不再关心平台独立性。汇编代码和字节码都将在同一台机器上运行。

可能是几乎所有的事情,但我认为您不会找到一个工具来为您实现这一点-因此您必须手动完成,这可能需要几周或几个月的时间,具体取决于库的大小。 当然,如果编译的图书馆是商业图书馆或受版权保护的图书馆,这可能会引起法律问题

在我看来,更好的方法是用C/C++开发一个小包装器,并将库链接到它。然后您将能够从Java调用库函数


如果您能获得Fortran源代码,您可以尝试使用JVM Fortran编译器,如。然后您将得到本机JVM字节码。

JNI绝对是解决这个问题的好方法。我只是想知道该库的字节码版本是否会在性能和内存管理方面带来任何价值。+1:字节码版本会带来可移植性。e、 g.它可以在x64上运行,无需重新编译,并充分利用所有可用寄存器和指令集。(以及额外的地址空间)我更新了我的答案,加入了法律方面和JVM Fortran编译器。使用JNI甚至重写库是可能的,但更便宜、更快、更容易、更少的错误。