ROSE 是 LLNL 设计的开源编译器框架,支持源代码和二进制级别的程序分析和转换。ROSE 可以作为
ROSE 是一个 开源 编译器基础架构,用于构建大规模 Fortran (77/95/2003)、C (最多 C23)、C++ (最多 C++17)、OpenMP、Cuda 和 UPC 应用程序的源代码到源代码程序转换和分析工具。ROSE 还支持 Java (7)、Ada (95) 以及使用 ARM、AMD64 (x86_64)、Intel x86、MIPS、Motorola 68k、PowerPC (32 位和 64 位)、Java 字节码或 CIL 指令集的二进制文件的分析。ROSE 的目标用户既可以是经验丰富的编译器研究人员,也可以是库和工具开发人员,他们可能拥有最少的编译器经验。ROSE 特别适合用于构建用于静态分析、程序优化、任意程序转换、特定领域优化、复杂循环优化、性能分析和网络安全的定制工具。
ROSE 并非 grep、sed、LLVM 或 Perl 脚本。ROSE 工具利用基于 ROSE 编译器的基础架构,将代码解析成完整的抽象语法树(AST)。AST 包含原始代码中的所有语法和语义信息,并具有丰富的 API,支持复杂的分析和转换。ROSE 工具查询 AST,并报告和/或修改 AST,然后可能从 AST 中生成新的代码。所有 ROSE 工具都可以精确地复制多种编译器语言、供应商和版本的解析和语义分析行为。客户或 ROSE 团队可以快速创建新的 ROSE 工具。ROSE 是开源的,可在大量不断扩展的平台上移植。ROSE 工具可以处理大型代码库,ROSE 基础架构和 ROSE 工具集合不断得到 LLNL ROSE 团队和外部贡献者的升级和扩展。
暂无开放 Issues,或尚未同步最近议题。