0
点赞
收藏
分享

微信扫一扫

DIY操作系统(5):内核文件及其载入

双井暮色 2022-01-20 阅读 75

文章目录

ELF文件格式

Windows:32位PE文件结构
kernel.bin是一个ELF格式的文件,需要在kernel loader中实现一个ELF加载器将其加载到内存并进行初始化。

载入内核

加载

首先需要确定此时低端1M的物理内存中有哪些部分是可用的(打勾部分)。
请添加图片描述
0x7E00~0x9FBFF中选取合适位置(如0x70000)作为读入缓冲区始址。kernel loader中代码如下

; -------------------------   加载kernel  ----------------------
   mov eax, KERNEL_START_SECTOR        ; kernel.bin所在的扇区号
   mov ebx, KERNEL_BIN_BASE_ADDR       ; 从磁盘读出后,写入到ebx指定的地址
   mov ecx, 200			       ; 读入的扇区数(一劳永逸)

   call rd_disk_m_32

   ; 创建页目录及页表并初始化页内存位图
   call setup_page

boot.inc

; 读入的缓冲区始址
KERNEL_BIN_BASE_ADDR equ 0x70000
; kernel.bin在硬盘上的扇区
KERNEL_START_SECTOR equ 0x9
; 内核入口点(虚拟地址)
KERNEL_ENTRY_POINT equ 0xc0001500

举报

相关推荐

0 条评论