Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JVM上的汇编编程?_Java_Scala_Assembly_Clojure_Jvm - Fatal编程技术网

Java JVM上的汇编编程?

Java JVM上的汇编编程?,java,scala,assembly,clojure,jvm,Java,Scala,Assembly,Clojure,Jvm,我有点好奇,是否有可能以类似于在C中使用NASM的方式进行汇编编程 在谷歌快速搜索查看是否有可能在JVM上进行汇编语言编程后,他惊讶地发现了一些结果 以前有人试过这样做吗 我还想知道是否有对Clojure或Scala的支持程序集支持 :不是英文版本,但看起来它使用了某种NASM支持。汇编通常在C中使用,以便a)您可以访问C不生成的指令或b)较低级别的性能调整 由于字节码是为Java设计的 它不会生成任何有用的字节码指令 JVM在编译器生成的字节码中查找公共模式,并针对这些模式进行优化。这意味

我有点好奇,是否有可能以类似于在C中使用NASM的方式进行汇编编程

在谷歌快速搜索查看是否有可能在JVM上进行汇编语言编程后,他惊讶地发现了一些结果

以前有人试过这样做吗

我还想知道是否有对Clojure或Scala的支持程序集支持


:不是英文版本,但看起来它使用了某种NASM支持。

汇编通常在C中使用,以便a)您可以访问C不生成的指令或b)较低级别的性能调整

由于字节码是为Java设计的

  • 它不会生成任何有用的字节码指令
  • JVM在编译器生成的字节码中查找公共模式,并针对这些模式进行优化。这意味着,如果您自己编写字节码,则很可能优化程度较低,即。 较慢,除非它与编译器将生成的结果相同

汇编通常在C中使用,以便a)您可以访问C不生成的指令,或b)较低级别的性能调整

由于字节码是为Java设计的

  • 它不会生成任何有用的字节码指令
  • JVM在编译器生成的字节码中查找公共模式,并针对这些模式进行优化。这意味着,如果您自己编写字节码,则很可能优化程度较低,即。 较慢,除非它与编译器将生成的结果相同

您是否正在寻找类似jasmin项目的产品?因为,出于某种原因,minijava总是让我想起jasmin解析器…

你在寻找类似jasmin项目的东西吗?因为,出于某种原因,minijava总是让我想起jasmin解析器…

用C编写一个包含内联汇编的JNI库


从理论上讲,您可以在纯汇编中编写一个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应用程序中包含本机硬件汇编代码,你为什么要这么做?)我想知道硬件汇编是否可行。我想不出有什么好办法