欢迎光临散文网 会员登陆 & 注册

0171-创建内核可执行文件

2023-08-18 10:53 作者:jiangbo4444  | 我要投稿

环境

  • Time 2022-11-11

  • WSL-Ubuntu 22.04

  • QEMU 6.2.0

  • NASM 2.15.05

前言

说明

参考:https://os.phil-opp.com/multiboot-kernel/

目标

编写一个可以加载执行的文件。

启动代码

start 是启动入口,.text 表示是代码段。
bits 32 指定了编译成 32 位的机器码,因为需要在 32 位保护模式下执行。
0xb8000 是显存地址,输出使用。
hlt 是 CPU 停机指令。

编译和反编译

创建 ELF 文件

ELF 主要是 linux 系统下的一种文件格式。
nasm 默认输出二进制文件,需要 ELF 文件,需要增加参数 -f 指定,得到两个 .o 文件(对象文件)。

链接对象文件

自定义链接脚本

  • start 指定的程序入口。

  • . = 1M 指定了程序需要被加载到哪个地址上。

  • .boot 放到最开始,后面是 .text 段。

  • multiboot_header 放到最前面。

链接

-n 不可以省略,关闭对齐。

查看 section 信息

总结

创建了一个内核可执行程序 kernel.bin。

附录

0171-创建内核可执行文件的评论 (共 条)

分享到微博请遵守国家法律