【发布时间】:2020-10-20 06:59:39
【问题描述】:
我正在尝试开发自己的操作系统,并遵循这些教程。
https://wiki.osdev.org/Bare_Bones
我知道我将使用 GRUB/现有的引导加载程序来加载“kernel.c”。在将控制权移交给“kernel.c”之前,我知道硬件尚未初始化,因此我将设置诸如内存映射、堆栈等之类的东西。
我看到在多引导标头中设置了特定的变量/硬件
/* Declare constants for the multiboot header. */
.set ALIGN, 1<<0 /* align loaded modules on page boundaries */
.set MEMINFO, 1<<1 /* provide memory map */
.set FLAGS, ALIGN | MEMINFO /* this is the Multi boot 'flag' field */
.set MAGIC, 0x1BADB002 /* 'magic number' lets boot loader find the header */
.set CHECKSUM, -(MAGIC + FLAGS) /* checksum of above, to prove we are multi boot */
/*
为什么在上面的代码中特别提到了那些?我在哪里可以找到这些多引导头? 我是否应该在以下链接中使用与 GRUB 指定的架构相关的特定架构?
https://www.gnu.org/software/grub/manual/multiboot/multiboot.html#multiboot_002eh
我在哪里可以了解更多关于我的其他操作系统项目的引导程序集的信息?
【问题讨论】:
-
Here 是它的来源。
标签: assembly operating-system bootstrapping osdev multiboot