Java JVM上的汇编编程?
我有点好奇,是否有可能以类似于在C中使用NASM的方式进行汇编编程 在谷歌快速搜索查看是否有可能在JVM上进行汇编语言编程后,他惊讶地发现了一些结果 以前有人试过这样做吗 我还想知道是否有对Clojure或Scala的支持程序集支持Java JVM上的汇编编程?,java,scala,assembly,clojure,jvm,Java,Scala,Assembly,Clojure,Jvm,我有点好奇,是否有可能以类似于在C中使用NASM的方式进行汇编编程 在谷歌快速搜索查看是否有可能在JVM上进行汇编语言编程后,他惊讶地发现了一些结果 以前有人试过这样做吗 我还想知道是否有对Clojure或Scala的支持程序集支持 :不是英文版本,但看起来它使用了某种NASM支持。汇编通常在C中使用,以便a)您可以访问C不生成的指令或b)较低级别的性能调整 由于字节码是为Java设计的 它不会生成任何有用的字节码指令 JVM在编译器生成的字节码中查找公共模式,并针对这些模式进行优化。这意味
:不是英文版本,但看起来它使用了某种NASM支持。汇编通常在C中使用,以便a)您可以访问C不生成的指令或b)较低级别的性能调整 由于字节码是为Java设计的
- 它不会生成任何有用的字节码指令
- JVM在编译器生成的字节码中查找公共模式,并针对这些模式进行优化。这意味着,如果您自己编写字节码,则很可能优化程度较低,即。 较慢,除非它与编译器将生成的结果相同
- 它不会生成任何有用的字节码指令
- JVM在编译器生成的字节码中查找公共模式,并针对这些模式进行优化。这意味着,如果您自己编写字节码,则很可能优化程度较低,即。 较慢,除非它与编译器将生成的结果相同
从理论上讲,您可以在纯汇编中编写一个JNI兼容库,但为什么要麻烦呢?在C中编写一个包含内联汇编的JNI库
从理论上讲,您可以在纯汇编中编写符合JNI的库,但为什么要麻烦呢?我想指出另一种解决方案:在运行时从java程序生成汇编代码。 一些(很久以前)有一个叫做软电线的项目,用C++编写的,就是这样。IT(AB)使用(方法和操作符)重载来创建某种类似于x86 ASM的C++ DSL,而在该场景后面将装配相应的程序集。其主要目标是能够动态地组装一个为特定配置定制的组装例程,同时消除几乎所有的分支(如果确认发生变化,将重新编译该例程)。 这是一个非常好的库,作者曾经非常有效地实现了一个支持着色的软件渲染器(着色器在运行时被动态转换为x86汇编和汇编),所以这不仅仅是一个疯狂的想法。不幸的是,他被一家公司雇用,图书馆也在这个过程中被收购 今天,为了遵循这样的路线,您可以创建一个JNI绑定到(这本身可能不是一个小任务),并使用它在运行时进行组装。如果您愿意在java上使用scala,您甚至可以相对轻松地创建一个DSL ala软线,它将在后台生成汇编源代码并将其传递给Dynam。 听起来很有趣:-)
没有理由再感到无聊了。我想指出另一种解决方案:从java程序在运行时生成汇编代码。 一些(很久以前)有一个叫做软电线的项目,用C++编写的,就是这样。IT(AB)使用(方法和操作符)重载来创建某种类似于x86 ASM的C++ DSL,而在该场景后面将装配相应的程序集。其主要目标是能够动态地组装一个为特定配置定制的组装例程,同时消除几乎所有的分支(如果确认发生变化,将重新编译该例程)。 这是一个非常好的库,作者曾经非常有效地实现了一个支持着色的软件渲染器(着色器在运行时被动态转换为x86汇编和汇编),所以这不仅仅是一个疯狂的想法。不幸的是,他被一家公司雇用,图书馆也在这个过程中被收购 今天,为了遵循这样的路线,您可以创建一个JNI绑定到(这本身可能不是一个小任务),并使用它在运行时进行组装。如果您愿意在java上使用scala,您甚至可以相对轻松地创建一个DSL ala软线,它将在后台生成汇编源代码并将其传递给Dynam。 听起来很有趣:-)
没有理由再感到无聊了。你需要弄清楚——你说的是“字节码”汇编程序还是本机硬件的汇编程序?您是希望进行在线组装,还是接受将组装模块与编译代码分开组装?您的问题包含您的答案。使用JNI接口链接到一个使用NASM的C文件(而且,如果你问如何在Java应用程序中包含本机硬件汇编代码,你为什么要这么做?)我想知道硬件汇编是否可行。除了恶作剧,我想不出一个好的理由。我不能睡觉,除非我至少投了一次反对票,因为汇编程序是Scala。特别是在2.10中的宏之后-绝对没有与真实的东西的连接。你需要弄清楚-你说的是“字节码”汇编程序还是本机硬件的汇编程序?您是希望进行在线组装,还是接受将组装模块与编译代码分开组装?您的问题包含您的答案。使用JNI接口链接到一个使用NASM的C文件(而且,如果你问如何在Java应用程序中包含本机硬件汇编代码,你为什么要这么做?)我想知道硬件汇编是否可行。我想不出有什么好办法