关于MSR寄存器地址的问题

发布于 2022-09-18 10:22:46 字数 2186 浏览 10 评论 0

、图

msr.jpg (52.63 KB, 下载次数: 25)

下载附件

2009-12-04 19:16 上传


--来自于inel手册
在上图,我们可以看到,用红线圈着的register address
起先我认为是那个register address影射到物理内存的地址,但那明显是错的!!

-----------------------------------------------------------------------------------------------------------------------

查了一下,在AMD和intel手册中都没有看到对msr地址的解释,倒是有rdmsr和wrmsr指令与msr有关,查了一下用法

]RDMSR        0F 32        不影响标志位        把ECX指定的模型专用寄存器内容送EDX:EAX        RDMSR
WRMSR        0F 30        不影响标志位        把EDX:EAX的内容写入ECX指定的模型专用寄存器        WRMSR

再看,下面的一段代码,摘自---pediy

  1. //coded by greatcsk

  2. //开启BTS
  3.         mov ecx,MSR_DEBUGCTL
  4.         mov eax,0x1c
  5.         WRMSR


  6. //关闭BTS
  7.         mov ecx,MSR_DEBUGCTL
  8.         xor  eax,eax
  9.         WRMSR
复制代码

所以我想,那个msr的地址,是来对ecx的配置!里面的值对应着相应的msr。

以上只是本人的猜测,如各位知道的话,请不啬赐教

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

心头的小情儿 2022-09-25 10:22:47

AMD / Intel 的 manual 确实没有对 MSR 寄存器进行解释,

Intel 的文档甚至没有一节是对 MSR 进行过描述。

一般的应用程序不会用到,连 OS 也甚少使用 MSR,只有一些特殊应用才使用 MSR,如:一些超频软件。

大量应用 MSR 的只有在 BIOS 场合,BIOS 是需要和 MSR 打交道的。

而且 MSR 与 processor 太相关了。
---------------------------------------------------------

我估计,因此并没进行描述的必要。

----------------------------------------------------------------------------------------------

对于 MSR 寄存器可以理解为 MSR 寄存器堆或 MSR 寄存器组

MSR 寄存器组中的 每个 64 位 MSR 寄存器有一个 ID 值(编号)

那么,读/写 MSR 寄存器 就需要提供它的 ID(编号)

ID 值放在 ecx 寄存器进行索引。

edx:eax 就存放着:读出来以及要写进去的 64 位值

云之铃。 2022-09-25 10:22:47

看来,也只能先那么理解了

枕花眠 2022-09-25 10:22:47

学习下

毁梦 2022-09-25 10:22:47

寄存器编址,与寄存器在内存的映射,是两回事吧?
可外部使用的寄存器,其编址是供指令编码用的。譬如,有8个寄存器,依次编号为000-111,则在指令里就可以安排3位的寄存器域。
内部使用的寄存器,其编址是供微指令编码用的,道理类似。
有些CPU(好像MCS-51也是),寄存器可以映射到内存,它就有一个内存地址。

莫言歌 2022-09-25 10:22:47

我觉得也是这样的,试了一下,没有出现GP错误,应该是正确的。Intel文档中对此语焉不详。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文