跳转源列表处理方法、装置及编译器制造方法及图纸

技术编号:10411842 阅读:139 留言:0更新日期:2014-09-10 20:22
本发明专利技术提供一种跳转源列表处理方法、装置及编译器,该方法包括:获取跳转目标的标识,跳转目标对应n条跳转指令,n为大于等于2的正整数;以标识为指针指向n条跳转指令中每条跳转指令后的延迟槽,并在指针指向延迟槽时存储对应的跳转指令在代码缓冲区中的地址信息。本发明专利技术通过延迟槽存储跳转源列表中的跳转指令地址信息,避免在内存上设置专用空间以链表结构方式用来存储跳转源列表中的跳转指令地址信息所造成的内存开销,在跳转目标的地址确定后,通过对代码缓冲区的一次遍历即可完成对n条跳转指令的目标地址的修改,相对于现有技术可以减少根据跳转目标的地址修改n条跳转指令的遍历次数,提高对n条指令进行修改的执行效率。

【技术实现步骤摘要】
跳转源列表处理方法、装置及编译器
本专利技术涉及计算机技术,尤其涉及一种跳转源列表处理方法、装置及编译器。
技术介绍
在编译器的实现过程中,需向指令缓存(buffer)序列中发射跳转指令编码,由于当前无法获得跳转目标地址,从而无法确定确切的跳转指令编码。因此,只有当编译过程结束,并且所有指令位置都确定后,才能确定跳转目标地址,而对于例如分支跳转、绝对跳转、寄存器跳转等跳转目标一致的跳转指令,需要根据该些跳转指令的地址生成跳转源列表,以实现跳转目标地址确定后,根据跳转源列表对这些指令进行统一修改。现有技术通过在内存设置专用链表空间存储跳转目标一致的跳转指令的地址以生成跳转源列表。然而,现有技术存在内存开销较大,对指令进行统一修改的执行效率低的问题。
技术实现思路
本专利技术提供一种跳转源列表的处理方法、装置及编译器,可以实现通过延迟槽存储跳转源列表信息,避免在内存上设置专用空间以链表结构方式用来存储跳转源列表信息所造成的内存开销,在跳转目标的地址确定后,通过对代码缓冲区的一次遍历即可完成对η条跳转指令的目标地址的修改,相对于现有技术可以减少根据跳转目标的地址修改η条跳转指令的遍历次数,提高对η条指令进行修改的执行效率。本专利技术第一方面,提供一种跳转源列表的处理方法,包括:获取跳转目标的标识,所述跳转目标对应η条跳转指令,所述η为大于等于2的正整数;以所述标识为指针指向所述η条跳转指令中每条跳转指令后的延迟槽,并在所述指针指向所述延迟槽时存储对应的跳转指令在代码缓冲区中的地址信息。本专利技术第二方面,提供一种跳转源列表处理装置,包括:获取模块,用于获取跳转目标的标识,所述跳转目标对应η条跳转指令,所述η为大于等于2的正整数;生成模块,用于以所述获取模块获取的标识为指针指向所述η条跳转指令中每条跳转指令后的延迟槽,并在所述指针指向所述延迟槽时存储对应的跳转指令在代码缓冲区中的地址信息。本专利技术第三方面,提供一种编译器,包括:如上所述的任意一种跳转源列表处理装置。本专利技术提供的跳转源列表处理方法、装置及编译器,通过首先获取跳转目标的标识,跳转目标对应η条跳转指令,η为大于等于2的正整数,再以标识为指针指向η条跳转指令中每条跳转指令后的延迟槽,并在指针指向延迟槽时存储对应的跳转指令在代码缓冲区中的地址信息,实现通过延迟槽存储跳转源列表中跳转指令地址信息,可以避免在内存上设置专用空间以链表结构方式用来存储跳转源列表中跳转指令地址信息所造成的内存开销,在跳转目标的地址确定后,通过对代码缓冲区的一次遍历即可完成对η条跳转指令的目标地址的修改,相对于现有技术可以减少根据跳转目标的地址修改η条跳转指令的遍历次数,提高对η条指令进行修改的执行效率。【附图说明】图1为本专利技术提供的跳转源列表处理方法实施例一的流程图;图2为现有技术的跳转源列表的生成示意图;图3为MIPS中延迟槽的原理示意图;图4为本专利技术提供的跳转源列表处理方法实施例二的流程图;图5A-图5C为本专利技术的跳转源列表的生成示意图;图6为本专利技术提供的跳转源列表处理装置实施例一的结构示意图;图7为本专利技术提供的跳转源列表处理装置实施例二的结构示意图;图8为本专利技术提供的跳转源列表处理装置实施例三的结构示意图;图9为本专利技术提供的跳转源列表处理装置实施例四的结构示意图。图10为本专利技术提供的编译器的结构示意图。【具体实施方式】图1为本专利技术提供的跳转源列表处理方法实施例一的流程图,如图1所示,本实施例的跳转源列表处理方法包括:S101、获取跳转目标的标识,跳转目标对应η条跳转指令,η为大于等于2的正整数。举例来说,跳转目标对应分支跳转指令、短跳转指令和长跳转指令等三条指令,则先获取该跳转目标的标识,其中,该跳转目标的标识用作指针,通过给标识赋值使标识指向η条跳转指令中每条跳转指令后的延迟槽。S102、以标识为指针指向η条跳转指令中每条跳转指令后的延迟槽,并在指针指向延迟槽时存储对应的跳转指令在代码缓冲区中的地址信息。具体来说,本实施例的适用场景可以为无内部互锁流水级的微处理器(Microprocessor without Interlocked piped stages architecture,简称MIPS)中编译器的实现过程。对于跳转目标一致的跳转指令,需要根据该些跳转指令的地址生成跳转源列表,以实现跳转目标地址确定后,对这些跳转指令进行统一修改,跳转源列表中可以包括跳转目标的标识以及各跳转指令的地址信息等。可以理解的是,本实施例将跳转指令在代码缓冲区中的地址信息存储至跳转指令后的延迟槽时,可以按照一定的顺序顺次将η条跳转指令的地址信息存储至对应的延迟槽,也可以不按照顺序,将η条跳转指令的地址信息乱序存储至延迟槽中。图2为现有技术的跳转源列表的生成示意图,如图2所示,现有技术以链表结构的方式存储跳转源列表;假设分支跳转指令、短跳转指令和长跳转指令都跳转至共同的跳转目标,在内存上设置专用空间以链表结构方式用来存储跳转源列表的信息,首先以共同的跳转目标的标识作为链表头,按照链表指针的指示依次将分支跳转指令、短跳转指令和长跳转指令的指令地址插入到链表中,生成跳转源列表,然后,一旦确定共同的跳转目标的地址,首先从链表头开始遍历链表找到待修改的跳转指令的地址,再根据查找到的待修改的跳转指令的地址遍历代码缓冲区以查找到待修改的跳转指令,再根据共同的跳转目标的地址,对待修改的跳转指令进行修改,其余跳转指令同样通过上述过程进行查找修改。图3为MIPS中延迟槽的原理示意图,如图3所示,MIPS流水线分五级:取指、读取寄存器、算术或者逻辑操作、读写数据高速缓存中的内存变量、写回寄存器。由于MIPS分支指令下一条指令的目标地址确定前,流水线的取指级是不能工作的。为了利用这个时间片,在MIPS体系结构的层面上规定跳转指令后面的一个时间片为分支延迟槽,位于分支延迟槽中的指令总是被执行,与分支发生与否没有关系,且其先于分支指令提交。本实施例提供的跳转源列表处理方法,通过首先获取跳转目标的标识,跳转目标对应η条跳转指令,η为大于等于2的正整数,再以标识为指针指向η条跳转指令中每条跳转指令后的延迟槽,并在指针指向延迟槽时存储对应的跳转指令在代码缓冲区中的地址信息,实现通过延迟槽存储跳转源列表中的跳转指令地址信息,可以避免在内存上设置专用空间以链表结构方式用来存储跳转源列表中的跳转指令地址信息所造成的内存开销,在跳转目标 的地址确定后,通过对代码缓冲区的一次遍历即可完成对η条跳转指令的目标地址的修改,相对于现有技术可以减少根据跳转目标的地址修改η条跳转指令的遍历次数,提高对η条指令进行修改的执行效率。图4为本专利技术提供的跳转源列表处理方法实施例二的流程图,如图4所示,本实施例的跳转源列表处理方法,在图1所示实施例的基础上,包括:S201、获取跳转目标的标识,跳转目标对应η条跳转指令,η为大于等于2的正整数。S202、以标识为指针指向η条跳转指令中每条跳转指令后的延迟槽,并在指针指向延迟槽时存储对应的跳转指令在代码缓冲区中的地址信息。S203、若确定出跳转目标的地址,则根据标识确定η条跳转指令的存储地址,根据跳转目标的地址修改η条跳转指令的目标地址。在一个实施例中,S202可以包括:以标识为指针按顺序指向η条跳本文档来自技高网...
跳转源列表处理方法、装置及编译器

