gpt4 book ai didi

c - 如何使用程序实现加载器?

转载 作者:行者123 更新时间:2023-11-30 21:34:22 25 4
gpt4 key购买 nike

我知道加载程序将程序加载到内存中。但是我如何使用程序来实现它呢?使用汇编或 C。这可能非常有用。或者至少提供一个引用。

最佳答案

也许你已经明白这一点,但不确定。高层程序加载器只需读取/下载/接受程序,并在需要时解析文件格式。将程序放入内存中,并跳转/分支到它。

现在,如果您更具体,比如说处理器的引导加载程序,您通常还没有文件系统或类似的东西,所以也许您只能接受闪存上已经存在的程序(您的主要用例之一),或者允许开发人员下载测试版本,注定是flash、xmodem、ymodem或其他协议(protocol)上的程序。也许如果有以太网的话,或者USB(如果可用并且有意义)或可移动媒体(SD卡等)。归根结底,您仍然支持某种类型的格式,无论是程序的原始内存镜像还是其他格式(intel hex、motorola srecord、也许是 elf 等)。

操作系统还有很多工作要做,因为现在使用 Windows、Linux 或 Mac,编写一个简单的应用程序来读取和解析一个简单的程序,将该程序读入您的应用程序内存空间或 malloc 一些,无论如何,然后尝试分支到它。操作系统会阻止你,有很多方法可以解决这个问题,但这不是重点,你是一个应用程序,而不是操作系统。但如果你是操作系统加载程序,那么你只是拥有更多的权限,作为操作系统你设计了你的文件格式是什么,约定的入口点地址是什么,应用程序调用的系统接口(interface)是什么等等。必须符合您的规则,然后您将读取二进制文件,解析它(例如,也许您只支持 .elf 文件格式),根据您的规则为程序分配内存以及程序所需的资源分配(理想情况下,最初,部分文件格式),根据您的操作系统规则,您设置虚拟地址空间并将其指向程序已加载的位置,然后分支到从 super 用户模式更改为用户模式的程序。

您的问题非常模糊,无法理解您是否了解基础知识并想要详细信息(应用程序不是 protected 操作系统上的加载程序,因此只需阅读 linux 或 bsd 等的源代码),或者不理解基础知识(为微 Controller 制作一个小型引导加载程序,或者如果您不想购买微 Controller ,则使用指令集模拟器)。

关于c - 如何使用程序实现加载器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33704570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com