是否可以通过一些 Java 的 API 提供一些特权指令(例如 sti、cli)?
为什么不?(或者如果是的话,你能给我一些关于如何实现的大纲/基本想法吗?)
谢谢
是否可以通过一些 Java 的 API 提供一些特权指令(例如 sti、cli)?
为什么不?(或者如果是的话,你能给我一些关于如何实现的大纲/基本想法吗?)
谢谢
STI 和 CLI 是低级平台相关中断。
当您使用 Java(该语言)编写源代码时,您的目标是执行 Java 字节码的 Java 虚拟机。因此,您的源代码指令不会直接转换为物理机器的机器代码。它被转换为字节码,然后运行(并在运行时由 JIT 编译器重新编译)以针对您的物理机器。
因此,您没有选择(因为这不是 Java 的真正设计目标,公开它也没有多大意义)轻松使用这些特权指令。它们是抽象的。
我们使用“高级”语言是有原因的。
在传统的 Java 实现中,您唯一的选择是在您使用 JNI 或 JNA 调用的本机方法中实现执行特权指令的代码。它对你没有任何好处......因为硬件/操作系统会阻止指令运行。(你会得到一个非法指令陷阱......程序将被杀死。)
为什么不?
基本上,如果一个普通的 Java 应用程序(或任何其他用户空间应用程序)可以执行特权指令,它可能会轻微地使操作系统崩溃。这真是个坏主意。
在 Java 的裸机实现中,可以通过本机代码或其他方式执行特权指令。(例如,在 JNode 中,本机代码编译器将用特权指令替换某些“魔术”方法调用......在仔细控制的情况下。)
不知道您为什么对这些事情感兴趣,但请先看看这篇文章。