Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 在哪里可以找到为multiboot头声明常量的信息_Assembly_Operating System_Bootstrapping_Osdev_Multiboot - Fatal编程技术网

Assembly 在哪里可以找到为multiboot头声明常量的信息

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

我正在尝试开发自己的操作系统,并遵循这些教程

我知道我将使用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 */
 
/* 
/*为多重引导头声明常量*/
.设置对齐,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裸体页面有助于 很好地指导读者完成这些步骤,所有的 文档不过,也许其他人可以在这里添加其他链接。

就是这个来源。