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

MSR寄存器访问

1.介绍

MSR是CPU的一组64位寄存器,每个MSR都有它的地址值(如下图所示),可以分别通过RDMSR 和WRMSR 两条指令进行读和写的操作。
在这里插入图片描述
如图中为8个P-state寄存器,地址分别为0xC001 0064 ~ 0xC001 006B,每个寄存器64bit。

2.读取MSR

MSR的读取,使用rdmsr指令:

  • 先向ECX寄存器,写入欲访问MSR地址;
  • 再执行rdmsr指令;
  • 寄存器数据(64位)被读取到EDX和EAX寄存器。

高32位放在EDX寄存器,低32位放在EAX寄存器。

mov ecx,176H   // IA32_SYSENTER_EIP 寄存器的地址
rdmsr           // 读MSR内容到 EDX:EAX 寄存器

3.写入MSR

MSR的写入,使用wrmsr指令:

  • 先向ECX寄存器,写入欲访问MSR地址;
  • 再向EDX和EAX寄存器,写入数据(64位);
  • 最后执行wrmsr指令。

高32位放在EDX寄存器,低32位放在EAX寄存器。

mov rcx,176H
mov rdx,KERNEL_SERVICE_ENTRY
mov rax,rdx
shr rdx,32        ;拆分到EDX:EAX 放入 64 位的值
wrmsr
http://www.lryc.cn/news/11620.html

相关文章:

  • ArcGIS:模型构建器实现批量按掩膜提取影像
  • 算法刷题打卡第94天: 找出给定方程的正整数解
  • 浅析SAS协议(1):基本介绍
  • 93.【Vue-细刷-02】
  • Allegro负片层不显示反盘的原因和解决办法
  • ACM数论 裴蜀定理(贝祖定理)
  • 基础篇—CSS Position(定位)解析
  • 正则表达式与grep
  • 开发必备的IDEA 插件!效率提升 50 倍!
  • aws eks 集群访问ecr仓库拉取镜像的认证逻辑
  • Linux Socket Buffer介绍
  • ACL与NAT
  • 使用gdb来debug程序并查找Segmentation fault原因
  • vbs简单语法及简单案例
  • 学板绘课程学费一般多少钱
  • 48.在ROS中实现local planner(1)- 实现一个可以用的模板
  • jenkins基础部署
  • Unity3D -知识点(1)
  • 【学习笔记】NOIP暴零赛3
  • Java JSR规范列表
  • Java必备小知识点1
  • JavaScript作用域、闭包
  • JavaScript Date(日期) 对象
  • rust过程宏 proc-macro-workshop解题-4-sorted
  • 数据结构与算法—队列
  • AcWing3416.时间显示——学习笔记
  • 贴吧手机端防删图GIF动态图制作解析
  • iOS接入Google登录
  • 【C语言】大小端字节序问题
  • Linux | 网络通信 | 序列化和反序列化的讲解与实现