-2

是否可以通过一些 Java 的 API 提供一些特权指令(例如 sti、cli)?

为什么不?(或者如果是的话,你能给我一些关于如何实现的大纲/基本想法吗?)

谢谢

4

3 回答 3

3

STI 和 CLI 是低级平台相关中断

当您使用 Java(该语言)编写源代码时,您的目标是执行 Java 字节码的 Java 虚拟机。因此,您的源代码指令不会直接转换为物理机器的机器代码。它被转换为字节码,然后运行(并在运行时由 JIT 编译器重新编译)以针对您的物理机器。

因此,您没有选择(因为这不是 Java 的真正设计目标,公开它也没有多大意义)轻松使用这些特权指令。它们是抽象的。

我们使用“高级”语言是有原因的。

于 2012-11-06T02:26:11.957 回答
0

在传统的 Java 实现中,您唯一的选择是在您使用 JNI 或 JNA 调用的本机方法中实现执行特权指令的代码。它对你没有任何好处......因为硬件/操作系统会阻止指令运行。(你会得到一个非法指令陷阱......程序将被杀死。)

为什么不?

基本上,如果一个普通的 Java 应用程序(或任何其他用户空间应用程序)可以执行特权指令,它可能会轻微地使操作系统崩溃。这真是个坏主意。


在 Java 的裸机实现中,可以通过本机代码或其他方式执行特权指令。(例如,在 JNode 中,本机代码编译器将用特权指令替换某些“魔术”方法调用......在仔细控制的情况下。)

于 2012-11-06T03:27:26.750 回答
0

不知道您为什么对这些事情感兴趣,但请先看看这篇文章

于 2012-11-06T02:54:51.830 回答