编译prolog代码+;使用swi prolog将C代码转换为二进制

编译prolog代码+;使用swi prolog将C代码转换为二进制,prolog,swi-prolog,Prolog,Swi Prolog,我只是有一个问题,我在网上找不到准确的答案 使用 可以帮助将Prolog和C代码组合在一起,最终生成一个信号 可执行二进制文件 但有一件事我很困惑 在生成的二进制文件中,Prolog解释器(虚拟机或其他)是否仍然存在 如果是这样,那么可能原始的Prolog代码作为string存储在ELF binary的.rodata部分中,但是在该部分中搜索后,我没有找到代码。。但也许原始代码已经转换成了字节码,这就是为什么我根本找不到它的原因 如果不是,那么Prolog代码如何直接转换为基于SWI-Prolo

我只是有一个问题,我在网上找不到准确的答案

使用 可以帮助将Prolog和C代码组合在一起,最终生成一个信号 可执行二进制文件

但有一件事我很困惑

在生成的二进制文件中,
Prolog解释器(虚拟机或其他)是否仍然存在

如果是这样,那么可能原始的
Prolog
代码作为
string
存储在ELF binary的
.rodata
部分中,但是在该部分中搜索后,我没有找到代码。。但也许原始代码已经转换成了字节码,这就是为什么我根本找不到它的原因

如果不是,那么Prolog代码如何直接转换为基于SWI-Prolog的语义等价的asm代码呢?我已经阅读了一些关于基于WAM虚拟机的GNU Prolog实现的资料,但是,我还没有找到任何关于SWI Prolog实现的资料


谁能给我一些帮助吗?

编译的二进制文件既不包含原始源代码,也不包含整个Prolog解释器。但是,它确实以谓词编译的字节码的形式包含您的程序。该字节码由Prolog emulator执行,Prolog emulator是在正常交互对话框中使用的Prolog解释器的子集,也包含在编译的二进制文件中


所有相关信息都可以在SWI Prolog文档的一节中找到。

你好,liori,谢谢你的回答!那么,是否有任何方法可以使用SWI Prolog从Prolog代码直接生成asm代码。。?我认为GNU Prolog可以完成这项工作……我指的是具有相同语义和执行模型的asm代码,但不需要解释器/仿真器来解释它。@computereasy:不知道,我不确定这是否可行,因为在运行时可以在Prolog中构造代码。然而,这可能是一个完美的后续问题。我认为GNU Prolog在他们之前工作的基础上有一个解决方案,但似乎
SWI Prolog
只是选择了一种更自然的实现方式。无论如何,thx:)