有没有一种快速可靠的方法来找出内存中 Multiboot 1 启动信息的总大小?
澄清一下:我不是在询问 EBX 寄存器中的值所指向的结构的大小,而是在询问内存中所有信息的总大小。
我目前正在开发兼容 x86 Multiboot 1 的内核。该标准不保证 GRUB 将放置此信息或其总大小。该标准规定:
“Multiboot 信息结构及其相关子结构可以由引导加载程序放置在内存中的任何位置(当然,为内核和引导模块保留的内存除外)。操作系统有责任避免覆盖此内存,直到它是用它完成的。”
实际上,这似乎总是在最低的 1MB 内存中加载。到目前为止,在启动期间,我使用标识映射为最低 1MB 初始化我的启动分页结构,以确保 Multiboot 信息是可访问的。找出这个结构的位置是微不足道的,但我还没有找到任何关于找到准确尺寸的信息。(理想情况下不走整个结构)。