我使用LLVM OCaml绑定为无类型语言构建编译器。不幸的是,我唯一的参考资料是llvm.mli
来源。
所以,我尝试按如下方式声明value_t
:
let llar = [| i64_type;
array_type i8_type 10;
vector_type i64_type 10 |] in
let value_t = struct_type llar in
declare_global value_t "value_t" the_module
在我生成函数之前。发出的是:
@value_t = external global { i64, [10 x i8], <10 x i64> }
为了稍后引用它,我尝试使用type_by_name
,但没有匹配;如果我使用lookup_global
,我会得到llvalue
而不是lltype
(我该如何处理它?)。我想我真正想要的是:
@value_t = type { i64, [10 x i8], <10 x i64> }
希望我能够type_by_name
使用此功能。关于如何生成这个的任何提示?
答案 0 :(得分:0)
您需要的功能是named_struct_type
和struct_set_body
:
let llvalue_t = named_struct_type context "value_t" in
struct_set_body llvalue_t llar false