0

抱歉,如果标题有点晦涩难懂,我不是母语人士,在制定我的想法时遇到了一些麻烦......

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

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

谢谢!

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

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

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

4

2 回答 2

0

这本质上就是 Java 虚拟机所做的,我相信这就是其他人所说的机器。它是一个解释器,这可能是您需要构建的。

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

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

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

于 2012-01-17T15:05:17.973 回答
0

听起来您需要为要解释其语言的机器编写一个模拟器。是一个链接,解释了如何做到这一点。

于 2012-01-17T14:19:16.420 回答