代码之家  ›  专栏  ›  技术社区  ›  sepp2k

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

  •  3
  • sepp2k  · 技术社区  · 12 年前

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

    @.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 回复  |  直到 12 年前
        1
  •  0
  •   sepp2k    7 年前

    在问题发生时,分析的结果 string_of_llvalue 的确是唯一的选择 getAsString .

    然而,在OCaml绑定的较新版本中,这可以通过 string_of_const 。这需要 llvalue 并返回 Some 如果给定 ll值 是字符串常量,并且 None 否则

    推荐文章