如何使用C内核运行PE(可移植可执行文件)
我已经开始使用C和汇编创建自己的操作系统 我使用自己的引导加载程序来引导用C编写的内核 现在我陷入了一个问题 如何在我的操作系统下运行PE(可移植可执行文件? 我想在我的操作系统中运行一些应用程序 但我不知道。我搜索了谷歌。我没有得到任何结果 请帮帮我! (我是新手) 信息: -我正在使用自己用汇编编写的引导加载程序 -我正在使用GCC编译我的内核如何使用C内核运行PE(可移植可执行文件),c,exe,portable-executable,osdev,C,Exe,Portable Executable,Osdev,我已经开始使用C和汇编创建自己的操作系统 我使用自己的引导加载程序来引导用C编写的内核 现在我陷入了一个问题 如何在我的操作系统下运行PE(可移植可执行文件? 我想在我的操作系统中运行一些应用程序 但我不知道。我搜索了谷歌。我没有得到任何结果 请帮帮我! (我是新手) 信息: -我正在使用自己用汇编编写的引导加载程序 -我正在使用GCC编译我的内核 -我遵循IKnow OS教程开发内核。您需要实现两件事: 1) PE文件的加载程序。它必须解析文件和映射内存区域,动态链接库,可能清除BSS部分,以
-我遵循IKnow OS教程开发内核。您需要实现两件事: 1) PE文件的加载程序。它必须解析文件和映射内存区域,动态链接库,可能清除BSS部分,以及PE规范所说的运行环境应该在开始时的任何其他内容 2) 内核必须实现PE文件预期使用的系统调用ABI 这不是你下个月就能实现的
更新:查看WINE源代码,了解如何实现windows ABI。我的建议是:为您的第一个内核尝试一些更简单的方法。您的问题包含的信息很少。你的操作系统可以运行什么样的可执行文件?它可以运行任何PE。但我不知道如何将其加载到内存并通过内核运行。可移植可执行文件只是
.dll
文件的另一个名称,它是一个没有自己的main()
“运行一些应用程序”+PE意味着您希望能够运行任何Windows应用程序。这是一个巨大的工程。(复制Windows API最成功的尝试是,这是一个从1993年开始运行的项目,有几十人在做,但还没有完成。)雄心勃勃不是坏事,但从小处着手是好事。请帮助我!(我是个新手)我已经开始用C语言创建自己的操作系统,汇编语言是不一致的。如果第一个是真的,那么第二个就不应该是真的。是的,我知道。但我不知道密码。我正在使用GCC编译我的内核。