从LLVM字符串中获取字符串常量

时间:2014-08-01 18:42:08

标签: ocaml llvm

我正在使用LLVM绑定来读取OCaml中的LLVM bitcode文件。在该文件中有一个全局字符串常量定义如下:

@.str1 = private unnamed_addr constant [6 x i8] c"x > y\00", align 1

我有一个llvalue对应于这个常量,我想从那里得到字符串"x > y"。我可以做的一件事是使用string_of_llvalue (global_initializer the_constant)来获取字符串"c\"x > y \\00\"",然后在引号之间提取部分,然后解析该部分中的转义序列。然而,这对我来说似乎不是一个很好的解决方案。

C ++ API有一个函数constantDataSequential::getAsString,我可以使用它来访问常量的字符串值,但我不能在我的生活中弄清楚如何使用OCaml绑定完成同样的事情。

1 个答案:

答案 0 :(得分:0)

在提出问题时,解析string_of_llvalue的结果确实是唯一的选择,除了为getAsString编写自己的绑定。

但是,在OCaml绑定的最新版本中,string_of_const可以更轻松地完成此操作。如果给定的llvalue是字符串常量,则它需要Some并返回包含字符串内容的llvalue,否则返回None