该系统的代码包括5个asm文件和一个inc文件:
其中:
序号 | 文件 | 功能 |
1 | mbr.asm | BSP的启动代码,从地址0x00007c00处开始执行。该代码保存在磁盘的0扇区。该代码将:
|
2 | global_vars_for_core.inc | core.asm的头文件,里面包含了常用地址以及宏定义 |
3 | core.asm | BSP的32位执行代码,从地址0x80100000处开始执行。该代码保存在磁盘的1~3扇区。 该代码功能如下:
|
4 | ap_16.asm | AP启动时的执行代码,从地址0x20000处开始执行,保存在磁盘的50扇区。 该文件与mbr.asm类似,负责让两个AP线程进入32为保护模式和页管理模式,最后跳转到0x80200000开始执行AP的32位代码 |
5 | ap_32.asm | AP的32位系统代码,开始执行地址为0x80200000,保存在磁盘的70~73扇区。 该代码:
|
6 | task1.asm | AP1的用户进程代码,保存在磁盘的100扇区。 该用户进程不断调用BSP提供的0x80系统调用在界面上打印‘0’~‘9’之间的字符。 |
7 | task2.asm | AP2的用户进程代码,保存在磁盘的200扇区。 该用户进程不断调用BSP提供的0x80系统调用在界面上打印‘A’~‘Z’之间的字符。 |
下面,我们从mbr.asm开始讲起。