我遇到了一些编程语言中的一个功能,可以调用其他编程语言中的方法。它被称为Foreign Function Interface
. 例如,我可以在 Python 程序中调用 C 语言函数。或者我可以用 Python 语言为一些 C 库编写一个包装器,供其他 Python 用户使用。
一个简单的例子是ctypes
Python 中的。所以使用它,我可以访问time
libc 中的函数。我理解到这个程度。但是,我无法清楚地了解这个 ctypes 本身是如何实现的以及其他“幕后”的东西!
我在这里提出的问题是:
- 这种语言的编译器需要什么样的功能才能使用外部函数接口。因为它也应该编译外语。
- 因此,如果宿主语言是面向对象的,而外语不是,那么我需要某种与对象之间的映射。这是如何处理的?
- 如果宿主语言在虚拟机上运行怎么办?在那种情况下,指令集会有所不同,对吧?