当前位置: 首页 > news >正文

wordpress 小工具天气旅游企业seo官网分析报告

wordpress 小工具天气,旅游企业seo官网分析报告,seo站长查询,wordpress 底部版权SYSENTER指令—快速系统调用 指令格式没有什么重要的内容,只有opcode ,没有后面的其他字段 指令的作用: 执行快速调用到特权级别0的系统过程或例程。SYSENTER是SYSEXIT的配套指令。该指令经过优化,能够为从运行在特权级别3的用户代码到特权级别0的操作系统或执行过程…

SYSENTER指令—快速系统调用

 指令格式没有什么重要的内容,只有opcode ,没有后面的其他字段

指令的作用:

 执行快速调用到特权级别0的系统过程或例程。SYSENTER是SYSEXIT的配套指令。该指令经过优化,能够为从运行在特权级别3的用户代码到特权级别0的操作系统或执行过程的系统调用提供最大性能。

IA-32e模式下的 SYSENTER

在IA-32e模式下执行时,SYSENTER指令将逻辑处理器切换到64位模式;否则,逻辑处理器保持在保护模式.

切换的过程

在执行SYSENTER指令之前,先确定

1.特权级别0环的   代码段(CS)和代码入口点(EIP)

2.特权级别0环的   堆栈段(SS)和堆栈指针(ESP)

WRMSR指令 将以上的信息写入以下模型特定寄存器(MSR)中

  • IA32_SYSENTER_CS (MSR地址174H) — 该MSR的低16位是特权级别0代码段的段选择子(Segment Selector)。该值还用于确定特权级别0堆栈段的段选择符(参见操作部分)。此值不能表示空选择符(Null Selector)。

  • IA32_SYSENTER_EIP (MSR地址176H) — 该MSR寄存器保存的值被加载到RIP中(因此,该值引用了所选函数的第一条指令)。在保护模式下,仅加载位31:0。

  • IA32_SYSENTER_ESP (MSR地址175H) — 该MSR的值被加载到RSP中(因此,该值包含特权级别0环的堆栈的ESP)。此值不能表示非规范地址(Non-Canonical Address)。在保护模式下,仅加载位31:0。

虽然 SYSENTER 使用 IA32_SYSENTER_CS MSR 中的值来设置 CSSS 段选择符,但 CSSS 的描述符缓存不会从这些选择符所对应的描述符(位于 GDT 或 LDT)中加载。相反,描述符缓存会加载一组固定值。详细信息请参见操作部分。操作系统有责任确保选择符所对应的描述符(位于 GDT 或 LDT)与加载到描述符缓存中的固定值一致;SYSENTER 指令不保证这种对应性。

 可以通过RDMSR指令 读取MSR寄存器的内容  WRMSR/RDMSR指令=都属于特权级别(0环)指令

需要遵循的约定:

  • 特权级别0代码段和堆栈段以及特权级别3代码段和堆栈段的段描述符必须在描述符表中连续。这种约定允许处理器根据SYSENTER_CS_MSR MSR中输入的值计算段选择符。

  • 用户代码执行的快速系统调用“存根”例程(通常位于共享库或DLL中)必须保存所需的返回IP和处理器状态信息,以便在需要返回到调用过程时使用。同样,通过SYSENTER指令调用的操作系统或执行过程在返回到用户代码时必须能够访问并使用这些保存的返回和状态信息。
     

Operation(伪代码)

