段寄存器(96位)
(234条消息) 03.段寄存器_015646的博客-CSDN博客
代码段寄存器CS(Code Segment)
存放当前正在运行的程序代码所在段的段基址,表示当前使用的指令代码可以从该段寄存器指定的存储器段中取得,相应的偏移量则由IP提供。
数据段寄存器DS(Data Segment)
指出当前程序使用的数据所存放段的最低地址,即存放数据段的段基址。
堆栈段寄存器SS(Stack Segment)
指出当前堆栈的底部地址,即存放堆栈段的段基址。
附加段寄存器ES(Extra Segment)
指出当前程序使用附加数据段的段基址,该段是串操作指令中目的串所在的段。
段选择子:
段描述符
(234条消息) 段描述符详解_伴你永居我忆i的博客-CSDN博客_段描述符
先看p位看该段是否有效
再看s位看是什么段的描述符
再看TYPE区分具体类型
GDT:代码,数据,调用门,TSS
IDT : 中断门,任务门,陷阱门
特权相关
(237条消息) CPL RPL与DPL 之间的区别和联系_五月的天气的博客-CSDN博客_cpl rpl
段跳转
(237条消息) 一致代码段与非一致代码段_天马行空_xaut的博客-CSDN博客_一致代码段和非一致代码段
调用门
(237条消息) 调用门_0xwangliang的博客-CSDN博客_调用门
中断门
D为0,16位中断门,D为1,32位中断门
INT X
执行时将EFLAG的IF位置0
陷阱门
任务段TSS
希望CPU能够执行多个任务,为了在任务切换的时候替换所有寄存器
CPU使用TR寄存器寻找TSS
TSS描述符
10-10-12分页
CR3 -> PDT表 找PDE -> PTT表找PTE ->物理地址
P = 0触发缺页异常
然后看有效位
异常中断码0xE
异常中断处理程序
(a) 靠1-4位和12-31位获得新物理地址 :挂物理页,从文件写回物理页
(b) 线性地址有效,但是还没分配物理页
0xc0300000得到的物理页又是PDT又是PTT
2-9-9-12分页