是否可以通过某些Java API提供一些特权指令(例如sti,cli)?
为什么不呢? (或者,如果它是,你能给我一些关于如何实现这个的概述/基本概念吗?)
由于
答案 0 :(得分:3)
STI和CLI是低级平台依赖interrupts。
当您使用Java(该语言)编写源代码时,您的目标是Java虚拟机,它执行Java字节码。因此,您的源代码指令不会直接转换为物理机器的机器代码。它被转换为字节码,然后运行(并在运行时由JIT编译器重新编译)以定位您的物理机器。
因此,您没有选项(因为它不是Java的设计目标,并且暴露它没有多大意义),以便轻松使用这些特权指令。 意味着被抽象。
我们使用“更高级别”的语言是有原因的。
答案 1 :(得分:0)
不确定为什么你对这些事情感兴趣,但看看this article开始。
答案 2 :(得分:0)
在传统的Java实现中,您唯一的选择是在使用JNI或JNA调用的本机方法中实现执行特权指令的代码。它对你没有任何好处...因为硬件/操作系统会阻止指令运行。 (你将获得一个非法的指令陷阱......程序将被杀死。)
为什么不呢?
基本上,如果常规Java应用程序(或任何其他用户空间应用程序)可以执行特权指令,则可能会使操作系统崩溃。这是一个非常糟糕的主意。
在Java的裸机实现中,可以通过本机代码或可能通过其他方式执行特权指令。 (例如,在JNode中,本机代码编译器将在严格控制的情况下用特权指令替换某些“魔术”方法调用。)