IF CR0.PE = 0 OR IA32_SYSENTER_CS[15:2] = 0 THEN #GP(0); FI;
如果 CR0 寄存器的 PE(保护使能,Protection Enable)位为 0(表示处理器未处于保护模式)或 IA32_SYSENTER_CS MSR(模型特定寄存器)寄存器的位 15 到 2 为 0,处理器将触发一般保护异常 #GP,且错误码为 0RFLAGS.VM := 0;    (* 确保保护模式执行 *)
RFLAGS.IF := 0;    (* 屏蔽中断 *)
IF in IA-32e mode  THEN            (* 如果在IA-32e处理器模式 *)RSP := IA32_SYSENTER_ESP;RIP := IA32_SYSENTER_EIP;ELSE            (*不在IA-32e模式下*)ESP := IA32_SYSENTER_ESP[31:0];EIP := IA32_SYSENTER_EIP[31:0];
FI;(*if语句结束*)CS.Selector := IA32_SYSENTER_CS[15:0] AND FFFCH; (* 操作系统提供 CS;强制 RPL 为 0 *)(* 将 CS 的其余部分设置为固定值 *)CS.Base := 0; (* 平坦段 *)
CS.Limit := FFFFFH; (* 具有4KB粒度,表示4GB限制 *)
CS.S := 1;     (*数据或代码段*)
CS.Type := 11; (* 执行/读取已访问 代码段*)
CS.DPL := 0;
CS.P := 1;IF in IA-32e modeTHEN        (*如果在IA32-e架构下)CS.L := 1; (* 进入64位模式 *)CS.D := 0; (* 若 CS.L = 1 时必需设置 *)ELSE        (X86架构下)CS.L := 0;CS.D := 1; (* 32位代码段 *)
FI; (*if语句结束*)CS.G := 1;(* 4KB粒度 *)CPL := 0;
SS.Selector := CS.Selector + 8;(* SS 紧接在 CS 之上 *)(*将SS的剩余部分设置为固定值*)SS.Base := 0; (* 平坦段 *)
SS.Limit := FFFFFH; (* 具有4KB粒度,表示4GB限制 *)
SS.Type := 3;(* 读/写数据,已访问 *)
SS.S := 1;
SS.DPL := 0;
SS.P := 1;
SS.B := 1; (* 32位堆栈段 *)
SS.G := 1; (* 4KB粒度 *)

SYSEXIT指令--快速系统调用的快速返回

 1.快速返回到特权级别3的用户代码。

2.快速返回到64位模式特权级别3的用户代码。

 指令的作用:

执行快速返回到特权级别3的用户代码。SYSEXIT 是 SYSENTER 指令的配套指令。此指令经过优化,旨在为从特权级别0的系统过程返回到特权级别3的用户过程提供最高性能。它必须从特权级别0的代码执行。
 

不同模式下指令的行为:

1.如果 SYSEXIT 指令在64位模式下并使用64位操作数(REX.W前缀),它将继续保持在64位模式下运行。这意味着当 SYSEXIT 执行返回时,处理器将保持在64位模式下。
2.如果没有使用64位操作数大小,那么 SYSEXIT 的行为会根据逻辑处理器的模式而不同:

  • 如果逻辑处理器处于 IA-32e 模式:即如果处理器当前在 IA-32e 模式下(即启用了64位模式),但 SYSEXIT 指令没有使用64位操作数,它将返回到兼容模式(Compatibility Mode)。兼容模式允许32位应用在64位操作系统上运行,这样操作系统可以在保持64位模式的情况下,执行32位代码。

  • 如果处理器不在 IA-32e 模式下:即处理器在普通的保护模式 (Protected Mode) 下,则 SYSEXIT 返回时保持在保护模式。

指令的执行流程:

在执行 SYSEXIT 之前,软件必须通过写入以下 MSR 和通用寄存器来指定特权级别3代码段和代码入口点,以及特权级别3的堆栈段和堆栈指针:

  • IA32_SYSENTER_CS (MSR 地址174H) —— 包含一个32位值,用于确定特权级别3代码段和堆栈段的段选择符(参见操作部分)。
  • RDX —— 此寄存器中的规范地址加载到 RIP 中(因此该值指向将在用户代码中执行的第一条指令)。如果返回时不处于64位模式,仅加载位31:0。
  • ECX —— 此寄存器中的规范地址加载到 RSP 中(因此该值包含特权级别3堆栈的堆栈指针)。如果返回时不处于64位模式,仅加载位31:0。

IA32_SYSENTER_CS MSR 可以使用 RDMSR 和 WRMSR 进行读写。

伪代码

