处理LLVM中的动态类型变量

时间:2015-11-08 17:39:40

标签: c llvm llvm-clang

我最近编写了一种动态类型的解释性编程语言作为学习练习。我现在正在寻求通过LLVM的C绑定来生成LLVM bitcode,但是在处理无类型的'变量。由于IR是强类型的,我最初的想法是将IR中的值表示为结构,如此(其中type表示数字,bool或字符串值):

typedef struct
{
    ValueType type;
    double double_value;
    bool bool_value;
    char *string_value;
} Value;

为了帮助操作Value结构,我将生成的bitcode链接到我的LLVM IR可以调用的静态库。静态库将处理诸如字符串连接和数学运算符的执行之类的事情,返回结果Value,如下所示:

Value apply_op(char *op, Value *lhs, Value *rhs);

但这是最好的方法吗?如上所述,这主要是一个学习练习,所以我想确保我不会过度复杂化,或者从根本上误解一个核心的LLVM功能。

0 个答案:

没有答案