簡介
可執行指令(executable instruction)是指機器或系統中可以執行並產生作用的指令。不同的機器或系統的可執行指令大不相同。下面將舉例對可執行指令進行說明。
Windows下20個特殊的執行命令
1. systeminfo:讓XP列出更多有用信息
Windows XP可以給穩定工作很長的時間。要想詳細地了解這一信息,可以接入 Windows的“開始選單”,再開啟“附屬檔案選單”中的“命令提示符”,然後在其中輸入“systeminfo”這個命令。電腦就會顯示出許多有用信息,其中包括了這個系統的初次安裝時間,以及本次持續運行的時間。假如想要保留這些信息,可以輸入“systeminfo >info.txt”,這將會創建一個名為“info.txt”文本檔案,可以稍後用Windows的記事本將其打開,進行查看。(僅限於Windows XP 專業版本)
2.gpedit.msc:設定直接刪除檔案
可以將 Windows XP作業系統設定為直接刪除檔案,而不用先將這些檔案轉移到資源回收筒當中。進入開始選單,選擇“運行……”,輸入“gpedit.msc”;在彈出的對話框中,選擇用戶設定,管理模板,Windows 組件,Windows Explorer,找到“不要將刪除的檔案移送到資源回收筒”的選項。開啟這個選項。
通過調整 gpedit 對話框中的相關設定,可以對系統的運行方式和選項做出很多調整,但是請一定小心——所作出的某些改變可能會系統運行出現問題,或造成系統的不穩定。(僅限於 Windows XP 專業版本)
3. rundll32.exe:用滑鼠鎖定計算機
可以輕輕點擊兩下滑鼠,就鎖定自己的 Windows XP系統。請先在桌面上點擊滑鼠右鍵,創建一個新的捷徑,然後再填寫項目位置的時候, 輸入“rundll32.exe user32.dll,LockWorkStation”。
然後再給這個捷徑取一個喜歡的名字,比如“鎖定計算機”。就是這么簡單——現在,只需要用滑鼠雙擊這個捷徑,電腦就會馬上被鎖定。同時按住鍵盤上的“Windows 鍵(有XP圖示的那個)”和“L”鍵,將會有同樣的效果。
4. sysoc.inf:把隱藏的檔案揪出來
Windows XP 隱藏了一些你可能想要刪除或卸載的系統軟體,諸如 Window非法信息essenger,但是你可以讓這些軟體重新顯示出來。使用Windows自帶的記事本或寫字板程式,編輯文本檔案“/windows/inf/sysoc.inf”,搜尋並刪除掉關鍵字“hide”。然後你再進入“控制臺”的“添加/刪除程式”,選擇“添加或刪除 Windows 組件”。你可以發現所有的系統軟體都被顯示出來了,現在就可以卸載它們了。
5. /?:命令行的誘惑
對於那些擅長於操作DOS批處理命令的用戶來說,Windows XP也為他們提供了許多有趣的新命令。其中包括用來創建和監視系統事件的“eventcreate”和“eventtriggers”命令,用來監控各種子系統的運行狀態的“typeperf'”,以及用來操作計畫任務的“schtasks”。
和以前一樣,輸入某個命令,並緊跟其後加上“/?”的後綴,將會提供一系列與這個命令相關的選項。
6. ipv6 install:XP也能玩IPv6
Windows XP 能夠支持 IPv6 ——下一代網際網路的IP協定。但是非常不幸的是,這一功能超出了的網路提供商(ISP)所能支持的服務,所以只能在自己的區域網路中實驗這一功能。請在“運行……”中輸入命令“ipv6 install'”,然後再在命令提示符中輸入“ipv6/?”,可以獲得更多的相關信息。
7.tskill:試試用命令來終止任務
可以最終通過在命令提示符中輸入命令“taskkill/pid”和任務序號,或者僅僅輸入“tskill”以及進程的序號,來終止掉某個任務。想要找出所有正在運行中的任務及其序號?請輸入“tasklist”,這個命令也可以幫助你了解到更多當前系統運行狀態的信息。
8. 快慢自選:瀏覽ZIP壓縮檔
Windows XP會像對待普通資料夾一樣對待ZIP壓縮檔案包,這一功能在運行速度較快的機器上非常的方便,但是在運行速度較慢的機器上卻會拖累系統的整體運行效率。如果電腦的配置並不是很高,可以通過在命令提示符中輸入命令“regsvr32 /u zipfldr.dll”來關閉這一功能 ,讓 WindowsXP 把壓縮檔案包丟在一邊。假如稍候改變了自己的主意,可以通過輸入“regsvr32 zipfldr.dll”來恢復這一功能。
9. ClearType:保護你的心靈之窗
Windows XP 系統支持“ClearType”—— 微軟公司的反鋸齒字型顯示技術 ——但是在默認設定下,這一顯示效果並沒有被打開。該項功能非常值得嘗試,尤其是在你使用電腦多年,糟糕的電腦螢幕已經使你的雙眼變得無比疲憊,視力開始急劇下降的時候。為了開啟這個效果,請用滑鼠右鍵點擊電腦桌面,在彈出選單中選擇“屬性”,“外觀”,“效果”,從第二個下拉選單中選中“ClearType”選項,並選擇開啟。這樣就可以期望在筆記本電腦上獲得最佳的顯示效果。假如你希望在WindowsXP的歡迎登錄畫面中也是用到“ClearType”,請將系統註冊表中的“HKEY_USERS/.DEFAULT/ControlPanel/Desktop/Font非法信息oothingType”選項的值設定為2。
10. 遠程協作:不再受限區域網路
可以通過 Windows XP 的遠程協作功能來幫助某個正在家庭區域網路上使用網路地址轉換(network addresstranslation,NAT)的朋友,雖然這不是自動完成的。讓朋友傳送一封遠程協作邀請,然後編輯這個文本。在RCTICKET屬性下,看到一個NAT IP 地址,可能是“192.168.1.10”之類的形式。用朋友真實的IP位址來替換這一區域網路地址——他們可以在 www.whati非法信息yip.com 網站上查詢到自己的真實IP位址——然後讓它們確
認一下自己防火牆上的3389連線埠是開啟的,隨後你就可以直接進入那台有問題的電腦了。
11.多用戶操作:不必註銷當前用戶
可以不需要註銷掉現有的用戶身份,就以另一個用戶身份運行程式。用滑鼠右鍵點擊相應的執行程式的圖示,選擇“運行方式……”,然後輸入想要使用的用戶名及其相應的密碼。該設定僅僅會被套用在這次程式運行上。當需要以系統管理員的身份來安裝一個程式的時候,這個技巧就會非常有用。但是請注意,可以在系統當中同時以多個不同的用戶身份運行多個程式,這樣做也許會非常有趣,但是會對系統產生不可預見的效果。
12. 瞬時開始自動更新:消除等待的煩惱
Windows XP 將會非常頑固地提示你檢查自動更新,註冊一個微軟 Passport,使用 Windows Messenger以及等等等等。雖然在一段時間過後,這種凡人的打擾信息就會逐漸消失,但是假如感覺自己等不到那個時候,請運行“Regedit”,到系統註冊表的
“HKEY_CURRENT_USER/Software/microsofthttp://windows.chinaitlab.com
/CurrentVersion/Explorer/Advanced”當中,創建一個名為“Ena禁用詞語eBalloonTips”的“DWORD”數值,將其的值設定為0。
13.自動登錄:不必每次輸入密碼
選擇在Windows XP啟動的時候,不需要輸入用戶名和密碼就直接進入系統桌面。請在開始選單中選擇“運行”,並輸入命令“controluserpasswords2”,這個命令將會開啟用戶賬號管理程式。在“用戶”標籤中,找到“為了使用這台電腦,用戶必須輸入用戶名和密碼”的選項,點擊取消這個選項,並保存設定。一個自動登錄設定對話框將會出現;請輸入希望使用的自動登錄的用戶名和密碼。
14. 請個保姆:自動刪除臨時檔案
Internet Explorer 6瀏覽器可以自動地刪除臨時檔案,但這需要進行相關的設定。請打開網路瀏覽器,選擇“工具/Internet選項……”,選擇“高級”,進入到“安全”區域,選取“當瀏覽器關閉時,清空Internet 臨時資料夾”的選項,就可以了。
15. 網路情況隨時掌握:體驗免費網路指示燈
Windows XP 附帶了一個免費的網路活動指示燈的,因為無法看見自己網卡上的 LEDs指示燈。請用滑鼠右鍵點擊電腦桌面上“網路鄰居”的圖示,選擇屬性。再用右鍵點擊區域網路連結或撥號連線的圖示,選擇屬性,然後選中“連線後再通知區顯示出圖示”的選項。選擇保存設定。然後就可以看見在自己電腦桌面的右下角的系統列當中,會出現一個小小的網路圖示,並會在網路通訊激活的時候閃閃發光。
16.不再延時:打造快速開始選單
有些時候,Windows XP的開始選單的彈出速度顯得是太過於從容不迫了,但是可以加速這一過程。需要進入系統註冊表的“HKEY_CURRENT_USER/ControlPanel/Desktop/MenuShowDelay ”選項,將默認設定 400 改為看起來更為簡單的數字,比如說 0 。
17. 無需工具即可批量改名
可以在 Windows視窗當中一次對許多檔案同時進行重命名。需要做的是,在視窗當中高亮選中所有你需要重新命名的檔案,然後用右鍵點擊其中一個,並對它進行重新命名。其他被選中的檔案也將會被命名為這個名字,只是在名字的後面會被用括弧加上不同的數字以示區分。同樣地,在資料夾當中也可以通過“按照名稱查看”來重新排列圖示,或是“按照類型”排列。
18. 邊聽邊看:定製Media Player
Windows Media Player 在播放 CD 音樂的同時,可以顯示出該音樂所屬的相關專輯的圖片 ——假如從自己的CD中向電腦裡面拷貝音樂的時候,它在網際網路上找到相關圖片的的話。假如它沒有找到,或是已經有了許多現成的WMP音樂檔案,可以將自己現有的專輯封面圖片放置在與這些音樂相同的資料夾當中。只需要將這個圖片命名為“資料夾名稱.jpg”的格式,Windows Media Player 就可以識別出該圖片,並將其當中這些音樂的專輯封面,在播放時顯示。
19. Windows鍵:不同組合作用不同
“Windows 鍵 + Break 鍵”會顯示出系統屬性對話框;“Windows 鍵 + D 鍵”會顯示出電腦桌面;“Windows鍵 + Tab 鍵”可以在系統列圖示上進行切換。(Windows 鍵指的是鍵盤上帶Windows XP 標誌的那個按鍵)
作業系統類可執行指令
實地址模式和任何特權級下可執行指令
1.存儲全局描述符表暫存器指令
格式:
SGDT 目標運算元
說明:目標運算元是48位(6位元組)的存儲器運算元。該指令的功能是把全局描述符表暫存器GDTR的內容存儲到目標運算元。GDTR中的16位界限存入目標運算元的低字,GDTR中的32位基地址存入目標運算元的高雙字。該指令對標誌位沒有影響。
2.存儲中斷描述符表暫存器指令
格式:
SIDT 目標運算元
說明:目標運算元是48位(6位元組)的存儲器運算元。該指令的功能是把中斷描述符表暫存器IDTR的內容存儲到目標運算元。IDTR中的16位界限存入目標運算元的低字,IDTR中的32位基地址存入目標運算元的高雙字。該指令對標誌位沒有影響。
實地址模式和在特權級0下可執行的指令
下列指令涉及設定關鍵的暫存器,所以只能在實地址模式和保護模式的特權級0下執行。為了從初始時的實地址模式轉入保護模式,必須做基本的準備工作,例如,設定全局描述符表暫存器GDTR等,因此這些指令也允許在實地址模式下執行。
在保護模式下,如果當前特權級CPI,不為0,執行這些指令將引起錯誤碼為0的通用保護故障。在虛擬8086方式下,因為其CPL為3,所以執行這些指令也將會引起出錯碼為0的通用保護故障。
1.裝載全局描述符表暫存器指令
格式:LGDT 源運算元
說明:源運算元是48位(6位元組)的記憶體運算元。該指令的功能是把源運算元裝入到全局描述符表暫存器GDTR中。運算元的低字是以位元組為單位的段界限,高雙字是段基地址。該指令對標誌位沒有影響。
2.裝載中斷描述符表暫存器指令
格式:
LIDT 源運算元
說明:源運算元48位(6位元組)的記憶體運算元。該指令的功能是把存儲器中的源運算元裝載到中斷描述符表暫存器IDTR中。運算元的低字是以位元組為單位的段界限,高雙字是段基地址。該指令對標誌位沒有影響。
3.控制暫存器數據傳送指令
格式:
MOV 目標運算元,源運算元
說明:控制暫存器數據傳送指令實現CPU的控制暫存器和32位通用暫存器之間的數據傳送。所以,目標運算元和源運算元可以是80386使用的三個控制暫存器和任一32位通用暫存器,但不能同時是控制暫存器。該指令對標誌位沒有影響。
4.清任務切換標誌指令
格式:
CLTS
說明:每當任務切換時,控制暫存器CR0的任務切換標誌TS被自動置l。CLTS指令的功能是將TS標誌清0。
只能在保護模式下執行的指令
下面的指令只能在保護模式下執行,如果在實地址模式下執行這些指令,將引起非法操作碼故障(中斷號為6)。
1.裝載局部描述符表暫存器指令
格式:
LLDT 源運算元
說明:源運算元可以是16位通用暫存器或記憶體運算元。該指令的功能是把源運算元中的內容作為指示局部描述符表LDT的選擇子裝人到LDTR暫存器。該指令不影響標誌位。
源運算元給定的選擇子應該指向GDT中的類型為LDT的描述符。若CPL不為0,那么執行該指令將產生出錯碼為0的通用保護故障。若被裝載的選擇子不指向GDT中的描述符,或者描述符類型不是LDT描述符,那么產生通用保護故障,錯誤碼由該選擇子構成。
2.存儲局部描述符表暫存器指令
格式:
SLDT 目的運算元
說明:目的運算元可以是16位通用暫存器或記憶體運算元。該指令的功能是把局部描述符表暫存器LDTR的內容存儲到目的運算元,即把指向當前任務LDT的選擇子存儲到目的運算元中。該指令不影響標誌位。
3.裝載任務暫存器指令
格式:
LTR 源運算元
說明:源運算元可以是16位通用暫存器或記憶體運算元。該指令的功能是將源運算元作為指向TSS描述符的選擇子裝載到任務暫存器TR。源運算元表示的選擇子不能為空,必須索引位於GDT中的描述符,並且描述符類型必須是可用TSS,該載入的TSS被處理器自動標為“忙”。該指令對標誌沒有影響。若CPI。不為0,那么執行該指令將產生錯誤碼為0的通用保護故障。若被載入的選擇子不指向GDT中的可用TSS描述符,那么產生通用保護故障,錯誤碼由該選擇子構成。
4.存儲任務暫存器指令
格式:
STR 目的運算元
說明:目的運算元可以是16位通用暫存器或記憶體運算元。該指令的功能是把TR所含的指向當前任務TSS描述符的選擇子存儲到目的運算元。該指令不影響標誌位。
Windows可執行指令
實地址模式和任何特權級下可執行指令
1.讀取全局描述符表暫存器指令
格式:
SGDT QWORD PTR DST
功能:把全局描述符表暫存器GDTR的內容保存到記憶體單元DST。其中運算元DST是48位(6位元組)的記憶體運算元。GDTR中的16位限長存入DST的低字,GDTR中的32位基地址存入DST的高雙字。
2.讀取中斷描述符表暫存器指令
格式:
SIDT QWORD PTR DST
功能:把中斷描述符表暫存器GDTR的內容保存到記憶體單元DST。其中運算元DST是48位的記憶體運算元。IDTR中的16位限長存入DST的低字,IDTR中的32位基地址存入DST的高雙字。
3.讀取機器狀態字指令
格式:
SMSW DST
功能:把機器狀態字的內容保存到記憶體單元或暫存器中。其中運算元DST可以是16位的記憶體運算元或暫存器。這裡的機器狀態字是CR0的低16位,如果要取得完整的信息,應該使用CRO暫存器。
4.讀取性能計數器指令
格式:
RDPMC
功能:讀取由ECX指定的40位時間戳計數器,放入EDX:EAX中。EDX存放模式暫存器的高8位,EAX存放模式暫存器的低32位。
性能計數器中可以保存事件計數,例如,已經解碼的指令的條數、收到中斷的次數、Cache裝入的次數。
實地址模式和在特權級0下可執行的指令
下面的指令涉及設定關鍵的暫存器,所以只能在實模式和保護模式的特權級0下執行。系統啟動時進入實模式,為了轉換到保護模式,必須在實模式下建立好保護模式所需的運行環境。例如,設定GDTR、IDTR等。
在保護模式下,如果當前特權級(CPL)不為0,執行這些指令將引起錯誤碼為0的通用保護故障。在虛擬8086方式下,因為其CPL為3,所以執行這些指令也將會引起出錯碼為0的通用保護故障。這樣,就限制了一般的應用程式修改GDTR、IDTR等暫存器和系統數據。
1.清任務切換標誌指令
格式:CLTS
功能:把CR0控制暫存器中的TS標誌清零。
TS標誌置為1,表示已發生過任務切換,在當前任務使用協處理器指令時,產生陷阱。由陷阱處理程式完成協處理器現場的保存和恢復,隨後執行CLTS指令清除Ts標誌,使得當前任務後續使用的協處理器指令不再產生故障。
2.暫停指令
格式:HLT
功能:使處理器暫停執行。進入暫停狀態的系統,只有在接收到一個外部中斷或系統復位信號以後,才能離開暫停狀態。進入暫停狀態後CPU的功耗很低,因此,某些系統利用這個功能來達到省電的目的。
3.設定全局描述符表暫存器指令
格式:LGDT QWORD PTR SRC
功能:把存儲器中的6位元組內容(16位限長,32位基地址)裝入到全局描述符表暫存器GDTR中。其中運算元SRC是48位(6位元組)的記憶體運算元。
4.設定中斷描述符表暫存器指令
格式:LIDT QWORD PTR SRC
功能:把存儲器中的6位元組內容(16位限長,32位基地址)裝入到中斷描述符表暫存器IDTR中。其中運算元SRC是48位(6位元組)的記憶體運算元。
5.設定機器狀態字指令
格式:LMSW DST
功能:把DST的內容裝載到機器狀態字。其中運算元DST可以是16位的記憶體運算元或暫存器。該指令可將機器狀態字中的PE位置為1,以進入保護模式。
由於CPU的控制暫存器CR0的低16位就是機器狀態字,所以,可以通過給CR0賦值的方法來設定機器狀態字。
6.系統暫存器數據傳送指令
格式:MOV DST,SRC
功能:實現控制暫存器/調試暫存器/暫存器和32位通用暫存器之間的數據傳送。
SRC和DST中有一個是通用暫存器(EAX,EBX,ECX,EDX,ESI,EDI,EBP):另一個是控制暫存器(CRO,CRl,CR2)、調試暫存器(DR0,DRl,DR2,DR3,DR6,DR7)或者調試暫存器(TR6,TR7)。
僅在保護模式下可執行的指令
下面的指令只能在保護模式下執行。如果在實模式下執行這些指令,將引起非法操作碼故障(向量號為6)。
1.設定局部描述符表暫存器指令
格式:LLDT SRC
功能:把SRC中的內容作為指示局部描述符表LDT的選擇符裝入到LDTR暫存器。其中,運算元SRC可以是16位通用暫存器或存儲單元。
運算元SRC給定的選擇符應該指示GDT中的類型為LDT(s=0,TYPE=2)的描述符。但SRC也可是一個空選擇符,這樣表示不使用局部描述符表LDT。
該指令只能在特權級0執行。若CPL不為0,那么執行該指令將產生出錯碼為0的通用保護故障。若被裝載的選擇符不指向GDT中的一個LDT描述符,那么產生通用保護故障,錯誤碼由該選擇符構成。
2.讀取局部描述符表暫存器指令
格式:SLDT DST
功能:把局部描述符表暫存器LDTR的內容存儲到存儲單元DST中,即把指向當前任務LDT的選擇符存儲到DST中。其中,運算元DST可以是16位通用暫存器或存儲單元。
3.設定任務暫存器指令
格式:LTR SRC
功能:將SRC的內容作為選擇符裝載到任務暫存器TR。其中,運算元SRC可以是16位通用暫存器或存儲單元。
任務暫存器TR指示當前任務狀態段TSS。隨著任務的切換,TR的內容也隨之改變;如果任務嵌套,那么TR的原值作為連結字保存到新任務的TSS中。但有時候需要直接裝載或者保存TR,這就需要使用LTR指令和STR指令。例如,系統在從實模式切換到保護模式後,要為當前任務建立任務狀態段TSS,並使TR指向這個任務狀態段TSS。
在執行這條指令時,必須首先建立一個TSS,在GDT中設定一個TSS描述符。SRC表示的選擇符不能為空,指向GDT中的TSS描述符,並且描述符類型必須是可用TSS(B=O)。執行指令後,CPU將TSS設定為“忙”(B=1)。
該指令只能在特權級0下執行。若CPL不為0,那么執行該指令將產生錯誤碼為0的通用保護故障。若被載入的選擇符不指示GDT中的可用TSS描述符,那么產生通用保護故障,錯誤碼由該選擇符構成。
4.讀取任務暫存器指令
格式:STR DST
功能:把TR中的選擇符存儲到DST。其中,運算元DST可以是16位通用暫存器或存儲單元。
TR中的值總是當前任務的TSS狀態段的選擇符。
5.調整請求特權級指令
格式:ARPL OPRDl,OPRD2
功能:根據OPRD2選擇符來調整OPRDl選擇符的請求特權級,即RPL。
其中,運算元OPRDl可以是16位通用暫存器或存儲單元,運算元OPRD2是16位通用暫存器。該指令把運算元OPRDl和OPRD2視為兩個選擇符,比較它們的請求特權級。選擇符OPRDl和OPRD2的RPL在它們的最低2位中。如果OPRDl的RPL小於OPRD2的RPL,那么ZF被置1,並把OPRD2的RPL值賦予OPRDl的RPL(使兩個運算元的最低2位相等);否則,ZF被清零。
這條指令通常被用在高特權級的子程式中,主程式在低特權級。主程式傳送過來一個虛擬地址(段選擇符Seg:偏移量Ofs)作為參數。這裡,設主程式的特權級為3,子程式的特權級為0。一般情況下,主程式應該將Seg的RPL設定為3,因為特權級3的程式只能訪問DPL=3的數據段。但是,如果主程式將Seg的RPL設定為0,主程式就可能通過子程式來訪問DPL--0的數據段。這時,在子程式中,就可以執行“ARPL Seg,csIIIai。”指令,CS。ai。是主程式的CS值,可以從0級堆疊中取得。Seg的RPL=0,CS。aill的RPL=3,因此執行這條指令後,Seg的RPL被調整為3,置ZF=l。如果Seg的RPL和CSfIIai。的RPL相同,表示主程式是一7卜“誠實”的程式,沒有企圖訪問DPL=0的數據段,結果ZF=0。
6.讀取存取許可權指令
格式:LAR OPRDl.OPRD2
功能:將OPRD2選擇符指向的描述符內的屬性欄位裝入OPRDl。其中,運算元OPRDI可以是16位或32位通用暫存器,運算元OPRD2是16位或32位通用暫存器或存儲單元。運算元OPRDl和OPRD2的大小必須一致。
該指令把運算元OPRD2視為選擇符(當OPRD2為32位時,僅使用其低16位)。如果OPRD2所指示的描述符滿足下面3個條件,那么零標誌ZF被置1,並把描述符內的屬性欄位裝入OPRDl;否則,zF清零,OPRDl保持不變。
(1)在描述符表的範圍內;
(2)描述符是代碼/數據段描述符、LDT描述符、TSS描述符、任務門描述符、調用門述符之一;
(3)CPL和OPRD2的RPL都不大於DPL(即DPL/>MAX(CPL.RPL))。
在滿足條件的情況下,裝入到OPRDl的屬性欄位是描述符的高4位元組和00F0FF00H相“與”的結果。注意,如果使用16位運算元,那么只有高4位元組中的低16位和0FF00H相“與”後保存到OPRDl,即保存到OPRDl的屬性欄位不包括G位、D位和AVL位等。
7.讀取段界限指令
格式:LSL OPRDl,OPRD2
功能:將OPRD2選擇符指向的描述符內的限長裝入OPRDl。其中,運算元OPRDl可以是16位或32位通用暫存器,運算元OPRD2是16位或32位通用暫存器或存儲單元。運算元OPRDl和OPRD2的尺寸必須一致。
該指令把運算元OPRD2視為選擇符(當為32位時,僅使用低16位)。如果OPRD2所指示的描述符滿足下面3個條件,那么零標誌ZF被置1,並把描述符內的限長欄位裝入OPRDl:否則,ZF清零,OPRDl保持不變。
(1)在描述符表的範圍內;
(2)描述符是代碼/數據段描述符、LDT描述符、TSS描述符之一;
(3)CPL和OPRD2的RPL都不大於DPL(DPL≥MAX(CPL,融)L)。
在滿足條件的情況下,存入到OPRDl的限長欄位以位元組為單位。如果描述符中的限長欄位以4KB為單位(G=1),那么裝入到OPRDl時限長欄位被左移12位,空出的低12位全部置為1。如果OPRDl使用16位運算元,那么只有段界限的低16位被存入到OPRDl。
8.讀檢驗指令
格式:VERR OPRD
功能:判斷OPRD選擇符的段是否可讀。其中,運算元OPRD可以是16位通用暫存器或存儲單元,也可以是32位通用暫存器或存儲單元。
把OPRD的內容作為一個選擇符(運算元OPRD為32位時僅使用低16位),判斷在當前特權級上該選擇符所指示的段是否可讀。如果該選擇符指示一個合法的存儲段描述符,並且在當前特權級上可以對所描述的段進行讀操作,那么ZF被置為1,否則ZF被清零。
利用讀檢驗指令VERR和寫檢驗指令VERW可分別檢查在當前特權級下能否讀或寫指定的段,從而避免引起不必要的異常。
9.寫檢驗指令
格式:VERW OPRD
功能:判斷OPRD選擇符的段是否可寫。其中,運算元OPRD可以是16位通用暫存器或存儲單元,也呵以是32位通用暫存器或存儲單元。
把OPRD的內容作為一個選擇符(當32位時僅使用低16位),判斷在當前特權級上該選擇符所指示的段是否可寫。如果該選擇符指示合法的一個存儲段描述符,並且在當前特權級上可以對所描述的段進行寫操作,那么ZF被置為1,否則ZF被清零。
10.不寫回方式清除Cache項指令
格式:INVD
功能:清除CPU內的指令Cache和數據Cache,並且向外部Cache電路傳送一個特殊的匯流排信號,迫使它也清除Cache。CPU內的Cache不寫回到記憶體中。
這個指令是危險的。因為CPU內部的Cache數據如果還沒有被寫回到記憶體,執行這個指令會使CPU內部的Cache數據被丟棄,而沒有寫入記憶體中。這個指令通常用在測試程式中,或者當程式發現Cache內容和主存不一致時,作為錯誤恢復過程的一部分。
一般應該使用WBINVD指令來清除Cache項。
INVD指令只能在保護模式的特權級0下執行。
11.寫回方式清除Cache項指令
格式:WBINVD
功能:清除CPU內的指令Cache和數據Cache,並且向外部Cache電路傳送一個特殊的匯流排信號,迫使它也清除Cache。CPU內的Cache寫回到記憶體中。WB代表writeback。
執行這個指令會清空Cache項,Cache中的內容寫回到記憶體中。
WBINVD指令只能在保護模式的特權級0下執行。
12.清除TLB表項指令
格式:INVLPG OPRD
功能:CPU的TLB保存了最近使用過的32個頁表項。INVLPG指令首先找到記憶體運算元OPRD所在的物理記憶體頁面,再將該頁面的TLB表項Cache清除掉。
INVLPG指令只能在保護模式的特權級0下執行。
13.退出系統管理模式指令
格式:RSM
功能:使CPU退出系統管理模式。
CPU收到一個SMM中斷時,進入系統管理模式SMM(system maIlagement mode),並將CPU暫存器等信息保存起來。執行RSM指令,使CPU退出系統管理模式,並恢復CPU暫存器等內容。在系統管理模式中,CPU可以運行電源管理、系統硬體管理或其他一些特殊程式。
1 4.讀取模式暫存器指令
格式:RDMSR
功能:讀取由ECX指定的64位模式暫存器(model specific register),放入EDX:EAX中。EDX存放模式暫存器的高32位,EAX存放模式暫存器的低32位。
執行CPUID指令,EDX的第5位為1時,支持模式暫存器。
模式暫存器用於CPU的測試、執行跟蹤、性能監測和錯誤檢查等。
1 5.設定模式暫存器指令
格式:WRMSR
功能:將EDX:EAX寫入ECX指定的模式暫存器。EDX存放模式暫存器的高32位,EAX存放模式暫存器的低32位。
1 6.讀取性能計數器指令
格式:RDTSC
功能:讀取64位時間戳計數器,放入EDX:EAX中。EDX存放時間戳計數器的高32位,EAX存放時間戳計數器的低32位。
CPU在每一個時鐘周期都將時問戳計數器加1,在復位時將此計數器的值清零。
17.鎖匯流排指令前綴
格式:LOCK
功能:使後續的一條指令能獨占匯流排。
嚴格地講,LOCK並不是一個完整的指令,而只是一個指令前綴。它放置在其他指令的前面。在執行LOCK後面的一條指令時,CPU將其LOCK彝引腳置為有效電平,保證系統內的其他CPU不會使用匯流排。這條指令執行完畢後,CPU將LoCK#引腳置為無效電平。
LOCK前綴通常和BTS一起使用,保證BTS指令對記憶體運算元的讀一修改一寫3步操作不被其他CPU所打斷。