Tag: 程序集

Java中的内联ASM

自从我开始在Java中嵌入asm用于Intel x86 64位处理器的小项目并无缝运行和编译这些方法(并且可能稍后将这些调用模拟为后退)时,我想知道是否存在已经存在的x86编译器的Java实现。 我也想要支持这些高级指令。 目标是最终有类似的东西: public int myJavaMethod(long value) { doSomeJavaStuff… int result = 0; asm(” push eax”, ” mov eax, value”, ” cmp eax, 0″, ” jne notEqual”, ” mov result, 1″, ” jmp done”, “notEqual: mov result, 0”, “done: pop eax”); doSomeMoreJavaStuff(); return result; } 是)我有的: 英特尔的OPCodes和架构手册(VOL2) 我正式使用JNA编译并运行asm(“nop”)程序部分 目前的挑战: 由于任务的性质,我将尝试访问底层JavaVM堆栈帧 – 这是可能的(记住你得到esp堆栈指针和基本指针ebp,即使是ret op将放在eip指针中的地址)但是将解决方案与某个java […]

在C#Assembly中引用Java DLL?

这里有说明使用SimMetrics库创建C#程序集。 他们提供给这个图书馆的链接是在SourceForge 。 看起来最新版本的SimMetrics库是用Java创建的。 是否可能编译java代码然后在C#中引用它以用作SQL Server 2008中的程序集?

了解Java中的易失性和非易失性读/写

我的java代码如下 public class MyClass { volatile int voltile ; //7 int nonVoltile ; //8 public static void main(String[] args) { for(int i=1; i<100000; i++){ f(); } } static void f(){ //16 MyClass t = new MyClass(); //17 t.voltile = t.nonVoltile; //18 t.nonVoltile = 0x11111; //20 t.voltile = 0x22222; //21 t.nonVoltile = t.nonVoltile + 1; //23 […]

有哪些JVM组装商?

我想要一个简单明了的JVM汇编程序。 它应该采用以Java虚拟机规范中描述的助记符语言编写的文本文件,并生成类文件,即字节码。 要明确:我不想要一个可以从API调用生成类文件的库。 JVM汇编程序的当前状态是什么? 它们是否支持invokedynamic(对我而言不是强制性的,但有优势)? 我可以使用哪些操作系统? 他们各自的利弊是什么?

C性能和编译选项

我有两个类似的实现(java和c ++)用于像选择排序这样的简单算法。 public interface SortingAlgorithm { public void sort(int[] a); } public class SelectionSort implements SortingAlgorithm { @Override public void sort(int[] a) { for (int i = 0; i < a.length; i++) { int lowerElementIndex = i; for (int j = i + 1; j < a.length; j++) { if (a[j] < a[lowerElementIndex]) { lowerElementIndex […]

Java中的代码注入/汇编内联?

我知道Java是一种安全的语言,但是当需要进行矩阵计算时,我可以更快地尝试一下吗? 我正在学习C ++,Digital-Mars编译器和FASM中的__asm {}。 我想在Java中做同样的事情。 如何在函数中内联汇编代码? 这有可能吗? 像这样的东西(使用AVX支持CPU将数组的所有元素钳制到没有分支的值的矢量化循环): JavaAsmBlock( # get pointers into registers somehow # and tell Java which registers the asm clobbers somehow vbroadcastss twenty_five(%rip), %ymm0 xor %edx,%edx .Lloop: # do { vmovups (%rsi, %rdx, 4), %ymm1 vcmpltps %ymm1, %ymm0, %ymm2 vblendvps %ymm2, %ymm0, %ymm1, %ymm1 # TODO: use vminps instead vmovups %ymm1, […]

如何在Java中使用.Net程序集

我想在Java应用程序中使用Microsoft .Net程序集。 有没有办法做到这一点。 任何帮助将不胜感激。

按位旋转是否比当前Intel CPU的变换慢?

如果java.lang.Integer.rotateLeft通过使用旋转指令进行优化并为其编写基准,我很好奇。 结果是不确定的:它比两个class次快得多,但比一个class次慢一点。 所以我用C ++重写了它并获得了相同的结果。 通过g++ -S -Wall -O3编译时,我可以看到生成的汇编器中的指令。 我的CPU是Intel Core i5。 基准测试很长,肯定不是最好的代码,但我认为它没有被破坏。 或者是吗? 根据文件记录,轮换需要一个周期,就像轮class一样。 谁能解释一下结果呢? rotations: 6860 shift: 5100 前两个答案是错误的。 gcc和java的JIT都知道旋转指令并使用它们。 关于gcc看到上面的链接,关于java看看我的java基准测试及其结果 benchmark ns linear runtime Rotate 3.48 ==================== NonRotate 5.05 ============================== Shift 2.16 ============

Maven,Proguard和assembly问题

我正在努力让Maven与ProGuard合作。 我想要实现的目标如下: 在我的源文件上运行ProGuard并生成混淆的类 创建一个引用主类的清单文件,以便我可以将其作为jar执行 解压所有相关的库jar并创建一个包含它们的巨大jar。 此文件只应与.class和.xml文件联系。 将它们组装成包含各种README.txt文件的.zip和tar.gz文件,依此类推。 到目前为止,我有这样的事情: org.apache.maven.plugins maven-jar-plugin 2.2 com.class.path.MainClass **/*.class **/*.xml com.pyx4me proguard-maven-plugin -allowaccessmodification true classes ${project.build.finalName}.jar ${project.build.directory} src/main/assembly/proguard.conf lib/rt.jar process-classes proguard maven-assembly-plugin assembly package assembly src/main/assembly/bin.xml 但我没有快乐。 任何人都可以给我任何模糊的指示吗? 先谢谢你,马特