由程序生成优化的strcpy标准库函数汇编代码的方法技术

技术编号:8593806 阅读:235 留言:0更新日期:2013-04-18 06:57
本发明专利技术公开了一种优化的strcpy标准库函数汇编代码生成方法,该方法包括:根据输入参数中的源拷贝地址,获取待拷贝字符串规模;根据目标机器的硬件特性,确定待生成的优化的拷贝执行片段的特征信息及规模;根据待生成的优化的拷贝执行片段的规模,构造分支跳转表;根据待生成的优化的拷贝执行片段的特征信息,生成满足拷贝要求的拷贝模式集合;根据目标机器的硬件特性,对拷贝模式集合进行性能筛选,得到具有最优拷贝性能的拷贝模式,由此生成各个优化的拷贝执行片段。本发明专利技术实现了由程序生成针对特定体系结构的优化的strcpy标准库函数汇编代码,可移植性好。

【技术实现步骤摘要】

本申请涉及标准库函数汇编领域,具体来说,涉及一种。
技术介绍
C标准中的strcpy标准库函数主要用来实现字符串的拷贝,即将源地址指针所指由NULL结束的字符串拷贝到目标地址指针所指的内存地址上。一般地,对于具有不同硬件特性的处理器来说,标准库函数在高级语言层面上的实现代码是一致的。然而,正是因为这种一致性,高级语言层面上的标准库函数很难做到针对特定体系结构的彻底优化。从优化的时机出发,对程序的汇编级进行优化,程序越底层,代码越容易调试,更能有效利用指令集。因此,现代处理器为了提高处理性能,很多标准库函数都是以汇编的形式内嵌静态库中。Strcpy标准库函数所做的操作实质是微处理器与内存间的数据交互,由于现代处理器不支持内存到内存的读写指令,因此内存之间的数据搬移需要处理器的中间操作,即先从内存读数据到寄存器,然后再从寄存器将数据写回内存。Strcpy标准库函数的典型执行是单字节数据搬移,即从内存中读取单字符,判断该字符是否为NULL,若是有效数据则将该字符写回内存。这种算法实现简单,当字符串规模较小时,性能尚可。然而,当处理器的数据带宽大于8bits,且字符串规模较大时,这种单字符的拷贝方式,远没有发挥处理器的数据带宽,拷贝性能极低。在大多数平台下,从内存对齐边界开始数据拷贝可以充分发挥处理器的数据带宽。GCC在汇编级对strcpy标准库函数实现优化时正是利用了这一点,将待拷贝的字符串按照内存地址对齐与否分为两部分先采用单字节数据搬移指令拷贝内存地址不对齐部分的字符串,再采用多字节数据搬移指令将剩余字符串全部拷贝,且在多字节搬移的同时进行字符串结束判断操作。然而,GCC对于strcpy标准库函数的优化,在C语言级别上,采用了相同的优化算法,实现了相同的代码使得性能较优,而在汇编级实现优化时需要针对不同的体系结构,结合各自的硬件特性分别实现,可移植性较差。对于其他自主研发的微处理器,现有的对于标准库函数汇编级的优化,大部分是根据目标处理器的硬件特性,在由相应编译器编译高级语言生成的汇编代码基础上,对其进行手工优化以获得当前微处理器上的较优性能。然而,这种对于标准库函数的优化方法,是基于编译器编译高级语言得到的汇编代码,冗余较多,优化不够彻底。
技术实现思路
本专利技术的目的是基于标准库函数的行为本质,提供一种优化的strcpy标准库函数汇编代码的生成方法。为实现上述目的,本专利技术提供了一种优化的strcpy标准库函数汇编代码生成方法,该方法包括根据输入参数中的源拷贝地址,获取待拷贝字符串规模,所述待拷贝字符串规模,与输入参数中的目标拷贝地址、源拷贝地址构成拷贝要求;根据目标机器的硬件特性,确定待生成的优化的拷贝执行片段的特征信息及规模;根据所述待生成的优化的拷贝执行片段的规模,构造分支跳转表,所述分支跳转表由多条分支跳转语句构成,各条分支跳转语句一一对应于各个优化的拷贝执行片段;根据所述分支跳转表,基于目标机器逻辑运算指令,对所述拷贝要求中的目标拷贝地址、源拷贝地址、字符串规模进行分支判断,完成拷贝要求集到所述分支跳转表的分支映射;根据所述待生成的优化的拷贝执行片段的特征信息,生成满足拷贝要求的拷贝模式集合;根据所述目标机器的硬件特性,对所述拷贝模式集合进行性能筛选,得到具有最优拷贝性能的拷贝模式,由此生成各个优化的拷贝执行片段。本专利技术实施例基于标准库函数的行为本质,设计了一种优化的strcpy标准库函数汇编代码生成方法,该方法生成的strcpy标准库函数汇编代码执行时能够根据输入参数,实现具有针对性优化地字符串拷贝,且只需通过修改硬件特性自定义文件,可扩展到其他基于RISC (Reduced Instruction Set Computer,精简指令集计算机)的体系结构上,可移植性较好。以下结合附图以举例方式对本专利技术的实施方式进行详细描述后,本专利技术的其他特征、特点和优点将会更加明显。附图说明图1为本专利技术实施例的一种优化的strcpy标准库函数汇编代码生成方法流程示意图;图2为本专利技术实施例的优化的strcpy标准库函数的执行框架图;图3为图2的执行框架中获取待拷贝字符串规模的流程示意 图4为图2的执行框架中优化的拷贝执行片段的生成流程示意图;图5为图4中分解字符串规模为η的拷贝任务示意图;图6为图4中基本拷贝模式的生成流程示意图。具体实施例方式下面结合附图和具体实施例对本专利技术进行详细、清楚、完整的说明。显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本专利技术保护的范围。在C标准中,字符串拷贝函数strcpy是常用函数之一,对其进行性能优化具有较大意义。基于优化理论基础,程序越底层,代码越容易调试,更能有效利用指令集。而汇编代码是编译器结合目标机器的硬件特性,将高级语言通过编译优化,代码块合并等操作后生成,与目标机器密切相关。构成汇编语言主体的汇编格式指令是用机器指令的符号表示的,每一条汇编格式指令都对应某条机器指令,能够充分利用机器硬件系统的许多特性。因此,现代微处理器为了提高处理性能,很多标准库函数都是以汇编的形式内嵌静态库中。而标准库函数的优化不同于其他开发程序的优化标准库函数的行为明确,可根据其行为描述直接生成性能较优的代码,而非在冗余代码基础上作修改使其较优。图1为本专利技术实施例的一种优化的strcpy标准库函数汇编代码生成方法流程示意图。如图1所示,所述方法包括步骤100,根据输入参数中的源拷贝地址,获取待拷贝字符串规模;根据目标机器的硬件特性,确定待生成的优化的拷贝执行片段的特征信息及规模;所述待拷贝字符串规模与输入参数中的源拷贝地址、目标拷贝地址构成拷贝要求。优选地,所述待生成的优化的拷贝执行片段的特征信息是指目标拷贝地址的对齐模式、源拷贝地址的对齐模式、字符串规模。步骤102,根据所述待生成的优化的拷贝执行片段的规模,构造分支跳转表;具体地,所述分支跳转表由多条分支跳转语句构成,各条分支跳转语句一一对应于各个优化的拷贝执行片段,每条分支跳转语句旨在将执行路径引向相应的优化的拷贝执行片段。步骤104,根据所述分支跳转表、待生成的优化的拷贝执行片段的特征信息,基于目标机器逻辑运算指令,对所述拷贝要求中的目标拷贝地址、源拷贝地址和字符串规模进行分支判断,完成拷贝要求集到所述分支跳转表的分支映射;步骤106,根据所述待生成的优化的拷贝执行片段的特征信息,生成满足拷贝要求的拷贝模式集合;优选地,所述根据所述待生成的优化的拷贝执行片段的特征信息,生成满足拷贝要求的拷贝模式集合步骤包括根据所述待生成的优化的拷贝执行片段的特征信息,将字符串拷贝任务分解成头部拷贝任务、循环拷贝任务和尾部拷贝任务;根据所述头部拷贝任务、循环拷贝任务和尾部拷贝任务,分别对目标机器可用的数据搬移指令集分别施以基本拷贝模式生成算法,得到满足所述头部拷贝任务、循环拷贝任务和尾部拷贝任务的头部拷贝模式集合、循环拷贝模式集合、尾部拷贝模式集合。分别将头部拷贝模式集合、循环拷贝模式集合、尾部拷贝模式集合中的各个元素进行有序组合,得到组合拷贝模式集合。进一步优选地,所述基本拷贝模式生成算法通过以下步骤实现遍历目标机器可用的数本文档来自技高网
...

