有没有办法像在Assembly中那样从Java访问/修改cpu的寄存器? (eax,rip,ax等) 我不知道它是否会以任何方式有用,但我认为这将非常有趣。
有没有办法获得"保存点" c / c ++中的变量:
&variable
提前致谢,我希望你能理解我的意思。
答案 0 :(得分:3)
简短回答:否
Java以跨平台字节代码编译。装配是特定于平台的。
关于“保存点”,它们在c / c ++中称为指针,在Java中,您正在操作引用。
有关指针和参考的更多详细信息,请参阅Pointers in Java
答案 1 :(得分:1)
由于Java在虚拟机内运行,因此无法访问低级硬件,例如CPU的寄存器。特别是因为它们的表现和存在可能从一个系统变为另一个系统。此外,访问寄存器也可能是安全违规。
仅使用java也无法确定对象的内存地址。还因为程序驻留在所述虚拟机中。您可以在JVM的堆内存中获得该位置。
答案 2 :(得分:0)
你不应该这样做。 Java是一种高级语言,可以在不需要使用cpu寄存器的情况下处理您的任务。事实上,如果需要优化,JVM可以使用cpu寄存器。
您可以使用 volatile 来保护CPU缓存的使用。
无论如何,您可以尝试编写自己的原生方法,但不确定它是否会成功。