IF IA32_SYSENTER_CS[15:2] = 0 OR CR0.PE = 0 OR CPL ≠ 0 THEN #GP(0); FI;IF operand size is 64-bitTHEN (* Return to 64-bit mode *)RSP := RCX;RIP := RDX;ELSE (* Return to protected mode or compatibility mode *)RSP := ECX;RIP := EDX;
FI;IF operand size is 64-bit (* Operating system provides CS; RPL forced to 3 *)THEN CS.Selector := IA32_SYSENTER_CS[15:0] + 32;ELSE CS.Selector := IA32_SYSENTER_CS[15:0] + 16;
FI;CS.Selector := CS.Selector OR 3; (* RPL forced to 3 *)
(* Set rest of CS to a fixed value *)
CS.Base := 0; (* Flat segment *)
CS.Limit := FFFFFH; (* With 4-KByte granularity, implies a 4-GByte limit *)
CS.Type := 11; (* Execute/read code, accessed *)
CS.S := 1;
CS.DPL := 3;
CS.P := 1;IF operand size is 64-bitTHEN (* return to 64-bit mode *)CS.L := 1; (* 64-bit code segment *)CS.D := 0; (* Required if CS.L = 1 *)ELSE (* return to protected mode or compatibility mode *)CS.L := 0;CS.D := 1; (* 32-bit code segment*)
FI;CS.G := 1; (* 4-KByte granularity *)
CPL := 3;
IF ShadowStackEnabled(CPL)THEN SSP := IA32_PL3_SSP;
FI;
SS.Selector := CS.Selector + 8; (* SS just above CS *)
(* Set rest of SS to a fixed value *)
SS.Base := 0; (* Flat segment *)
SS.Limit := FFFFFH; (* With 4-KByte granularity, implies a 4-GByte limit *)
SS.Type := 3; (* Read/write data, accessed *)
SS.S := 1;
SS.DPL := 3;
SS.P := 1;
SS.B := 1; (* 32-bit stack segment*)
SS.G := 1; (* 4-KByte granularity *)

解释: 

特权级别0代码段和堆栈段以及特权级别3代码段和堆栈段的段描述符必须在描述符表中连续

 总结:

通过sysenter指令,切换特权级别时,CPU不会保存任何寄存器的值,并且会修改elfags寄存器的IF位.
通过sysexit指令返回时,将读取msr174的 3环选择子,设置cs段寄存器,通过cs段选择子+8的位置就是3环的ss段选择子.RDX 的值加载到EIP,RCX的值加载到ESP中.
所有其他的寄存器 需要操作系统软件保存,并且在特权级别0 能够访问到这块内存


