问题:运行代码
运行存储在另一C程序作为汇编指令的堆或数据部分中的非平凡的C程序。
我的进步:
冉一组打印的东西到stdout简单的指令。指令存储在堆中,我允许包含指令的页面被执行,然后调用原始数据,就像它是一个函数一样。这工作得很好。
接下来,我想给出任何静态链接的C程序,只是看它的二进制文件,并能够运行它的主要功能,而它在从其他C程序存储器。
我相信问题是: *跳跃到的主要功能代码 *改变其被链接时,使它们相对于创建的二进制文件的地址,现在的代码就在于在内存
请让我知道我的方法是好的还是我错过了一些重要的事情,以及最好的方式是什么。
谢谢
的问题正是你所列举的那些。第一个叫做“跳入入口”,第二个叫“重新定位”。您可能需要查阅操作系统的二进制加载器的源代码。 – 2013-05-18 19:50:04
如果你已经有了静态链接的其他程序,你不能只使用'exec'吗? –
是的,你错过了一些东西:考虑到在其他编程语言中,你将执行基本相同的步骤,而对于其他操作系统,这些步骤将会改变。你现在可以看到这个问题与C很少有关系,几乎与你的实现有关吗?你可能想找出什么“实施”的意思,顺便...... – Sebivor