问题描述
我正在尝试制作我的第一个内核,我找到了有关它的教程,但无法理解为什么最初将这 1MB 数据发送到 Linker.ld 文件中的引导加载程序。我已经在互联网上搜索过,但找不到答案。如果可以,请帮帮我。 这是代码:
ENTRY(start)
SECTIONS {
. = 1M;
.boot :
{
KEEP(*(.multiboot_header))
}
.text :
{
*(.text)
}
}
解决方法
来自 GNU LD 手册:
特殊链接器变量点“.”始终包含当前输出位置计数器。 [...] 为 .符号将导致位置计数器移动。
因此 . = 1M;
在放置任何部分之前将当前位置计数器设置为 0x100000。
没有数据“发送”到引导加载程序。该行告诉链接器好像程序存在于地址 0x100000 处一样。