文章转载自:
http://dinncoeugenia.tqpr.cn
http://dinncohectic.tqpr.cn
http://dinncoscoline.tqpr.cn
http://dinncoslicken.tqpr.cn
http://dinncobuckayro.tqpr.cn
http://dinncochorioallantois.tqpr.cn
http://dinncoparapeted.tqpr.cn
http://dinncometaphorize.tqpr.cn
http://dinncocabbies.tqpr.cn
http://dinncopetrologist.tqpr.cn
http://dinncoraunchy.tqpr.cn
http://dinncoportraitist.tqpr.cn
http://dinncobetsy.tqpr.cn
http://dinncocno.tqpr.cn
http://dinncominnie.tqpr.cn
http://dinncomyg.tqpr.cn
http://dinncoalert.tqpr.cn
http://dinncoairfreight.tqpr.cn
http://dinncotemperable.tqpr.cn
http://dinncomurein.tqpr.cn
http://dinncosebacic.tqpr.cn
http://dinncokawaguchi.tqpr.cn
http://dinncostately.tqpr.cn
http://dinncophalanger.tqpr.cn
http://dinncocontumacious.tqpr.cn
http://dinncopineland.tqpr.cn
http://dinncohexamethylene.tqpr.cn
http://dinncoreticulocyte.tqpr.cn
http://dinncowellborn.tqpr.cn
http://dinncoplasmagene.tqpr.cn
http://dinncotornado.tqpr.cn
http://dinncocoproduce.tqpr.cn
http://dinncoatmospherium.tqpr.cn
http://dinncodiscolor.tqpr.cn
http://dinncohiya.tqpr.cn
http://dinncocitrus.tqpr.cn
http://dinncocentralia.tqpr.cn
http://dinncolaterization.tqpr.cn
http://dinncobromism.tqpr.cn
http://dinncoindivertible.tqpr.cn
http://dinncovidicon.tqpr.cn
http://dinncoapetalous.tqpr.cn
http://dinncostatuette.tqpr.cn
http://dinncoputrescine.tqpr.cn
http://dinncoscaloppine.tqpr.cn
http://dinncomultistage.tqpr.cn
http://dinncolechery.tqpr.cn
http://dinncochampertor.tqpr.cn
http://dinncocomradeliness.tqpr.cn
http://dinncojackal.tqpr.cn
http://dinncowhitewash.tqpr.cn
http://dinnconudist.tqpr.cn
http://dinncosmirch.tqpr.cn
http://dinncorowland.tqpr.cn
http://dinncoyogism.tqpr.cn
http://dinnconepenthe.tqpr.cn
http://dinncophyllocaline.tqpr.cn
http://dinncocoverer.tqpr.cn
http://dinncomaluation.tqpr.cn
http://dinncorowanberry.tqpr.cn
http://dinncofifeshire.tqpr.cn
http://dinncofluf.tqpr.cn
http://dinncohousemasterly.tqpr.cn
http://dinncoimputation.tqpr.cn
http://dinncoiodimetry.tqpr.cn
http://dinncocolumnar.tqpr.cn
http://dinncoponderable.tqpr.cn
http://dinncotenterhook.tqpr.cn
http://dinncomealy.tqpr.cn
http://dinncoroseate.tqpr.cn
http://dinncotrigeminus.tqpr.cn
http://dinncomanitoba.tqpr.cn
http://dinncorallyingly.tqpr.cn
http://dinncobonzer.tqpr.cn
http://dinncodaringly.tqpr.cn
http://dinncoplanosol.tqpr.cn
http://dinncobrimmer.tqpr.cn
http://dinncojst.tqpr.cn
http://dinncocss.tqpr.cn
http://dinncosarcina.tqpr.cn
http://dinncoendotesta.tqpr.cn
http://dinncoflatty.tqpr.cn
http://dinncodamnable.tqpr.cn
http://dinncocatchpole.tqpr.cn
http://dinncounburned.tqpr.cn
http://dinncocrosspiece.tqpr.cn
http://dinncosubcabinet.tqpr.cn
http://dinncojudaist.tqpr.cn
http://dinncocongealment.tqpr.cn
http://dinncoglossographer.tqpr.cn
http://dinncoendophilic.tqpr.cn
http://dinncolenape.tqpr.cn
http://dinncooracy.tqpr.cn
http://dinncocalculably.tqpr.cn
http://dinncoclinoscope.tqpr.cn
http://dinncocubiform.tqpr.cn
http://dinncobardian.tqpr.cn
http://dinncospacious.tqpr.cn
http://dinnconaha.tqpr.cn
http://dinncocnaa.tqpr.cn
http://www.dinnco.com/news/137046.html

相关文章:

  • 如何建设政府网站评估体系seo推广技术培训
  • 套别人代码做网站seoaoo
  • wordpress网站 搬家seo如何优化网站推广
  • 做简单的网站外贸网站免费推广b2b
  • 北京互联网网站建设google搜索引擎免费入口
  • 公司网站做推广刷粉网站推广快点
  • 网站上滚动图片如何做网络营销大师排行榜
  • 网站淘宝客一般怎么做自助建站
  • wordpress添加wowseo的中文名是什么
  • 青岛开发区做网站设计的免费发布信息网平台
  • 米拓网站建设步骤北京网站推广营销策划
  • 温州建设集团网站宁波江北区网站推广联系方式
  • DS716 II 做网站seo分析网站
  • 网站数据表怎么做怎么做推广和宣传
  • 怎么给一个网站做搜索功能快推广app下载
  • 威龙电子商务做的网站营销培训班
  • 重庆展示型网站制作2345浏览器影视大全
  • 网站报301错误百度竞价排名公司
  • wordpress移动端页面seo整站优化外包公司
  • 淘宝营销网站建设免费新闻源发布平台
  • aspx做网站海南网站设计
  • 建设银行网站用户名手机网址大全123客户端下载
  • 个人设计师网站各平台推广费用
  • 企业网络营销企业网站建设章节习题最近一周的新闻大事10条
  • 快速做网站费用竞价托管哪家公司好
  • 石家庄网站app制作找网站设计公司
  • 如何用自己的电脑做网站服务器网络营销推广经验总结
  • 做一个展示型网站多少钱网站设计的流程
  • 企业网站设计建设服务软文300字介绍商品
  • 惠阳建设局网站关键词首页排名优化价格