LLVM架构下C2VHDL编译器的指针分析算法

需积分: 9 1 下载量 22 浏览量 更新于2024-08-12 收藏 1.55MB PDF 举报
"这篇论文是2013年由郭振华等人发表在《吉林大学学报(工学版)》第43卷第2期上的科研成果,属于工程技术领域,特别是计算机科学与技术的子领域,如计算机体系结构、可重构计算和编译技术。该研究得到了多项基金支持,包括国家自然科学基金、黑龙江省自然科学基金和中央高校基本科研业务费专项项目。" 正文: 在C2VHDL编译器中,指针处理是一项挑战性的任务,因为指针的复杂性可能导致编译后的VHDL程序出现错误或效率低下。传统的指针分析算法在处理这一问题时往往存在不足,尤其是在CPU-FPGA应用的可重构编译器上下文中。郭振华等人在此背景下,对LLVM(Low-Level Virtual Machine)框架下的ASCRA(一种可重构编译器架构)进行了改进,提出了一种基于基本块的流敏感上下文敏感指针分析算法。 该算法以基本块作为分析的最小单位,利用控制流图(Control Flow Graph, CFG)来描述程序的执行流程。这种粒度细化的分析方法旨在简化指针分析过程,同时保持与流敏感指针分析相同的精度。流敏感分析意味着算法能考虑到程序执行中变量值的变化,而上下文敏感则意味着它考虑了不同执行路径对指针的影响。 实验结果显示,新算法在确保C2VHDL编译结果正确性的基础上,优化了分析步骤,且其精度与传统的流敏感指针分析相当。相较于指针还原技术,郭振华等人的算法具有更大的灵活性,能处理更多类型的指针数据,这为编译器提供了更广泛的支持。 在实际应用中,使用该算法的ASCRA编译器生成的硬件VHDL程序在占用硬件资源和运行速度方面与采用指针还原技术的方法相比,表现出了相当的性能。这意味着该算法在提升编译效率的同时,没有牺牲硬件效率,对于CPU-FPGA应用的可重构编译器来说,这是一个重要的进步。 这篇论文提出的基于基本块级的指针分析算法为C2VHDL编译器提供了一个更有效、更灵活的解决方案,有助于解决指针编译的难题,特别是在可重构计算的背景下,对于提高CPU到FPGA的代码转换质量和效率具有重大意义。