一般做法在於加上乙個配置,用於標識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 所有者所屬使用者組 檔案大小 檔案最後修改時間 檔名課程下半部分 從磁碟到分割槽,分割槽可看作是磁碟 從磁碟到序列塊 塊陣列 位元組陣列 塊...
利用 指令實現讀磁碟
利用 指令實現了讀磁碟 在大多數情況下,程式只指定讀乙個扇區或讀取乙個磁軌上的全部扇區。讀操作只是順序讀取 和 指定的扇區內容,並遞增 和 中的磁軌號和扇區號,如果扇區號超過了磁軌的最大扇區號,必須把扇區號重新置 並把磁軌號增 或者把雙面盤的 麵變 面。本程式計算每乙個磁碟位址,每次讀操作之後,扇區...