寄存器分配方法、装置、电子设备及计算机存储介质制造方法及图纸

技术编号:26170067 阅读:26 留言:0更新日期:2020-10-31 13:36
本发明专利技术实施例提供了一种寄存器分配方法、装置、电子设备及计算机存储介质,其中,所述寄存器分配方法包括:根据调用实例的信息,获取待调用的目标函数和调用约定的信息,其中,所述调用约定中包括当前设备中所有可用寄存器的定义信息;根据所述调用约定的信息,获取所述目标函数所使用的寄存器的信息;根据所述寄存器的信息,为所述调用实例分配寄存器,以通过所述寄存器进行所述目标函数的参数传递。通过本发明专利技术实施例,有效降低了寄存器参数的传递成本,提高了代码编译效率。

【技术实现步骤摘要】
寄存器分配方法、装置、电子设备及计算机存储介质
本专利技术实施例涉及计算机
,尤其涉及一种寄存器分配方法、装置、电子设备及计算机存储介质。
技术介绍
寄存器分配是通过将程序变量尽可能地分配到寄存器,从而提高程序执行速度的一种方法。在实际编译器中,为了尽可能的榨取性能,提升编译器的分配效率,都采用了各种不同的方式来优化寄存器分配算法。以LLVM为例,LLVM是构架编译器(compiler)的框架系统,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)和空闲时间(idle-time),并兼容已有脚本。并且,LLVM提供了与语言无关的中间代码,因此,可将不同语言代码生成中间代码,从而实现通过LLVM将不同的语言相互连结起来。在LLVM中,函数参数由ABI(ApplicationBinaryInterface,应用二进制接口)定义在指定的物理寄存器里传递,LLVM通过函数调用前后物理与虚拟寄存器之间的拷贝来表示。寄存器分配器尝试将虚拟寄存器分配给相同的物理寄本文档来自技高网...

【技术保护点】
1.一种寄存器分配方法,包括:/n根据调用实例的信息,获取待调用的目标函数和调用约定的信息,其中,所述调用约定中包括当前设备中所有可用寄存器的定义信息;/n根据所述调用约定的信息,获取所述目标函数所使用的寄存器的信息;/n根据所述寄存器的信息,为所述调用实例分配寄存器,以通过所述寄存器进行所述目标函数的参数传递。/n

【技术特征摘要】
1.一种寄存器分配方法,包括:
根据调用实例的信息,获取待调用的目标函数和调用约定的信息,其中,所述调用约定中包括当前设备中所有可用寄存器的定义信息;
根据所述调用约定的信息,获取所述目标函数所使用的寄存器的信息;
根据所述寄存器的信息,为所述调用实例分配寄存器,以通过所述寄存器进行所述目标函数的参数传递。


2.根据权利要求1所述的方法,其中,所述调用约定通过以下方式生成:
获取当前设备中除保留寄存器外的其它寄存器的信息;
为所述其它寄存器设置在调用约定中的参数指示信息及参数位置信息;
根据所述参数指示信息及所述参数位置信息,生成所述调用约定。


3.根据权利要求2所述的方法,其中,所述根据所述参数指示信息及参数位置信息,生成所述调用约定,包括:
为所述其它寄存器进行寄存器分配处理设置,通过所述寄存器分配处理设置指示所述其它寄存器在寄存器分配阶段不进行数据保存处理;
根据所述参数指示信息、所述参数位置信息和所述寄存器分配处理设置,生成所述调用约定。


4.根据权利要求3所述的方法,其中,所述根据所述寄存器的信息,为所述调用实例分配寄存器,包括:
根据所述寄存器的信息和所述寄存器分配处理设置,为所述调用实例分配寄存器,并将所述调用实例中的所有活动值保存至所述调用实例对应的堆栈中。


5.根据权利要求4所述的方法,其中,所述方法还包括:
从所述堆栈中获取所述调用实例的安全点;
根据所述安全点,进行所述调用实例的处理操作。


6.根据权利要求2或3所述的方法,其中,所述根据所述调用约定的信息,获取所述目标函数所使用的寄存器的信息,包括:
根据所述调用约定所约定的所述参数指示信息和所述参数位置信息,获取所述目标函数所使用的寄存器的信息。


7.根据权利要求1-6任一项所述的方法,其中,所述方法应用于LLVM,所述调用约定为V8引擎调用约定。


8.一种寄存器分配装置,包括:
第一获取模块,用于根据调用实例的信息,获取待调用的目标函数和调用约定的信息,其中,所述调用约定中包括当前设备中所有可用寄存器的定义信息;
第二获取模块,用于根...

【专利技术属性】
技术研发人员:林作健
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

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

1