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, (%rdi, %rdx, 4)
# TODO: unroll the loop a bit, and maybe handle unaligned output specially if that's common
add $32, %rdx
cmp %rcx, %rdx
jb .Lloop # } while(idx < count)
vzeroupper
);
System.out.println(var[0]);
我不想使用代码注入器。我想查看英特尔或AT&T风格的x86说明。