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