linux的汇编学习(3)---进入保护模式

本文介绍了如何引导Linux内核并进入保护模式。内容包括设置GDT以控制内存访问权限,开启A20地址线,加载内核到内存,设置启动参数,并调用内核代码。此外,还提供了初始化GDT、启用A20地址线、进入保护模式的代码示例,以及在保护模式下实现打印字符串和显示寄存器值的方法。
摘要由CSDN通过智能技术生成

【完整代码已经归档到    https://github.com/linzhanglong/mini_bootloader  】 

    现在我们完成我们第一个主要的功能:引导Linux内核。

     首先我们要准备一个Linux内核文件 bzImag。如何引导Linux内核呢?需要做几件事情:

     1. 设置GDT,设置访问内存权限;

     2. 开启A20地址线(原因:http://blog.csdn.net/ruyanhai/article/details/7181842,是为了兼容历史CPU产生的坑)

     3. 进入保护模式

     4.把内核加载到内存去;

     5.设置启动参数,然后调到内核代码执行。

     

       首先我们先设置CPU进入保护模式,需要做两件事情,第一件事情就是设置GDT。我们看GDT的格式:

   


       GDT用来做什么呢?第一,就是设置我们代码的权限;第二就是设置代码处于CPU哪个级别。其中Type字段决定了类型(数据段还是代码段)以及权限,而DPL决定了属于哪个CPU级别(ring0,还是ring3)。而Base address和Liminit决定了我们这条GDT描述符限制的地址范围。具体各个字段的意思可以参考:https://www.kancloud.cn/digest/protectedmode/121466

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值