作者suhorng (飞扬)
站内ASM
标题Re: [问题] 怎麽切换到保护模式
时间Sun Aug 31 10:49:28 2008
※ 引述《swhpp (qq)》之铭言:
: 最近要写一个可以读取cpu msr的程式
: 在网路上看到可用rdmsr指令但会有
: instruction or register not accepted in current CPU mode
: 的错误,查了一下有人说要在保护模式下才可,
: 不知道有没有大大会,或者有没有其他办法可以实现读取cpu msr
: 麻烦大家赐教罗^^
: 另外我在网路上看到有用改CR0的方式
: 但我用MOV EAX,0
: MOV CR0,EAX
: 也是一样有PRIVILEGE INSTRUCTION的问题
: 目前只读得到cpuid不知道对取得cpu msr是否有帮助?
: 不晓得大家有没有什麽方法可以实现?
在386↑ 基本上进到保护模式都是用
mov eax, cr0
or eax, 1
mov cr0, eax
然後经过一个跨段的jump之後,重新载入选择子,才是真的进到保护模式
jmp dword SELECTOR32:CODEOFF32 ;用nasm的
不过 windows早就工作在保护模式下了
所以像crX、trX.....等等的暂存器 非在ring0下不可存取
如果你要玩保护模式的东西 除了从软碟开机 真实模式下启动外 (DOS 或 自己写)
可以用Virtual PC 来玩 比较方便XD
另外 如果真的想玩这方面的
推荐一本书: 《自己动手写作业系统》 在台湾由 文魁资讯出版 于渊‧编着
大陆 电子工业出版社的书翻译过来的XDDD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.137.72.12
1F:→ Celios:去INTEL 找IA32 spec 研究研究吧 会有帮助的 09/03 11:04