可执行指令(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 标志的那个按键)
操作系统类可执行指令
实地址模式和任何特权级下可执行指令
格式:
SGDT 目标操作数
说明:目标操作数是48位(6字节)的存储器操作数。该指令的功能是把全局描述符表
寄存器GDTR的内容存储到目标操作数。GDTR中的16位界限存入目标操作数的低字,GDTR中的32位基
地址存入目标操作数的高双字。该指令对标志位没有影响。
格式:
SIDT 目标操作数
说明:目标操作数是48位(6字节)的存储器操作数。该指令的功能是把中断描述符表
寄存器IDTR的内容存储到目标操作数。IDTR中的16位界限存入目标操作数的低字,IDTR中的32位基地址存入目标操作数的高双字。该指令对标志位没有影响。
实地址模式和在特权级0下可执行的指令
下列指令涉及设置关键的
寄存器,所以只能在实地址模式和
保护模式的特权级0下执行。为了从初始时的实地址模式转入保护模式,必须做基本的准备工作,例如,设置全局描述符表寄存器GDTR等,因此这些指令也允许在实地址模式下执行。
在保护模式下,如果当前特权级
CPI,不为0,执行这些指令将引起错误码为0的通用保护故障。在虚拟8086方式下,因为其CPL为3,所以执行这些指令也将会引起出错码为0的通用保护故障。
格式:LGDT 源操作数
说明:源操作数是48位(6字节)的内存操作数。该指令的功能是把源操作数装入到全局描述符表寄存器GDTR中。操作数的低字是以字节为单位的段界限,高双字是段基地址。该指令对标志位没有影响。
格式:
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.存储局部描述符表寄存器指令
格式:
说明:目的操作数可以是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所打断。