我只是有一个问题,我无法在网上找到准确的答案..
使用swipl-ld
可以帮助将Prolog和C代码组合在一起,最终生成一个信号
可执行二进制文件。
但有一件事我很困惑......
在生成的二进制文件中,Prolog Interpreter
(虚拟机或其他)是否仍然存在?
如果是这样,那么原始的Prolog
代码可能会以string
的形式存储在ELF二进制文件的.rodata
部分中,但在此部分内部搜索后,我找不到代码..但也许原始代码已经转换为bytecode
,这就是为什么我根本找不到它..
如果没有,那么Prolog代码如何直接转换为基于SWI-Prolog的语义等效asm代码?我已经阅读了一些基于WAM虚拟机的GNU-Prolog实现的资料,但是,我还没有找到任何有关SWI-Prolog实现的资料...
有人能给我一些帮助吗?
答案 0 :(得分:2)
编译后的二进制文件不包含原始源代码,也不包含整个Prolog解释器。但它确实包含由qsave_program/2
谓词编译的字节码形式的程序。此字节码由Prolog 模拟器执行,它是普通交互式对话期间使用的Prolog解释器的子集,也包含在已编译的二进制文件中。
所有相关信息均可在SWI-Prolog文档的Generating Runtime Applications部分找到。