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

Ocaml 从LLVM字符串常量中获取字符串,ocaml,llvm,Ocaml,Llvm,我正在使用LLVM绑定读取OCaml中的LLVM位代码文件。在该文件中,有一个全局字符串常量定义如下: @.str1 = private unnamed_addr constant [6 x i8] c"x > y\00", align 1 我有一个与这个常数对应的llvalue,我想从中得到字符串“x>y”。我可以做的一件事是使用string\u of \u llvalue(全局\u初始值设定项\u常量)获取字符串“c\”x>y\\00\”,然后提取引号之间的部分,然后解析该部分中的转

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

@.str1 = private unnamed_addr constant [6 x i8] c"x > y\00", align 1
我有一个与这个常数对应的
llvalue
,我想从中得到字符串
“x>y”
。我可以做的一件事是使用
string\u of \u llvalue(全局\u初始值设定项\u常量)
获取字符串
“c\”x>y\\00\”
,然后提取引号之间的部分,然后解析该部分中的转义序列。然而,对我来说,这似乎不是一个很好的解决方案


C++ API有函数>代码> COSTANSTATABASESETION::GETASString ,我可以用来访问常量的字符串值,但是我不能用OCAM绑定来解决同样的问题。除了为

getAsString
编写自己的绑定之外,解析
string\u of llvalue
的结果确实是唯一的选择

然而,在最新版本的OCaml绑定中,这可以通过
string\u of_const
轻松实现。如果给定的
llvalue
是字符串常量,则它接受
llvalue
并返回包含字符串内容的
Some
,否则返回
None