首页 > 其他分享 >段寄存器

段寄存器

时间:2023-09-04 13:45:37浏览次数:34  
标签:CPL 16 代码段 描述符 寄存器 AX

段寄存器
段寄存器一共有96位

点击查看代码
struct SegMent
{
  WORD Selector;
  WORD Atrributes;
  DWORD base;
  DWORD Limt;
}
其中Selector,可见。

段描述符

当执行MOV DS,AX是CPU会查表,根据AX的值来选择查找GDT,LDT表,查找表的什么位置,查出多少数据。理解:并不是把AX的值给DS,AX只是一个索引。base的组成是分开的上面部分是高位,下面是地位。同时limt发现没有32位,这取决于段描述符的G的值为0是Limt=000FFFFF,为1时候Limt=FFFFFFFF.p为表示这个描述符是否可用。


在p为1的情况下 00CF9B00`0000FFFF DPL只有全为1或者0,s为1或者0,为0时候是系统段描述符,这样构成的4位标识一个16进制数处于从左到右的第5位,只有为F或者9时候才是数据段或者代码段。
type位分别代码段或者数据段,第6位大于8就是代码段,否则数据段,因为转成16进制为type为最左边位为0。

数据段说明

代码段说明

D/B位说明

段选择子
段选择子是一个16位的段描述符,该描述符指向了定义该段的段描述符。

理解AX的值就是段选择子,查表后填充到DS里面。

段权限检查
1.如何查看程序处于几环,CPL,当前特权级别CS和SS中存储的段选择子的后俩位,3代表3环,0代表0环。
2.DPL,描述符特权级别,和CPL一致才能访问。
3.RPL,请求特权级别。

点击查看代码
Mov ax,0008
Mov ds,ax
8拆分,1000 RPL取后俩位00 与DPL,CPL一样的意思

标签:CPL,16,代码段,描述符,寄存器,AX
From: https://www.cnblogs.com/theWait/p/17676439.html

相关文章

  • MODBUS RTU协议中浮点数是如何存储,读到浮点数寄存器的数值如何转换成所需的浮点数
    原文链接浮点数保存的字节格式如下:地址+0+1+2+3内容SEEEEEEEEMMMMMMMMMMMMMMMMMMMMMMM这里S代表符号位,1是负,0是正E偏移127的幂,二进制阶码=(EEEEEEEE)-127。M24位的尾数保存在23位中,只存储23位,最高位固定为1。此方法用最较少的位数实现了较高的有效位数,提高了......
  • STM32深入学习3:GPIO模块控制LED(寄存器版)
    GPIO模块数据手册详解:GPIO:通用输入/输出AFIO:备用输入/输出GPIOx_CRL和GPIOx_CRH:配置寄存器GPIOx_IDR和GPIOx_ODR:数据寄存器GPIOx_BSRR:置位/复位寄存器GPIOx_BRR:复位寄存器GPIOx_LCKR:锁定寄存器,锁定GPIO的数值GPIO模式:1.输入浮动:完全由外部决定2.输入上拉和输入下拉:存在......
  • MIPS寄存器堆
    实验目的熟悉并掌握MIPS计算机中寄存器堆的原理和设计方法理解源操作数/目的操作数的概念实验环境Vivado集成开发环境MIPS寄存器寄存器R0的值恒为0。模块接口设计1个写端口和2个读端口名称宽度方向描述clk1IN时钟信号raddr15IN寄存器堆读......
  • MODBUS RTU协议中浮点数是如何存储,读到浮点数寄存器的数值如何转换成所需的浮点数
    原文连接浮点数保存的字节格式如下:地址+0+1+2+3内容SEEEEEEEEMMMMMMMMMMMMMMMMMMMMMMM这里S代表符号位,1是负,0是正E偏移127的幂,二进制阶码=(EEEEEEEE)-127。M24位的尾数保存在23位中,只存储23位,最高位固定为1。此方法用最较少的位数实现了较高的有效位数,提高了精......
  • arm用户态寄存器
    常用的arm用户态寄存器如上表所示,有r0~r15这16个寄存器r0~r3:通常在函数传参时使用(从左到右的顺序,大于4个参数时使用栈来传递)和返回值(r0通常被用作返回值)。在函数内部r0-r3也可以用来存储局部变量。r4~r8,r10,r11:通常用来保存局部变量。r11通常用来作为(FP)栈基地址(下面会对这些......
  • 设备驱动-14.userspace进行IP的寄存器读写
    1定义寄存器以键盘keyscan为例,定义一个IP寄存器描述头文件,IOCRREG,IOCWREG定义了两个ioctl命令,用来读写寄存器。structmsg用来存放寄存器地址和值。/*Keyscanregister:addr+offset+mask*/#definekeyscan_top_keyscan_config1 0x0#definekeyscan_top_keyscan_......
  • Linux 内核设备驱动程序的IO寄存器访问 (上)
    Linux内核提供了一套可缓存的设备IO寄存器访问机制,即regmap。regmap机制支持以统一的接口,访问多种不同类型的设备IO寄存器,如内存映射的设备IO寄存器,和需要通过I2C、I3C、SPI、AC97和SLIMBUS等总线访问的设备寄存器等。内存映射设备IO寄存器和I2C总线是嵌入式系统......
  • [C#] 使用HslCommunication访问乐创寄存器#MULTIPROG EXPRESS
    使用MULTIPROGEXPRESS软件打开乐创工程后,在变量声明中可看到变量及其分配的Modbus地址 乐创寄存器   施耐德寄存器   %IX100.0 输入寄存器,地址100,bit0BOOL类型长度为Bit1  MW100 保持寄存器,地址100  %ID100 输入寄存器,地址100  MX100......
  • 寄存器与内存在CPU计算中的作用
    cpu的计算是在内存上做的吗?计算过程中的数据存储在内存中,但CPU执行计算的过程是在寄存器中进行的,而不是直接在内存上进行。当需要使用内存中的数据时,CPU会将数据加载到寄存器中进行操作,并将结果存回内存。这样可以加快计算的速度,因为寄存器是位于CPU内部,速度比内存更快。然而,寄存......
  • 关于UVM寄存器模型的理解
    UVM中的RAL寄存器模型的意义:让开发者能够方便,快速地配置dut的寄存器。RAL寄存器模型的实质:仍然是UVM中的一个类,但不是作为组件,而是和sequence一样,在basetest中被实例化和使用。本质上,RAL模型与DUT的通信还是依赖于agent的,其顺序是RAL模型通过发起sequence,信息经过adapter转换,给......