GDT和LDT描述符(段描述符):
struct Segment_Descriptor
{
ushort segment_limit_lo : 16;
uint23 segment_base_lo : 24;
uint4 type : 4;
uint1 desc_type : 1;
uint2 dpl : 2;
uint1 present: 1;
uint4 segment_limit_hi : 4;
uint1 unknown_avl_bit : 1;
uint1 reserved: 1; // always 0
uint1 d_bit : 1;
uint1 granularity : 1;
};
Present位表示当前段描述符对段寻址是否有效。如无效则在使用该描述符时会产生异常。
Granularity粒度位决定界限粒度采用字节(G=0)或采用4K字节(G=1)。
IDT描述符:
struct IDT_Gate
{
ushort entry_offset_lo : 16;
ushort seg_selector : 16;
union
{
struct// in case (type == 0b01110 || type == 0b01111)
{
uint4 unknown1 : 5;
uint3 unknown2 : 3;
};
uchar unknown: 8;// in case (type == 0b00101)
};
uint5 type : 5;
uint2 dpl : 2;
uint1 present: 1;
ushort entry_offset_hi : 16;
};
当type为0b01110时为中断门(Interrupt Gate);当type为0b01111时为陷阱门(Trap Gate);当type为0b00101时为任务门(Task Gate)。
其中present为段存在标志,如果为0,则访问该中断向量会引起异常。dpl为描述符特权级(用于IA-32的保护模式特权检查)。
中断或异常处理时,首先得到中断向量(从系统总线或内部得到的中断号),然后硬件根据IDTR寄存器中提供的偏移找到主存中的IDT表,再根据表中中断向量指定的项指示的选择符,从GDT表或LDT表中找出段基地址(一般是内核或用户代码段的基地址),通过和上述IDT表项指示的偏移值相加,得到中断或异常处理过程的入口的线性地址。从而完成了中断处理程序的段寻址。
分享到:
相关推荐
IA-32架构汇编语言程序设计课件,在32位保护模式下编写汇编语言代码。熟悉掌握操作系统
IA-32架构汇编语言程序设计课件,在32位保护模式下编写汇编语言代码。熟悉掌握操作系统
介绍英特尔 64 和 iA-32 架构的操作系统支持环境,其中包括:内存管理、保护、任务管理、中断和异常处理、多处理器支持、散热和电源管理特性、调试、性能监控、系统管理模式、 VMX 指令,和英特尔® 虚拟化技术。
intel 开发手册第三卷的中文版 OS编程必看的一本书 强烈推荐第三卷:系统编程指南第一章 导读第二章 系统架构概况第三章 保护模式内存管理第四章 保护第五章 中断和异常处理第六章 任务管理第七章 多处理器管理第八...
高清文字版,第14-17章从略。这本书是国内少有的通俗讲解汇编和操作系统的书籍,十分值得一看。可以同时查阅英特尔IA-32架构开发者手册,底层的架构设计细节都能在里面查到。
描述 英特尔 64 和 IA-32 体系结构的操作系统支持环境,包括:内存管理、保护、任务管理、中断和异常处理、多处理器支持、散热和电源管理功能、调试、性能监控、系统管理模式、虚拟机扩展 (VMX) 指令、英特尔 虚拟...
CPU内部这些说明摘自Intel SDM。 您可以将它们视为手册中某些部分的简短版本,在学习系统编程,OS内部结构或虚拟化时,我认为这些部分值得参考。内容第24章虚拟机控制结构第25章VMX非根... 英特尔64架构增加了IA-32e
2.6.4 WDK中出现的特殊代码 32 第3章 字符串与链表 35 3.1 字符串操作 35 3.1.1 使用字符串结构 35 3.1.2 字符串的初始化 36 3.1.3 字符串的拷贝 37 3.1.4 字符串的连接 38 3.1.5 字符串的打印 38 3.2 内存...
2.6.4 WDK中出现的特殊代码 32 第3章 字符串与链表 35 3.1 字符串操作 35 3.1.1 使用字符串结构 35 3.1.2 字符串的初始化 36 3.1.3 字符串的拷贝 37 3.1.4 字符串的连接 38 3.1.5 字符串的打印 38 3.2 内存...
“第一次阅读486”(以下简称“本书”)是一本解释Intel x86的IA32体系结构的书,主要介绍了受保护模式下的OS支持功能。 IA32架构从一开始就非常完美,并且与当今的CPU完全兼容。因此,您可以通过按原样执行基本...
13.7 Real-World IA-32反编译 477 13.8 结论 477 附录A 揭密代码结构 479 附录B 理解编译后的算术运算 519 附录C 破译程序数据 537 索引 561 译 者 序 记得第一次做与逆向有关的工作是2000年,当时由于项目的需要,...
2.2.4 进入保护模式 40 2.2.5 系统最终初始化 47 2.3 系统引导过程总结 47 第3章 内存管理 50 3.1 基础知识 51 3.1.1 存储器地址 51 3.1.2 分段机制 52 3.1.3 分页机制 59 3.2 内核页表的初始化...
2.2.4 进入保护模式 40 2.2.5 系统最终初始化 47 2.3 系统引导过程总结 47 第3章 内存管理 50 3.1 基础知识 51 3.1.1 存储器地址 51 3.1.2 分段机制 52 3.1.3 分页机制 59 3.2 内核页表的初始化...
2.2.4 进入保护模式 40 2.2.5 系统最终初始化 47 2.3 系统引导过程总结 47 第3章 内存管理 50 3.1 基础知识 51 3.1.1 存储器地址 51 3.1.2 分段机制 52 3.1.3 分页机制 59 3.2 内核页表的初始化...
2.2.4 进入保护模式 40 2.2.5 系统最终初始化 47 2.3 系统引导过程总结 47 第3章 内存管理 50 3.1 基础知识 51 3.1.1 存储器地址 51 3.1.2 分段机制 52 3.1.3 分页机制 59 3.2 内核页表的初始化...
2.2.4 进入保护模式 40 2.2.5 系统最终初始化 47 2.3 系统引导过程总结 47 第3章 内存管理 50 3.1 基础知识 51 3.1.1 存储器地址 51 3.1.2 分段机制 52 3.1.3 分页机制 59 3.2 内核页表的初始化...
2.2.4 进入保护模式 40 2.2.5 系统最终初始化 47 2.3 系统引导过程总结 47 第3章 内存管理 50 3.1 基础知识 51 3.1.1 存储器地址 51 3.1.2 分段机制 52 3.1.3 分页机制 59 3.2 内核页表的初始化...
2.2.4 进入保护模式 40 2.2.5 系统最终初始化 47 2.3 系统引导过程总结 47 第3章 内存管理 50 3.1 基础知识 51 3.1.1 存储器地址 51 3.1.2 分段机制 52 3.1.3 分页机制 59 3.2 内核页表的初始化...