《30天自制操作系统》笔记5 --- (Day3)进入32位模式并导入C语言
这个专题荒废了许久,竟然有人关注,那就补点东西(鸽)
不够准确的小结
用汇编来开发操作系统,就是使用汇编本身的功能再加上BIOS中断提供的功能来完成功能的过程。
汇编本身的功能不够,毕竟没有外部IO,所以通过给多个寄存器赋值,然后调用BIOS中断,让主板/BIOS去读取这些状态/值,然后BIOS根据值执行不同的功能(猜的)
至于如何用汇编控制电路,大概也是用寄存器和电路设计吧
详解:
学数字逻辑电路的时候,会有更深的体会。特别是时序电路(有记忆性的功能)
主要内容
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 代码)
待续...
--------蓝天上的云_转载请注明出处.