【发布时间】:2013-06-29 17:32:49
【问题描述】:
我正在开发一个玩具操作系统和引导加载程序。我正在尝试用 C 编写内核,然后将其转换为二进制文件以便从引导加载程序直接跳转(即,我没有加载 ELF 或类似的东西)。
我已经设置了正确来源的链接器文件(我正在将内核加载到地址 0xC0000000)并通过objdump 确认它正在正确使用它。但是,它并没有像我想要的那样将我的入口点放在开头(0xC0000000)。我猜这不是 ENTRY 指令的用途。
我的问题只是我想在地址 0xC0000000 处放置一个特定的函数 kernel_main。有没有办法使用 gcc 进行编译和链接来完成此操作?
我的链接器文件的相关部分如下所示:
ENTRY(kernel_main)
SECTIONS
{
/* Origin */
. = 0xC0000000;
.text BLOCK(4K) : ALIGN(4K)
{
*(.text)
}
/* etc. */
}
【问题讨论】: