i386asm学习笔记

i386asm学习笔记

tag: asm


0x01 段式寻址

段式寻址涉及到以下数据结构:选择子、描述符表、段描述符、伪描述符。处了段寄存器外,还涉及到GDTR、LDTR。
描述符表是一个线性表,元素为段描述符。段描述符中保存有段的基址、范围和属性。而选择子分为两部分:描述符索引和属性。属性中有一位决定使用GDT还是LDT。
下面简单描述一下段式寻址的过程,在此不涉及各种权限和属性的检查:
1. 通过选择子属性中的TI位决定使用GDT还是LDT。
2. 决定后,从GDTR/LDTR寄存器中获取描述符表的基址和大小。
3. 根据选择子中的索引值,获取对应的段描述符。
4. 根据段描述符,获得段基址、长度和属性。
5. 段基址与偏移量相加,获得线性地址。

GDTR与LDTR的区别是:前者使用伪描述符,没有属性。后者使用段描述符,寄存器中只保存选择子。任务切换时LDT可能会改变。

涉及到的指令:
LGDT SRC 把存储器内的内容装入GDTR寄存器。

0x02 实模式、保护模式切换

实模式和保护模式的区别:CR0寄存器的0位,置1时为保护模式,置0时为实模式。
但是因为实模式和保护模式下寻址方式的区别,进入保护模式前需要初始化一些数据结构,具体包括:段描述符、GDT。之后将GDT的伪描述符装入GDTR。便可进入保护模式。

打开A20地址线是为了能访问4G地址空间。没打开时只有部分地址线有效。

0x03 特权级改变

特权级

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值