如何用LLVM实现动态对象?

时间:2012-07-22 13:13:15

标签: object hashmap llvm

假设使用类似javascript的语言,我们如何实现如下系统:

a = {};
a.foo = {};
a.foo.bar = 42;
print a.foo['bar'];

使用LLVM C ++ API?

我没有找到任何关于复杂数据类型的文档(例如HashMap从Value中删除),所以我有点迷失在这里。 LLVM C演示网页也没用,因为C / C ++中没有这样的数据类型。

我已经完成了Kaleidoscope教程,但没有找到任何其他非常好的教程。

2 个答案:

答案 0 :(得分:4)

使用llvm在python中编写的 jit语言的示例是link to a student project
它不是你需要的,而是面向对象的,报告涵盖了实现语言面向对象的简单方法。

答案 1 :(得分:3)

就像你在任何其他低级语义上做的那样。您必须实现自己的运行时库,您自己的哈希映射(或者您希望用于动态分派的任何其他内容)。 LLVM不会(也不应该)为它生成的代码提供任何运行时。