访问cpu寄存器

时间:2014-11-26 15:51:44

标签: java assembly cpu cpu-registers

有没有办法像在Assembly中那样从Java访问/修改cpu的寄存器? (eax,rip,ax等) 我不知道它是否会以任何方式有用,但我认为这将非常有趣。

有没有办法获得"保存点" c / c ++中的变量:

&variable

提前致谢,我希望你能理解我的意思。

3 个答案:

答案 0 :(得分:3)

简短回答:

Java以跨平台字节代码编译。装配是特定于平台的。

关于“保存点”,它们在c / c ++中称为指针,在Java中,您正在操作引用。

有关指针和参考的更多详细信息,请参阅Pointers in Java

答案 1 :(得分:1)

由于Java在虚拟机内运行,因此无法访问低级硬件,例如CPU的寄存器。特别是因为它们的表现和存在可能从一个系统变为另一个系统。此外,访问寄存器也可能是安全违规。

仅使用java也无法确定对象的内存地址。还因为程序驻留在所述虚拟机中。您可以在JVM的堆内存中获得该位置。

答案 2 :(得分:0)

你不应该这样做。 Java是一种高级语言,可以在不需要使用cpu寄存器的情况下处理您的任务。事实上,如果需要优化,JVM可以使用cpu寄存器。

您可以使用 volatile 来保护CPU缓存的使用。

无论如何,您可以尝试编写自己的原生方法,但不确定它是否会成功。