GM特權指令實現

2021-09-29 04:46:46 字數 1179 閱讀 8515

一般做法在於加上乙個配置,用於標識release與debug環境。其次,根據不同許可權可以實行不同級別的指令。所有的特權指令定義成為陣列結構容器,容器中新增呼叫關鍵字、呼叫函式、許可權、描述等等。

gm gmcmds =,	,

,};

如上圖,定義gm物件的陣列,物件由四部分構成,關鍵字「test-gm」,函式名"gm::my_print",許可權"gm::mode_super",描述"測試指令"。

標頭檔案:

//gm測試

struct gm

; const char *pstcmd;

bool(*pstparse)(const char *pstpara);

int ipriv;

const char *pstdesc;

static bool exec(const char *pstcmd);

static bool my_print(const char *pstpara);

static bool my_print_2(const char *pstpara);

};

實現檔案:

int imymode = gm::mode_formal;

gm gmcmds =, ,

,};bool gm::exec(const char *pstcmd)

//cout << "exec already find" << endl;

return gmcmds[i].pstparse(strparse.c_str());

}} //cout << "exec no find" << endl;

} return false;

}bool gm::my_print(const char *pstpara)

bool gm::my_print_2(const char *pstpara)

int main()

imymode |= gm::mode_all;

memset(chtest, 0, 100);

strncpy(chtest, "//test-gm-2" , sizeof("//test-gm-2"));

if (!gm.exec(chtest))

return 0;

}

用Visual C 實現CPU特權指令操作

天極 一 引言 80x86系列cpu具有四級保護機制。在windows 9x作業系統只使用0級和3級,以便於移植到精簡指令集的計算機上,如rs4000等,這些處理器一般只有兩個特權級,即系統級和使用者級。在windows 9x系統環境,應用程式執行在ring3 3級 如果要執行特權指令就必須進入ri...

linux pwd指令C實現

課程上半部分 ls l命令 檔案屬性 rwx rwx r x 其中 代表沒許可權 檔案硬連線數 乙個檔案的乙個或多個檔名 或目錄子目錄數,目錄的該字段至少是2 所有者所屬使用者組 檔案大小 檔案最後修改時間 檔名課程下半部分 從磁碟到分割槽,分割槽可看作是磁碟 從磁碟到序列塊 塊陣列 位元組陣列 塊...

利用 指令實現讀磁碟

利用 指令實現了讀磁碟 在大多數情況下,程式只指定讀乙個扇區或讀取乙個磁軌上的全部扇區。讀操作只是順序讀取 和 指定的扇區內容,並遞增 和 中的磁軌號和扇區號,如果扇區號超過了磁軌的最大扇區號,必須把扇區號重新置 並把磁軌號增 或者把雙面盤的 麵變 面。本程式計算每乙個磁碟位址,每次讀操作之後,扇區...