期刊文献+
共找到10篇文章
< 1 >
每页显示 20 50 100
SymPas:Symbolic Program Slicing 被引量:1
1
作者 Ying-Zhou Zhang 《Journal of Computer Science & Technology》 SCIE EI CSCD 2021年第2期397-418,共22页
Program slicing is a technique for simplifying programs by focusing on selected aspects of their behavior.Current mainstream static slicing methods operate on dependence graph PDG(program dependence graph)or SDG(syste... Program slicing is a technique for simplifying programs by focusing on selected aspects of their behavior.Current mainstream static slicing methods operate on dependence graph PDG(program dependence graph)or SDG(system dependence graph),but these friendly graph representations may be a bit expensive for some users.In this paper we attempt to study a light-weight approach of static program slicing,called Symbolic Program Slicing(SymPas),which works as a dataflow analysis on LLVM(low-level virtual machine).In our SymPas approach,slices are stored in symbolic forms,not in procedures being re-analyzed(cf.procedure summaries).Instead of re-analyzing a procedure multiple times to find its slices for each callling context,we calculate a single symbolic slice which can be instantiated at call sites avoiding re-analysis;SymPas is implemented with LLVM to perform slicing on LLVM intermediate representation(IR).For comparison,we systematically adapt IFDS(interprocedural finite distributive subset)analysis and the SDG-based slicing method(SDGIFDS)to statically slice IR programs.Evaluated on open-source and benchmark programs,our backward SymPas shows a factor-of-6 reduction in time cost and a factor-of-4 reduction in space cost,compared with backward SDG-IFDS,thus being more efficient.In addition,the result shows that after studying slices from 66 programs,ranging up to 336800 IR instructions in size,SymPas is highly size-scalable. 展开更多
关键词 data flow analysis instruction dependency table low-level virtual machine(llvm) procedure symbolic slice program slicing
原文传递
面向国产高性能加速器的LLVM编译器设计及优化
2
作者 宋强 唐俊龙 +4 位作者 陈照云 时洋 谭期轩 肖紫阳 邹望辉 《计算机工程》 CAS CSCD 北大核心 2024年第4期321-331,共11页
国防科技大学自主研制的高性能加速器采用中央处理器(CPU)+通用数字信号处理器(GPDSP)的片上异构融合架构,使用超长指令集(VLIW)+单指令多数据流(SIMD)的向量化结构的GPDSP是峰值性能主要支撑的加速核。主流编译器在密集的数据计算指令... 国防科技大学自主研制的高性能加速器采用中央处理器(CPU)+通用数字信号处理器(GPDSP)的片上异构融合架构,使用超长指令集(VLIW)+单指令多数据流(SIMD)的向量化结构的GPDSP是峰值性能主要支撑的加速核。主流编译器在密集的数据计算指令排布、为指令静态分配硬件执行单元、GPDSP特有的向量指令等方面不能很好地支持高性能加速器。基于低级虚拟器(LLVM)编译框架,在前寄存器分配调度阶段,结合峰值寄存器压力感知方法(PERP)、蚁群优化(ACO)算法与GPDSP结构特点,优化代价模型,设计支持寄存器压力感知的指令调度模块;在后寄存器分配阶段提出支持静态功能单元分配的指令调度策略,通过冲突检测机制保证功能单元分配的正确性,为指令并行执行提供软件基础;在后端封装一系列丰富且规整的向量指令接口,实现对GPDSP向量指令的支持。实验结果表明,所提出的LLVM编译架构优化方法从功能和性能上实现了对GPDSP的良好支撑,GCC testsuite测试整体性能平均加速比为4.539,SPEC CPU 2017浮点测试整体性能平均加速比为4.49,SPEC CPU 2017整型测试整体性能平均加速比为3.24,使用向量接口的向量程序实现了平均97.1%的性能提升率。 展开更多
关键词 通用数字信号处理器 低级虚拟器 编译器 指令调度 向量指令接口
下载PDF
基于LLVM架构的NiosⅡ后端快速移植 被引量:3
3
作者 任胜兵 卢念 +1 位作者 张万利 潘震宇 《计算机应用与软件》 CSCD 2011年第12期22-25,50,共5页
编译器后端移植是目前嵌入式系统研究的重要领域,如何快速实现编译器后端移植仍然是嵌入式系统研究的热点。采用新的编译器架构LLVM,移植NiosⅡ处理器来分析LLVM快速后端移植架构。使用LLVM后端移植架构的TableGen描述NiosⅡ体系结构例... 编译器后端移植是目前嵌入式系统研究的重要领域,如何快速实现编译器后端移植仍然是嵌入式系统研究的热点。采用新的编译器架构LLVM,移植NiosⅡ处理器来分析LLVM快速后端移植架构。使用LLVM后端移植架构的TableGen描述NiosⅡ体系结构例如指令、寄存器等,使用完备LLVM C++函数库实现复杂或特殊的操作。TableGen与C++函数库互相配合,最终实现LLVM架构对NiosⅡ后端的支持。实验结果表明与GCC编译器后端移植方法相比,基于LLVM架构的编译器后端移植方法的工作量减少了64.2%~83.9%,大大节省后端移植时间。 展开更多
关键词 编译器 后端快速移植 低级虚拟机(llvm) NiosⅡ处理器
下载PDF
基于LLVM的指令并行调度与实现 被引量:1
4
作者 屈秋雯 梁利平 《微电子学与计算机》 CSCD 北大核心 2013年第11期60-63,共4页
IME-Diamond处理器是一款VLIW结构的多核处理器,具有多个通道,可并行执行多条指令。为了充分利用多通道并行执行的特性,IME-Diamond处理器需要编译器提供并行度信息来实现指令并行。开源的LLVM 编译器架构为编译器的移植和优化提供... IME-Diamond处理器是一款VLIW结构的多核处理器,具有多个通道,可并行执行多条指令。为了充分利用多通道并行执行的特性,IME-Diamond处理器需要编译器提供并行度信息来实现指令并行。开源的LLVM 编译器架构为编译器的移植和优化提供了一个便利的平台。在此平台上可以配置和插入相应的Pass模块对指令进行分析与静态调度,并根据分析结果插入Paralink指令来显式的指示出指令的并行度,指导硬件并行发射。实验结果表明,通过并行调度后,生成代码的性能提升了16%~30%。 展开更多
关键词 llvm 编译器 指令并行 指令调度
下载PDF
面向C2VHDL编译器的基本块级指针分析算法 被引量:2
5
作者 郭振华 吴艳霞 +2 位作者 张国印 杨杰 顾国昌 《吉林大学学报(工学版)》 EI CAS CSCD 北大核心 2013年第2期417-423,共7页
针对现有的C2VHDL编译器中指针编译技术所存在的缺陷,通过对传统指针分析算法进行研究,在基于低级虚似机(LLVM)面向CPU-FPGA应用的可重构编译器ASCRA架构上,设计并实现了一种以基本块为分析粒度的基于控制流图的流敏感上下文敏感指针分... 针对现有的C2VHDL编译器中指针编译技术所存在的缺陷,通过对传统指针分析算法进行研究,在基于低级虚似机(LLVM)面向CPU-FPGA应用的可重构编译器ASCRA架构上,设计并实现了一种以基本块为分析粒度的基于控制流图的流敏感上下文敏感指针分析算法。在可重构编译器ASCRA生成硬件VHDL程序时提供指针访存控制辅助信息。实验结果表明:在保证C2VHDL结果正确的前提下,该算法在简化了分析过程的同时,能够达到与流敏感指针分析相同的精度。与指针还原技术相比,该算法能够支持更多的指针数据类型。采用该算法的编译器ASCRA生成的硬件程序在硬件资源占用情况和运行速度两方面与指针还原技术相比都能够达到相同的硬件效果。 展开更多
关键词 计算机系统结构 可重构编译 指针分析算法 低级虚拟机
下载PDF
基于LLVM的Android应用程序加固方法
6
作者 江秋语 殷芙萍 《现代计算机》 2021年第11期150-156,共7页
逆向分析严重威胁着Android应用程序的知识产权。代码混淆是保护Android应用程序的常用方法,但是针对Android字节码的混淆保护会带来大量的性能开销。本地代码比Java代码加载速度更快且保留更少的语义,因此混淆技术对本地代码更适用。... 逆向分析严重威胁着Android应用程序的知识产权。代码混淆是保护Android应用程序的常用方法,但是针对Android字节码的混淆保护会带来大量的性能开销。本地代码比Java代码加载速度更快且保留更少的语义,因此混淆技术对本地代码更适用。本文提出一种基于LLVM编译框架的Android应用程序加固方法,该方法有安全性高、隐蔽性好、性能开销低的特点。利用LLVM将DEX文件中的Java函数转化为LLVM中间表示,对其进行混淆并预编译得到本地代码;执行加固后的程序时通过JNI调用本地代码,动态加载被保护函数。实验结果表明,该方法能够在较低性能消耗下有效地保护应用程序不受静态分析和动态调试攻击的影响。 展开更多
关键词 Android加固 llvm 函数本地化 代码混淆 安全
下载PDF
基于底层虚拟机的标识符混淆方法 被引量:1
7
作者 田大江 李成扬 +1 位作者 黄天波 文伟平 《计算机应用》 CSCD 北大核心 2022年第8期2540-2547,共8页
针对现有代码混淆仅限于某一特定编程语言或某一平台,并不具有广泛性和通用性,以及控制流混淆和数据混淆会引入额外开销的问题,提出一种基于底层虚拟机(LLVM)的标识符混淆方法。该方法实现了4种标识符混淆算法,包括随机标识符算法、重... 针对现有代码混淆仅限于某一特定编程语言或某一平台,并不具有广泛性和通用性,以及控制流混淆和数据混淆会引入额外开销的问题,提出一种基于底层虚拟机(LLVM)的标识符混淆方法。该方法实现了4种标识符混淆算法,包括随机标识符算法、重载归纳算法、异常标识符算法以及高频词替换算法,同时结合这些算法,设计新的混合混淆算法。所提混淆方法首先在前端编译得到的中间文件中候选出符合混淆条件的函数名,然后使用具体的混淆算法对这些函数名进行处理,最后使用具体的编译后端将混淆后的文件转换为二进制文件。基于LLVM的标识符混淆方法适用于LLVM支持的语言,不影响程序正常功能,且针对不同的编程语言,时间开销在20%内,空间开销几乎无增加;同时程序的平均混淆比率在77.5%,且相较于单一的替换算法和重载算法,提出的混合标识符算法理论分析上可以提供更强的隐蔽性。实验结果表明,所提方法具有性能开销小、隐蔽性强、通用性广的特点。 展开更多
关键词 软件保护 代码混淆 标识符混淆 底层虚拟机 混淆方法
下载PDF
基于GPU的LLVM程序分析信息并行提取
8
作者 马冬冬 衷璐洁 朱敬茹 《计算机工程》 CAS CSCD 北大核心 2017年第10期23-30,共8页
LLVM中间表示(IR)中包含大量的程序分析原始信息,传统基于CPU的程序分析信息提取方法大多采用串行的循环迭代方式处理较大规模程序,可扩展性较差。为此,结合图像处理器(GPU)的通用计算优势,提出一种基于统一计算设备架构的LLVM平台程序... LLVM中间表示(IR)中包含大量的程序分析原始信息,传统基于CPU的程序分析信息提取方法大多采用串行的循环迭代方式处理较大规模程序,可扩展性较差。为此,结合图像处理器(GPU)的通用计算优势,提出一种基于统一计算设备架构的LLVM平台程序分析信息并行提取方法,在CPU上实现程序特征分析及IR预处理、存储结构设计及提取信息的可视化,在GPU上完成并行线程调度的程序分析信息匹配及提取工作。实验结果表明,该方法可提高LLVM平台程序分析信息的提取效率,与串行提取方法相比,最高可获得4倍的加速比。 展开更多
关键词 底层虚拟机 中间表示 程序分析 信息提取 图形处理器 可扩展性
下载PDF
面向可重构编译技术的RAM访问优化算法
9
作者 杨敏 吴艳霞 +1 位作者 顾国昌 孙延腾 《计算机工程》 CAS CSCD 北大核心 2011年第2期284-285,289,共3页
在基于低层虚拟机的四层C-to-VHDL可重构编译架构上,针对RAM访问和设计执行性能之间的矛盾,提出一种RAM读取优化算法。通过对IR访存指令及数据相关性的分析,创建专用数据通路,优化RAM的访存过程。实验结果表明,该优化算法能够有效减少RA... 在基于低层虚拟机的四层C-to-VHDL可重构编译架构上,针对RAM访问和设计执行性能之间的矛盾,提出一种RAM读取优化算法。通过对IR访存指令及数据相关性的分析,创建专用数据通路,优化RAM的访存过程。实验结果表明,该优化算法能够有效减少RAM访问次数。 展开更多
关键词 C—to—VHDL可重构编译 FPGA设计 低层虚拟机 RAM访问优化
下载PDF
非计数类循环的C2VHDL编译方法
10
作者 杨杰 吴艳霞 +1 位作者 顾国昌 孙延腾 《计算机工程与应用》 CSCD 北大核心 2010年第30期61-64,85,共5页
目前,大多数C2VHDL编译工具采用有穷状态机(FSM)的设计方法,该方法可以实现循环初值、终值以及步进值确定的计数类循环。由于非计数类循环每次执行循环时都要进行条件判断,程序执行前不能确定循环体执行次数,导致采用FSM方式对其进行C2V... 目前,大多数C2VHDL编译工具采用有穷状态机(FSM)的设计方法,该方法可以实现循环初值、终值以及步进值确定的计数类循环。由于非计数类循环每次执行循环时都要进行条件判断,程序执行前不能确定循环体执行次数,导致采用FSM方式对其进行C2VHDL编译很复杂,所以大多数C2VHDL编译工具不支持这类循环。以基于LLVM(Low Level Virtual Machine)的ASCRA(Application-Specific Compiler for Reconfigurable Architecture)编译架构为基础,采用一个周期高电平使能信号控制方式代替FSM,提出了一种支持嵌套格式的非计数类循环编译方法。实验结果证明该方法生成的控制结构简单,能够灵活地实现各种非计数类循环的C2VHDL转换,具有较强的可扩展性。 展开更多
关键词 C2VHDL编译器 低级虚拟系统中间表示(llvm IR) 非计数类循环
下载PDF
上一页 1 下一页 到第
使用帮助 返回顶部