2011-12-17 66 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