Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C内核运行PE(可移植可执行文件)_C_Exe_Portable Executable_Osdev - Fatal编程技术网

如何使用C内核运行PE(可移植可执行文件)

如何使用C内核运行PE(可移植可执行文件),c,exe,portable-executable,osdev,C,Exe,Portable Executable,Osdev,我已经开始使用C和汇编创建自己的操作系统 我使用自己的引导加载程序来引导用C编写的内核 现在我陷入了一个问题 如何在我的操作系统下运行PE(可移植可执行文件? 我想在我的操作系统中运行一些应用程序 但我不知道。我搜索了谷歌。我没有得到任何结果 请帮帮我! (我是新手) 信息: -我正在使用自己用汇编编写的引导加载程序 -我正在使用GCC编译我的内核 -我遵循IKnow OS教程开发内核。您需要实现两件事: 1) PE文件的加载程序。它必须解析文件和映射内存区域,动态链接库,可能清除BSS部分,以

我已经开始使用C和汇编创建自己的操作系统 我使用自己的引导加载程序来引导用C编写的内核 现在我陷入了一个问题

如何在我的操作系统下运行PE(可移植可执行文件?

我想在我的操作系统中运行一些应用程序

但我不知道。我搜索了谷歌。我没有得到任何结果

请帮帮我! (我是新手)

信息:

-我正在使用自己用汇编编写的引导加载程序

-我正在使用GCC编译我的内核


-我遵循IKnow OS教程开发内核。

您需要实现两件事:

1) PE文件的加载程序。它必须解析文件和映射内存区域,动态链接库,可能清除BSS部分,以及PE规范所说的运行环境应该在开始时的任何其他内容

2) 内核必须实现PE文件预期使用的系统调用ABI

这不是你下个月就能实现的


更新:查看WINE源代码,了解如何实现windows ABI。我的建议是:为您的第一个内核尝试一些更简单的方法。

您的问题包含的信息很少。你的操作系统可以运行什么样的可执行文件?它可以运行任何PE。但我不知道如何将其加载到内存并通过内核运行。可移植可执行文件只是
.dll
文件的另一个名称,它是一个没有自己的
main()
“运行一些应用程序”+PE意味着您希望能够运行任何Windows应用程序。这是一个巨大的工程。(复制Windows API最成功的尝试是,这是一个从1993年开始运行的项目,有几十人在做,但还没有完成。)雄心勃勃不是坏事,但从小处着手是好事。请帮助我!(我是个新手)我已经开始用C语言创建自己的操作系统,汇编语言是不一致的。如果第一个是真的,那么第二个就不应该是真的。是的,我知道。但我不知道密码。我正在使用GCC编译我的内核。