《30天自制操作系统》笔记5 --- (Day3)进入32位模式并导入C语言

这个专题荒废了许久,竟然有人关注,那就补点东西(鸽)


 

不够准确的小结

用汇编来开发操作系统,就是使用汇编本身的功能再加上BIOS中断提供的功能来完成功能的过程。

汇编本身的功能不够,毕竟没有外部IO,所以通过给多个寄存器赋值,然后调用BIOS中断,让主板/BIOS去读取这些状态/值,然后BIOS根据值执行不同的功能(猜的)

 

 至于如何用汇编控制电路,大概也是用寄存器和电路设计吧

 详解:

为什么计算机能读懂 1 和 0 ? - 知乎

文件系统及SD卡驱动(第三节)-b站

 学数字逻辑电路的时候,会有更深的体会。特别是时序电路(有记忆性的功能)

主要内容

Day3 进入32位模式并导入C语言

分几部分

 

1,制作IPL(Initial Program Loader) 

2,读硬盘

主要实现的就是 读硬盘(从硬盘读取内容->写到内存)

 同样是调用BIOS中断,读盘命令 INT 0x13   [BIOS中断见 https://wiki.osdev.org/BIOS]

 

3,切换到32位模式(保护模式)

从16位模式(实模式)切换到32位模式(保护模式)

参考:

 操作系统:实模式到保护模式-知乎

 操作系统篇-浅谈实模式与保护模式-博客园

 

4,导入C语言

看了一下 Makefile 文件,发现是

C语言源码 ——编译——> gas(GNU ASM汇编)——gas2nask.exe——> nas文件 ——NASK汇编器——> obj 文件 ————>

编译用C写的源码(结果为GCC使用的GAS格式的汇编源码,即GNU ASM),然后转化成nas文件,再和nask汇编链接起来,最后再粗暴地合并几个相关的二进制文件(见截图 Line50 代码)

 

 

 

 

 

 

 

 

 

 

待续...

posted @ 2019-06-17 19:53  蓝天上的云℡  阅读(735)  评论(3编辑  收藏  举报