热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在用户模式下,x86CPU可以读取任何寄存器的值吗?

如何解决《在用户模式下,x86CPU可以读取任何寄存器的值吗?》经验,为你挑选了1个好方法。

我读到有些寄存器在用户模式下x86 CPU无法修改(我相信这些寄存器称为“特权寄存器”)。

但是,x86 CPU可以在用户模式下读取这些寄存器的值,还是不允许读取?



1> Hadi Brais..:

您通常用于计算的所有寄存器都可以在任何模式下读取/写入(GP整数,x87 / MMX,XMM / YMM / ZMM和AVX512 k0-7掩码寄存器),但是实际上有许多寄存器是模式/控制设置。某些“特殊”寄存器可以写在用户空间中,例如段寄存器,MPX bnd寄存器。


以下寄存器无法在用户模式(特权级别> 0)中读取或写入:

所有MSR寄存器。这些包括MTRR。可以使用WRMSR/ 以外的指令来访问某些寄存器RDMSR。这样的寄存器可以在用户模式下访问。例如,内核可以允许用户代码使用WRPMCRDPMC指令访问PMC寄存器。

GDTR,IDTR,LDTR和TR。

控制寄存器CR0-15。但是,在Intel处理器上,如果CR4.UMIP= 0,CR0则可以使用读取SMSW。在AMD处理器CR4.UMIP上不可用,SMSW可以无条件地以任何特权级别执行。

调试寄存器DR0-15。

测试80486上的TR3-7和80386上的TR6-7。

EFLAGS英特尔手册第2卷中所述,允许对寄存器进行的修改有些复杂:

当在特权级大于0但小于或等于IOPL的受保护,兼容性或64位模式下运行时,可以修改所有标志,除了IOPL字段和RF,IF,VIP,VIF和VM;这些仍然不受影响。仅当操作数大小属性为32时,才可以修改AC和ID标志。仅当以至少与IOPL一样特权的级别执行时,才更改中断标志(IF)。如果在特权不足的情况下执行POPF / POPFD指令,则不会发生异常,但特权位不会改变。

在无虚拟8086模式扩展(CR4.VME = 0)的虚拟8086模式(EFLAGS.VM = 1)下运行时,仅当IOPL = 3时才可以使用POPF / POPFD指令;否则,将发生一般保护异常(#GP)。如果启用了虚拟8086模式扩展(CR4.VME = 1),则可以在IOPL <3的虚拟8086模式下执行POPF(但不能执行POPFD)。


推荐阅读
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • 三、查看Linux版本查看系统版本信息的命令:lsb_release-a[root@localhost~]#lsb_release-aLSBVersion::co ... [详细]
  • 主函数:CStringGetCPUIDString()Copyright(C)shangweixiao2011 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • SQL Server 2008 到底需要使用哪些端口?
    SQLServer2008到底需要使用哪些端口?-下面就来介绍下SQLServer2008中使用的端口有哪些:  首先,最常用最常见的就是1433端口。这个是数据库引擎的端口,如果 ... [详细]
  • UMTS基础知识汇总
    协议框架23G接口UMTS实体EntityNameDescriptionAuCAuthenticationCenterCBCCellBroadcastCenterC-RNCCon ... [详细]
  • FILETYPE*filetype.txt*ForVimversion6.4.文件类型*filetype**file-type*1.文件类型|filetypes|2.文件类型插 ... [详细]
  • A题这题贼水,直接暴力就可以了。用个bool数组记录一下,如果某一天,当前剩下的最大的出现了的话,就输出一段。1#include<stdio.h>2intn;3boolvi ... [详细]
author-avatar
1500799277_a9483d_353
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有