zoukankan      html  css  js  c++  java
  • 02调试寄存器


    调试寄存器

    DRO~ DR7是调试寄存器. DRO ~ DR3 用于保存断点的线性地址. DR7 - 分别保存4个断点的中断条件. DR6 - 保存断点命中后的信息.

    控制寄存器

    1566888347411

    CR0

    包含处理器的大量控制标志位. 下面列出常用的三种:

    • PE - 是否启用保护模式,置1则启用

    • PG - 是否使用分页模式, 置1则开启分页模式, 此标志置1时,PE标志也必须置1,否则CPU报异常.

    • WP - WP==1时, 不能修改只读的内存页 , WP==0 时, 可以修改只读的内存页.

    CR1

    保留

    CR2

    专门用于保存缺页异常时的线性地址.

    CR3

    专门用于保存一个进程的页目录地址(此寄存器存储的是物理地址)

    此寄存器的低12位一般都设置为0 , 因为CR3寄存器所保存的地址是一个页目录的地址,该地址必须在一个以分页粒度对其的地址上.

    1. 在使用非PAE模式下的分页结构时, 指向PDT基地址,线性地址是10-10-12格式

    2. 使用PAE模式的分页结构时, 指向 PDPT基地址,线性地址是2-9-9-12格式

    CR4

    提供了一些扩展的控制功能.

    • PAE - PAE==1 表示使用物理地址扩展模式 , PAE==0 表示不使用物理地址扩展模式.

    GDTR,IDTR寄存器

    GDTR寄存器是48位的. 高32位保存GDT表的内存地址. 低16位保存的是GDT表的大小.

    GDTR寄存器值得读写:

    LGDT fword [地址] ; 将内存地址中存储的48位数据加载到GDTR寄存器总.高32位表示GDT表基地址,低16位表示大小
    SGDT fword [地址] ; 将GDTR寄存器中的值存入到内存地址中.高32位表示GDT表基地址,低16位表示大小

    MSR寄存器组

    全称为: 特殊模组寄存器组

    这组寄存器它们没有名字, 只有编号, 它们保存了大量的信息. 这些信息可以通过两条指令和一个编号来读写:

    • RDMSR - 读特殊寄存器的值 , 指令默认使用ecx寄存器来保存要读取的MSR寄存器的编号, 使用edx:eax来保存读取结果.

    • WRMSR- 写特殊寄存器 , 指令默认使用ecx寄存器来保存要写入的MSR寄存器的编号, 使用edx:eax来保存要写入的值.

    常见MSR编号(其余见Intel手册第三卷第35章)

  • 相关阅读:
    几种简单排序算法
    【转】虚拟机下CentOS7开启SSH连接
    【转】SignalR来做实时Web聊天
    加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用
    C#加密解密(DES,AES,Base64,md5,SHA256,RSA,RC4)
    【C#公共帮助类】给大家分享一些加密算法 (DES、HashCode、RSA、AES等)
    对称加密与非对称加密
    PowerDesigner概念模型与物理模型相互转换及导出数据字典
    SQO2008配置管理工具服务显示远程过程调用失败
    MongoDB学习笔记-数据格式及数据类型
  • 原文地址:https://www.cnblogs.com/ltyandy/p/11418361.html
Copyright © 2011-2022 走看看