2011-12-17 65 views
2


在给定的ISA(可以说x86或ARM)有没有办法弄清楚,特定指令是特权或敏感?/
我们可以看到的文档,可以断定这一点,但通过使用汇编指令,这有可能弄清楚这一点?
编辑:此外,所有isa的文档并没有指定指令是否像arm一样敏感(尽管x86明确指出了这一点)。所以应该有办法解决这个问题。发现特权和敏感的指令

+1

大多数汇编语言不包含任何元编程设施。如果你知道你正在运行unprivileged,你可能能够执行该指令并得到违规通知,但如何做到这一点将是OS /环境特定的。 – 2011-12-17 16:09:59

回答

1

挂钩PrivilegeException向量(或等价物)指向报告错误的处理程序。执行一条指令。如果你没有看到这个例外,那它就没有特权。

+0

敏感指令如何改变特权数据结构,甚至不通知或保护错误? – peeyush 2011-12-17 16:29:50

+0

我不确定特权数据结构(例如中断向量表)是否必须可以从用户模式访问 - 也就是说,CPU必须处于超级用户模式(或等效模式)才能够修改它。但是,这些指令不一定是“普通”指令以外的任何指令,只是它们在更高的特权级别执行。所以我不认为有一种简单的方法可以检测出特定的指令本质上是敏感的,因为它的敏感性取决于执行环境。 – 2011-12-18 01:37:24