为什么一开始有1MB的数据发送到Bootloader?

问题描述

我正在尝试制作我的第一个内核,我找到了有关它的教程,但无法理解为什么最初将这 1MB 数据发送到 Linker.ld 文件中的引导加载程序。我已经在互联网上搜索过,但找不到答案。如果可以,请帮帮我。 这是代码:

    ENTRY(start)

    SECTIONS {
    . = 1M;

    .boot :
    {
        KEEP(*(.multiboot_header))
    }

    .text :
    {
        *(.text)
    }
}

解决方法

来自 GNU LD 手册:

特殊链接器变量点“.”始终包含当前输出位置计数器。 [...] 为 .符号将导致位置计数器移动。

因此 . = 1M; 在放置任何部分之前将当前位置计数器设置为 0x100000。

没有数据“发送”到引导加载程序。该行告诉链接器好像程序存在于地址 0x100000 处一样。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...