通过c / c ++中的内存收件人控制程序流程

时间:2012-01-17 14:14:31

标签: c++ c dynamic runtime program-flow

对不起,如果标题有点模糊,我不是母语人士,在制定我的想法时遇到了一些麻烦......

假设我拥有在内存中编译和创建的程序集合的所有必要函数和对象,并且我知道它们的地址和大小,如何使用伪“二进制”文件控制程序的流程这基本上是一个脚本,说“将此数据推入此函数的地址,调用此函数地址,将返回的值推送到此函数地址”等等......

基本上我需要处理伪“机器”代码来访问并通过其内存地址动态控制互连对象和静态逻辑的集合。

谢谢!

编辑:请在关闭我的问题之前发布几个代码段,作为一个问题的副本,这个问题并没有真正提供我需要的具体信息。

EDIT2:从下面的评论中添加了这个,可能会为我的问题带来更多的澄清:

  

我尝试使用预编译而不是编译整个程序   用于在旅途中创建动态对象的组件。对象的树木   可以序列化到磁盘并在瞬间重新创建(分配   整个树在池中而不是逐个对象)所以我有办法创建一个   动态程序,将其保存到磁盘并在内存中重建它   所有设计时标识符都用其地址替换。现在   我需要的是一种使整个程序结构运行的方法。

2 个答案:

答案 0 :(得分:0)

听起来您需要为要解释其语言的机器编写模拟器。 Here是一个解释如何操作的链接。

答案 1 :(得分:0)

这基本上就是Java虚拟机的功能,我相信这是其他人所说的机器。它是一个翻译,可能是你需要构建的。

假设我理解你所说的 - 答案是否定的,不是那样的。你将不得不做一些事情来创建程序状态和控制逻辑流程,这就是解释器和“机器”所做的事情。

您需要一个读取代码文件的前端,该文件告诉程序如何运行。您的前端读取“逻辑文件”,然后运行您的前端刚学会调用每个对象的逻辑。您可以通过链接执行相同操作的智能插件来创建它,即。从你的对象构造一个程序状态。但是你需要一堆不同的插件,每个插件一个。

无论如何,没有办法链接你的对象,然后期望他们知道谁以什么顺序运行,谁不运行。你必须以某种方式将文件的“智能”转换为动作。单独链接不会这样做,因为您希望智能在对象库外部。