IA-32架构保护模式下的GDT设置与程序动态加载
需积分: 9 100 浏览量
更新于2024-07-22
收藏 455KB PPT 举报
本章节主要讲解了在IA-32架构下,如何通过汇编语言程序设计实现程序的动态加载与执行,尤其是在32位保护模式下的操作。主要内容涉及以下几个关键部分:
1. **主引导程序与GDT(全局描述符表)**:
- 主引导程序作为ROM-BIOS的一部分,被加载到物理地址0x7C00,并负责初始化代码段(0x7C00-0x7E00)。接下来的4KB空间是内核堆栈段。
- GDT被安排在主引导程序之后,通常从0x7E00开始,用于存储不同类型的段描述符,如数据段、代码段和栈段。GDT大小可以是64KB,但需预留足够的空间。
2. **GDT中的描述符示例**:
- 数据段描述符(0x08):0~4GB范围,权限设置为读写,基地址为0x00000000,段界限为0xFFFFF。
- 初始代码段描述符(0x10):00007C00~00007DFF,仅执行(TYPE=1000),基地址0x00007C00,段界限0x001FF,粒度为1B。
3. **保护模式下的内存管理**:
- 进入保护模式前,主引导程序会设置GDT以支持不同的内存区域,如数据段、代码段和显示缓冲区。这些描述符控制了进程的内存访问权限和寻址方式。
4. **用户程序的处理**:
- 用户程序结构包括加载过程,其中涉及到用户程序段的重定位,即根据实际运行位置调整符号地址。描述符的创建在这个过程中至关重要,用于映射用户程序到物理内存。
5. **重定位和符号地址处理**:
- 用户程序中的符号地址需要通过重定位技术,确保它们在实际执行时指向正确的内存位置。这涉及到对地址计算进行调整,以便正确映射到GDT定义的各个段。
本章的核心知识点围绕着在IA-32架构下通过汇编语言设计的程序如何在保护模式下初始化GDT,管理内存段,以及实现用户程序的动态加载、执行以及符号地址的正确处理。这对于理解和编写高效、安全的32位系统程序至关重要。
点击了解资源详情
点击了解资源详情
点击了解资源详情
171 浏览量
点击了解资源详情
120 浏览量
2008-10-26 上传
2007-09-05 上传
2021-12-04 上传
muqinwen
- 粉丝: 0
- 资源: 4
最新资源
- 通信基础知识.pdf
- 资源库管理系统用户手册
- android开发环境配置
- Spring+xFire实现webService
- svn结成eclipse详细配置
- visualbasicscript函数介绍
- c语言结构体讲解,TXT格式,适用于初学者,本人也是从网上搜索得到
- 图形学习题(有关图形学考试的)
- makefile书籍
- 如何让你的电脑定时开机
- 图像处理,matlab程序,retinex_frankle_mccann算法加直方图均衡化算法,去雾
- tomcat下配置jsp.doc
- PLSQL常用方法汇总.doc
- vhdl课程设计密码锁 vhdl课程设计密码锁
- Oracle 安装图解.doc
- 最小生成树总结acm竞赛