使用swi-prolog将prolog代码+ C代码编译成二进制文件

时间:2014-06-13 17:40:30

标签: prolog swi-prolog

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

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

但有一件事我很困惑......

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

如果是这样,那么原始的Prolog代码可能会以string的形式存储在ELF二进制文件的.rodata部分中,但在此部分内部搜索后,我找不到代码..但也许原始代码已经转换为bytecode,这就是为什么我根本找不到它..

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

有人能给我一些帮助吗?

1 个答案:

答案 0 :(得分:2)

编译后的二进制文件不包含原始源代码,也不包含整个Prolog解释器。但它确实包含由qsave_program/2谓词编译的字节码形式的程序。此字节码由Prolog 模拟器执行,它是普通交互式对话期间使用的Prolog解释器的子集,也包含在已编译的二进制文件中。

所有相关信息均可在SWI-Prolog文档的Generating Runtime Applications部分找到。