【技术保护点】
一种由程序生成优化的strcpy标准库函数汇编代码的方法,其特征在于:根据输入参数中的源拷贝地址,获取待拷贝字符串规模,所述待拷贝字符串规模与输入参数中的目标拷贝地址、源拷贝地址构成拷贝要求;根据目标机器的硬件特性,确定待生成的优化的拷贝执行片段的特征信息及规模;根据所述待生成的优化的拷贝执行片段的规模,构造分支跳转表,所述分支跳转表由多条分支跳转语句构成,各条分支跳转语句一一对应于各个优化的拷贝执行片段;根据所述分支跳转表、待生成的优化的拷贝执行片段的特征信息,基于目标机器逻辑运算指令,对所述拷贝要求中的目标拷贝地址、源拷贝地址、字符串规模进行分支判断,完成拷贝要求集到所述分支跳转表的分支映射;根据所述待生成的优化的拷贝执行片段的特征信息,生成满足拷贝要求的拷贝模式集合;根据所述目标机器的硬件特性,对所述拷贝模式集合进行性能筛选,得到具有最优拷贝性能的拷贝模式,由此生成各个优化的拷贝执行片段。

【技术特征摘要】
1.一种由程序生成优化的Strcpy标准库函数汇编代码的方法,其特征在于 根据输入参数中的源拷贝地址,获取待拷贝字符串规模,所述待拷贝字符串规模与输入参数中的目标拷贝地址、源拷贝地址构成拷贝要求; 根据目标机器的硬件特性,确定待生成的优化的拷贝执行片段的特征信息及规模; 根据所述待生成的优化的拷贝执行片段的规模,构造分支跳转表,所述分支跳转表由多条分支跳转语句构成,各条分支跳转语句一一对应于各个优化的拷贝执行片段; 根据所述分支跳转表、待生成的优化的拷贝执行片段的特征信息,基于目标机器逻辑运算指令,对所述拷贝要求中的目标拷贝地址、源拷贝地址、字符串规模进行分支判断,完成拷贝要求集到所述分支跳转表的分支映射; 根据所述待生成的优化的拷贝执行片段的特征信息,生成满足拷贝要求的拷贝模式集合; 根据所述目标机器的硬件特性,对所述拷贝模式集合进行性能筛选,得到具有最优拷贝性能的拷贝模式,由此生成各个优化的拷贝执行片段。2.根据权利要求1所述的方法,其特征在于所述根据所述待生成的优化的拷贝执行片段的特征信息,生成满足拷贝要求的拷贝模式集合步骤包括 根据所述待生成的优化的拷贝执行片段的特征信息,将字符串拷贝任务分解成头部拷贝任务、循环拷贝任务和尾部拷贝任务; 根据所述头部拷贝任务、循环拷贝任务和尾部拷贝任务,分别对目标机器可用的数据搬移指令集分别施以基本拷贝模式生成算法,得到满足所述头...

【专利技术属性】
技术研发人员:朱浩应欢王东辉洪缨
申请(专利权)人:中国科学院声学研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1