Assembly 在哪里可以找到为multiboot头声明常量的信息
我正在尝试开发自己的操作系统,并遵循这些教程 我知道我将使用GRUB/现有的引导加载程序来加载“kernel.c”。在把控制权交给“kernel.c”之前,我知道硬件没有初始化,从今以后我将设置内存映射、堆栈等 我看到在多重启动头中设置了特定的变量/硬件Assembly 在哪里可以找到为multiboot头声明常量的信息,assembly,operating-system,bootstrapping,osdev,multiboot,Assembly,Operating System,Bootstrapping,Osdev,Multiboot,我正在尝试开发自己的操作系统,并遵循这些教程 我知道我将使用GRUB/现有的引导加载程序来加载“kernel.c”。在把控制权交给“kernel.c”之前,我知道硬件没有初始化,从今以后我将设置内存映射、堆栈等 我看到在多重启动头中设置了特定的变量/硬件 /* Declare constants for the multiboot header. */ .set ALIGN, 1<<0 /* align loaded modules on page b
/* 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 */
/*
/*为多重引导头声明常量*/
.设置对齐,1
为什么特别是上面代码中提到的那些?我在哪里可以找到这些多功能手机
启动头?我是否应该使用与我的架构相关的特定工具
由GRUB在以下链接中指定
multiboot文档(您链接的)描述了这些内容的含义
标志(ALIGN
=MULTIBOOT\u PAGE\u ALIGN
,MEMINFO
=MULTIBOOT\u MEMORY\u INFO
)
至于为什么要特别使用这些标志:
除非您使用多引导模块,否则ALIGN
标志对您来说并不重要
(裸骨指南中没有)。它应该是安全的删除
您很可能需要MEMINFO
标志来了解哪些内存区域
使用安全,并由硬件保留。你让GRUB(或
任何多引导加载程序(multiboot loader)为您这样做都是(1)一旦您处于受保护状态
在模式下,此信息变得更难获取-并且受保护模式是
您的内核是如何进入的(2)拥有这些信息是有益的
如果您的操作系统使用动态内存,请尽早指导内存管理
除了这两个标志,还有MULTIBOOT\u VIDEO\u MODE
(我没有)
找到了)和MULTIBOOT\u AOUT\u KLUDGE的用法,只有当您
使用该可执行格式(barebones指南没有)
在哪里可以了解更多有关引导程序集的信息,以用于我的后续操作系统项目
当使用预先存在的引导加载程序时,所需的汇编程序引导量
需求是有限的。我个人认为osdev wiki裸体页面有助于
很好地指导读者完成这些步骤,所有的
文档不过,也许其他人可以在这里添加其他链接。就是这个来源。