【技术保护点】
一种跳转源列表处理方法,其特征在于,包括:获取跳转目标的标识,所述跳转目标对应n条跳转指令,所述n为大于等于2的正整数;以所述标识为指针指向所述n条跳转指令中每条跳转指令后的延迟槽,并在所述指针指向所述延迟槽时存储对应的跳转指令在代码缓冲区中的地址信息。

【技术特征摘要】
1.一种跳转源列表处理方法,其特征在于,包括: 获取跳转目标的标识,所述跳转目标对应η条跳转指令,所述η为大于等于2的正整数; 以所述标识为指针指向所述η条跳转指 令中每条跳转指令后的延迟槽,并在所述指针指向所述延迟槽时存储对应的跳转指令在代码缓冲区中的地址信息。2.根据权利要求1所述的方法,其特征在于,所述以所述标识为指针指向所述η条跳转指令中每条跳转指令后的延迟槽,并在所述指针指向延迟槽时存储对应的跳转指令在代码缓冲区中的地址信息之后,还包括: 若确定出所述跳转目标的地址,则根据所述标识确定所述η条跳转指令的存储地址,根据所述跳转目标的地址修改所述η条跳转指令的目标地址。3.根据权利要求1或2所述的方法,其特征在于,所述以所述标识为指针指向所述η条跳转指令中每条跳转指令后的延迟槽,并在所述指针指向延迟槽时存储对应的跳转指令在代码缓冲区中的地址信息,包括: 以所述标识为指针按顺序指向所述η条跳转指令中第k条跳转指令后的延迟槽,以使所述延时槽存储所述第k-Ι条跳转指令在代码缓冲区中的地址信息,其中,I < k < n,且第O条跳转指令在代码缓冲区中的地址信息为空值。4.根据权利要求1或2所述的方法,其特征在于,所述以所述标识为指针指向所述η条跳转指令中每条跳转指令后的延迟槽,并在所述指针指向延迟槽时存储对应的跳转指令在代码缓冲区中的地址信息,包括: 以所述标识为指针按顺序指向所述η条跳转指令中第k条跳转指令后的延迟槽,以使所述延时槽存储所述第k+Ι条跳转指令在代码缓冲区中的地址信息,其中,I < k < n,且第n+1条跳转指令在代码缓冲区中的地址信息为空值。5.根据权利要求3所述的方法,其特征在于,所述根据所述标识确定所述η条跳转指令的存储地址,根据所述跳转目标的地址修改所述η条跳转指令的目标地址,包括: 根据所述标识确定所述第η条跳转指令的存储地址,根据所述跳转目标的地址修改所述第η条跳转指令的目标地址; 根据所述标识按顺序指向的所述η条跳转指令中第ρ条跳转指令后的延迟槽中存储的地址信息,确定第P-1条跳转指令的存储地址,根据所述跳转目标的地址修改所述第P-1条跳转指令的目标地址,其中,1〈Ρ ( η ; 当标识指向的内容为空值时,完成修改。6.根据权利要求5所述的方法,其特征在于,在所述当标识指向的内容为空值时,完成修改之前,还包括: 将所述第P条跳转指令后的延迟槽中存储的地址信息恢复为原值。7.根据权利要求4所述的方法,其特征在于,所述根据所述标识确定所述η条跳转指令的存储地址,根据所述跳转目标的地址修改所述η条跳转指令的目标地址,包括: 以所述标识为指针指向第I条跳转指令后的延迟槽; 根据所述标识确定所述第I条跳转指令的存储地址,根据所述跳转目标的地址修改所述第I条跳转指令的目标地址; 根据所述标识按顺序指向的所述η条跳转指令中第q条跳转指令后的延迟槽中存储的地址信息,确定第q+Ι条跳转指令的存储地址,根据所述跳转目标的地址修改所述第q+Ι条跳转指令的目标地址,其中,I < q<n ; 当标识指向的内容为空值时,完成修改。8.根据权利要求7所述的方法,其特征在于,在所述当标识指向的内容为空值时,完成修改之前,还包括: 将所述第q条跳转指令后的延迟槽中存储的地址信息恢复...

【专利技术属性】
技术研发人员:黄文君薛双百汪清王策
申请(专利权)人:龙芯中科技术有限公司
类型:发明
国别省市:北京;11

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

1