Assembly 汇编-如何从引导加载程序跳转到内核?

Assembly 汇编-如何从引导加载程序跳转到内核?,assembly,operating-system,boot,Assembly,Operating System,Boot,因此,我目前正在开发我的玩具操作系统,想知道如何从引导加载程序将内核加载到RAM中 我已经在互联网上搜索过了,但是在第六个谷歌搜索结果页面上搜索过之后,在做更多的研究之前,我想在这里问一下 我以后的目标是用C语言编写内核,也许我也能得到一些提示。谢谢。您想在哪个平台上运行?如果使用x86,则在汇编中编写引导加载程序要容易得多。如果你想在C语言中实现它,我建议打开Watcom(而不是GCC)。您可以使用BIOS从磁盘读取扇区以获取内核,启用A20,进入保护模式,然后运行内核。您可以省去这些麻烦,并

因此,我目前正在开发我的玩具操作系统,想知道如何从引导加载程序将内核加载到RAM中

我已经在互联网上搜索过了,但是在第六个谷歌搜索结果页面上搜索过之后,在做更多的研究之前,我想在这里问一下


我以后的目标是用C语言编写内核,也许我也能得到一些提示。谢谢。

您想在哪个平台上运行?如果使用x86,则在汇编中编写引导加载程序要容易得多。如果你想在C语言中实现它,我建议打开Watcom(而不是GCC)。您可以使用BIOS从磁盘读取扇区以获取内核,启用A20,进入保护模式,然后运行内核。您可以省去这些麻烦,并使用grub之类的多引导兼容引导加载程序为您完成这项工作。如果你有一个(U)EFI BIOS,你也可以使用它。对于所有这些,一个很好的资源是如果您正在开发新的东西,对于当前(不是过时的)平台,我建议您使用UEFI而不是传统BIOS来运行引导加载程序。与传统BIOS的编程接口混乱相比,UEFI提供了一个更方便的编程接口,该接口有很好的文档记录和标准化。此外,使用UEFI,您的引导加载程序将以32位或64位模式启动,而不是以16位模式启动。@MichaelPetch感谢您的简短介绍。我想在x86系统上运行它,你应该在谷歌的第一个页面上停下来,这几乎可以肯定会把你引向osdev.org。请阅读wiki.closed作为引导加载程序工作示例的副本,该引导加载程序在32位保护模式下调用
main()
函数+传统
int 10h
BIOS指南@prl,你知道UEFI是否有类似的问答,并有一个有效的例子吗?(如果是这样,我们也应该在x86标记wiki中有一个链接。)