预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共30页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)国家知识产权局(12)发明专利申请(10)申请公布号CN114968370A(43)申请公布日2022.08.30(21)申请号202110212148.1(22)申请日2021.02.25(71)申请人华为技术有限公司地址518129广东省深圳市龙岗区坂田华为总部办公楼(72)发明人初宁(74)专利代理机构深圳市深佳知识产权代理事务所(普通合伙)44285专利代理师王仲凯(51)Int.Cl.G06F9/38(2006.01)G06F9/30(2006.01)权利要求书2页说明书20页附图7页(54)发明名称一种异常处理方法及相关装置(57)摘要本申请公开了一种异常处理方法,可以应用于处理器。该方法包括:处理器根据第一函数的调用指令,调用第二函数,该第一函数为高级语言函数,第二函数为运行时函数;在执行第二函数的过程中出现异常时,处理器执行第二函数的返回操作,该第二函数的返回操作包括将执行第二函数时所使用的第一寄存器恢复至第一函数调用第二函数之前的状态;处理器根据第一寄存器的状态执行异常处理。本方案中,由于被调用函数会在执行前保存调用函数的寄存器状态,因此处理器通过在发生异常时复用被调用的函数所存储的寄存器的值来恢复寄存器状态,免去从目标高级语言函数进入运行时函数前备份寄存器状态的步骤,提高了处理器的运行性能。CN114968370ACN114968370A权利要求书1/2页1.一种异常处理方法,其特征在于,包括:根据第一函数的调用指令,调用第二函数,所述第一函数为高级语言函数,所述第二函数为运行时函数;在执行所述第二函数的过程中出现异常时,执行所述第二函数的返回操作,所述第二函数的返回操作包括将执行所述第二函数时所使用的第一寄存器恢复至所述第一函数调用所述第二函数之前的状态;根据所述第一寄存器的状态执行异常处理。2.根据权利要求1所述的方法,其特征在于,所述执行所述第二函数的返回操作,包括:从栈帧中获取所述第二函数的返回地址和所述第二函数所存储的第一寄存器的值;根据所述第一寄存器的值更新执行所述第二函数时所使用的第一寄存器中的值;跳转至所述返回地址。3.根据权利要求1或2所述的方法,其特征在于,所述执行所述第二函数的过程中出现异常,包括:在执行第二函数的过程中获取到第三函数返回的第一返回值,所述第一返回值用于指示出现异常,所述第三函数为所述第二函数所调用的函数。4.根据权利要求1或2所述的方法,其特征在于,所述执行所述第二函数的过程中出现异常,包括:在执行第二函数的过程中检测到异常标记位被置位为异常状态。5.根据权利要求1或2所述的方法,其特征在于,所述执行所述第二函数的过程中出现异常,包括:在执行第二函数的过程中,所述第二函数抛异常。6.根据权利要求5所述的方法,其特征在于,所述执行所述第二函数的返回操作,还包括:生成第二返回值,所述第二返回值用于指示出现异常;向所述第一函数返回所述返回值。7.根据权利要求5所述的方法,其特征在于,所述方法还包括:将异常标记位置位为异常状态。8.根据权利要求1‑7任意一项所述的方法,其特征在于,所述执行所述第二函数的返回操作之前,所述方法还包括:将所述第二函数的返回地址修改为目标函数的地址,所述目标函数用于跳转至异常捕获地址。9.根据权利要求8所述的方法,其特征在于,所述第二目标函数还用于将异常参数更新至第二寄存器中,所述异常参数用于跳转至所述异常捕获地址后执行异常处理。10.一种异常处理装置,其特征在于,包括存储器和处理器;所述存储器存储有代码,所述处理器被配置为执行所述代码,当所述代码被执行时,所述终端执行如权利要求1至9任一项所述的方法。11.一种计算机可读存储介质,其特征在于,包括计算机可读指令,当所述计算机可读指令在计算机上运行时,使得所述计算机执行如权利要求1至9中任一项所述的方法。12.一种计算机程序产品,其特征在于,包括计算机可读指令,当所述计算机可读指令2CN114968370A权利要求书2/2页在计算机上运行时,使得所述计算机执行如权利要求1至9任一项所述的方法。3CN114968370A说明书1/20页一种异常处理方法及相关装置技术领域[0001]本申请涉及计算机技术领域,尤其涉及一种异常处理方法及相关装置。背景技术[0002]在计算机领域中,高级语言通常需要支持异常处理(exceptionhandling)机制。异常处理机制是一种程序运行故障恢复机制,能够较好地处理程序不能正常运行的情况。[0003]目前,异常处理的流程通常包括异常抛出、获取高级语言上下文信息以及异常跳转等步骤。在获取高级语言上下文信息的步骤中,需要将寄存器的状态恢复至执行高级语言函数时的状态,以便于后续的异常处理函数能够基于寄存器的状态执行异常处理流程。相关技术中,从目标高级语言函数进入运