複製鏈接
請複製以下鏈接發送給好友

可執行指令

鎖定
可執行指令(executable instruction)是指機器或系統中可以執行併產生作用的指令。
中文名
可執行指令
外文名
executable instruction
應用領域
計算機等
實    質
指令
特    徵
可以執行而不會產生錯誤
涉及系統
Windows、Linux等

可執行指令簡介

不同的機器或系統的可執行指令大不相同。下面將舉例對可執行指令進行説明。

可執行指令Windows下20個特殊的執行命令

1. systeminfo:讓XP列出更多有用信息 [1] 
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等,因此這些指令也允許在實地址模式下執行。 [2] 
在保護模式下,如果當前特權級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.讀取全局描述符表寄存器指令 [2] 
格式:
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所打斷。
參考資料
  • 1.    孫力娟等編著.微型計算機原理與接口技術:清華大學出版社,2007.2:第410頁
  • 2.    譚毓安 張雪蘭編著.Windows彙編語言程序設計教程:電子工業出版社,2005年04月第1版:390