草庐IT

c++ - 使用 LLVM 进行静态源代码分析

我最近发现了LLVM(lowlevelvirtualmachine)项目,据我所知,它可用于对源代码进行静态分析。我想知道是否可以在程序中通过函数指针(找到调用者函数和被调用者函数)提取不同的函数调用。我可以在网站上找到这类信息,所以如果你能告诉我这样的库是否已经存在于LLVM中,或者你能给我指出如何自己构建它的好方向(现有源代码、引用、教程、示例...)。编辑:通过我的分析,我实际上想提取调用者/被调用者函数调用。在函数指针的情况下,我想返回一组可能的被调用者。调用者和被调用者都必须在源代码中定义(这不包括库中的第三方函数)。 最佳答案

c++ - 将 LLVM JIT 代码链接到静态 LLVM 库?

我正在实现一个跨平台(MacOSX、Windows和Linux)应用程序,该应用程序将对财务数据进行大量CPU密集型分析。出于速度原因,大部分分析引擎将用C++编写,用户可访问的脚本引擎与C++测试引擎交互。随着时间的推移,我想编写几个脚本前端来模拟其他流行的软件,并拥有大量的用户群。第一个方面将是类似VisualBasic的脚本语言。我认为LLVM非常适合我的需求。由于数据量巨大,性能非常重要;运行一次测试可能需要数小时或数天才能得到答案。我相信使用LLVM还可以让我使用单一的后端解决方案,同时随着时间的推移为不同风格的脚本语言实现不同的前端。测试引擎本身将与界面分离,测试甚至会在单

c++ - 将 LLVM JIT 代码链接到静态 LLVM 库?

我正在实现一个跨平台(MacOSX、Windows和Linux)应用程序,该应用程序将对财务数据进行大量CPU密集型分析。出于速度原因,大部分分析引擎将用C++编写,用户可访问的脚本引擎与C++测试引擎交互。随着时间的推移,我想编写几个脚本前端来模拟其他流行的软件,并拥有大量的用户群。第一个方面将是类似VisualBasic的脚本语言。我认为LLVM非常适合我的需求。由于数据量巨大,性能非常重要;运行一次测试可能需要数小时或数天才能得到答案。我相信使用LLVM还可以让我使用单一的后端解决方案,同时随着时间的推移为不同风格的脚本语言实现不同的前端。测试引擎本身将与界面分离,测试甚至会在单

c++ - 任何将 Clang 作为脚本解释器嵌入 C++ 代码的教程?

我还没有使用llvm或clang的经验。从我读到的clang据说很容易嵌入Wikipedia-Clang,但是,我没有找到任何关于如何实现这一点的教程。那么是否可以通过JIT在运行时编译和执行用户定义的代码来为c++应用程序的用户提供脚本功能?是否可以调用应用程序自己的类和方法并共享对象?编辑:对于脚本语言(甚至C++本身),我更喜欢类似C的语法 最佳答案 我不知道任何教程,但Clang源代码中有一个示例C解释器可能会有所帮助。你可以在这里找到它:http://llvm.org/viewvc/llvm-project/cfe/tru

c++ - 任何将 Clang 作为脚本解释器嵌入 C++ 代码的教程?

我还没有使用llvm或clang的经验。从我读到的clang据说很容易嵌入Wikipedia-Clang,但是,我没有找到任何关于如何实现这一点的教程。那么是否可以通过JIT在运行时编译和执行用户定义的代码来为c++应用程序的用户提供脚本功能?是否可以调用应用程序自己的类和方法并共享对象?编辑:对于脚本语言(甚至C++本身),我更喜欢类似C的语法 最佳答案 我不知道任何教程,但Clang源代码中有一个示例C解释器可能会有所帮助。你可以在这里找到它:http://llvm.org/viewvc/llvm-project/cfe/tru

c++ - #define X X 在 C 中的作用是什么?

在sourcecodeofstdbool.h在LLVM项目中,它显示为:/*Don'tdefinebool,true,andfalseinC++,exceptasaGNUextension.*/#ifndef__cplusplus#definebool_Bool#definetrue1#definefalse0#elifdefined(__GNUC__)&&!defined(__STRICT_ANSI__)/*Define_Bool,bool,false,trueasaGNUextension.*/#define_Boolbool#defineboolbool#definefalsef

c++ - #define X X 在 C 中的作用是什么?

在sourcecodeofstdbool.h在LLVM项目中,它显示为:/*Don'tdefinebool,true,andfalseinC++,exceptasaGNUextension.*/#ifndef__cplusplus#definebool_Bool#definetrue1#definefalse0#elifdefined(__GNUC__)&&!defined(__STRICT_ANSI__)/*Define_Bool,bool,false,trueasaGNUextension.*/#define_Boolbool#defineboolbool#definefalsef

c++ - 如何指定 clang 格式的文件?

我刚刚在Redhat6机器上构建了clang5.0.0并尝试运行clang-format。我无法让-style选项读取样式文件。这是我认为应该起作用的一组命令的示例:./clang-format-style=llvm-dump-config>.llvm-format./clang-format-style=.llvm-format~/myFile.cc当我运行此命令时,我收到以下错误:Invalidvaluefor-style当按预期放置在父目录中时,它似乎可以找到并使用.clang-format。内置类型也可以工作:./clang-format-style=Mozilla~/myFi

c++ - 如何指定 clang 格式的文件?

我刚刚在Redhat6机器上构建了clang5.0.0并尝试运行clang-format。我无法让-style选项读取样式文件。这是我认为应该起作用的一组命令的示例:./clang-format-style=llvm-dump-config>.llvm-format./clang-format-style=.llvm-format~/myFile.cc当我运行此命令时,我收到以下错误:Invalidvaluefor-style当按预期放置在父目录中时,它似乎可以找到并使用.clang-format。内置类型也可以工作:./clang-format-style=Mozilla~/myFi

c++ - 如何制作干净的clang前端?

我正在开发一个C++源代码分析器项目,看来clang是一个不错的候选者解析工作。问题是clang严重依赖基础设施“llvm”项目,如何配置它以获得干净的前端,而无需任何面向具体机器的后端?就像LCC一样,它们为专注于解析器部分的人提供了一个“空”后端。任何建议表示赞赏。 最佳答案 我最近在Windows上做了这个。从here下载clang和llvm源代码.安装cmake和Python(与文档相反,您确实需要Python来构建clang;至少,如果cmake找不到Python运行时,它会放弃)。您还需要VS2008或VS2010。有一