IA32地址空间映射

环境:bochs2.11,linux0.11

在main函数中定义一个临时变量 int tmp = 1;
然后打印其地址
这个时候得到的是其逻辑地址

变量tmp存在于栈,所以先查找堆栈段寄存器 SS
共16位
高13位为编号(下标)
低前两位为权限(00为内核态,11为用户态)
低第三位(0代表使用GDT全局段描述符表,1代表使用LDT局部段描述符表)
在bochs中用dump_cpu查看所有寄存器的值
这里写图片描述
SS寄存器的值为 0x17
二进制为10 1 11
分析可得其使用LDT段描述符表,下标为2(即:LDT[2])

先找到GDT的起始地址,查看gdtr寄存器中的值
gdtr的值为0x5cb8
ldtr的值为0x68
二进制为 1101 0 00
分析可得ldt使用GDT,下标为13(即:GDT[13])

命令 xp/2w 以8字节显示GDT[13]的值,即全局段描述符表项

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值