我正在使用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绑定完成同样的事情。
答案 0 :(得分:0)
在提出问题时,解析string_of_llvalue
的结果确实是唯一的选择,除了为getAsString
编写自己的绑定。
但是,在OCaml绑定的最新版本中,string_of_const
可以更轻松地完成此操作。如果给定的llvalue
是字符串常量,则它需要Some
并返回包含字符串内容的llvalue
,否则返回None
。