我遇到了一些编程语言中的一个功能,用于调用其他编程语言中的方法。它叫做Foreign Function Interface
。例如,我可以在Python程序中调用C语言函数。或者我可以用Python语言编写一些C库的包装器,供其他Python用户使用。
一个简单的例子是Python中的ctypes
。所以使用它,我可以访问libc中的time
函数。我理解这个级别。但是,我无法清楚地了解这种类型本身是如何实现的,以及其他类似的背后情况'东西!
这里出现的问题是:
答案 0 :(得分:3)
因为它也应该编译外语。
没有。 ctypes等只需要能够链接到目标代码。这取决于目标外语在目标代码中具有适当的名称修改约定,C表示。
如果宿主语言是面向对象的,而外语则不是,那么我需要与对象进行某种映射。这是怎么处理的?
C代码需要为宿主语言公开适当的接口;或者等效地,使用一些C语言库来实现。 CPython是用C语言编写的,所以在这种情况下,这很容易说明。
如果主机语言在虚拟机上运行怎么办?在这种情况下,指令集会有所不同,对吗?
VM必须具有适当的工具来加载编译的目标代码。