一种代码异常处理的方法及装置与流程

文档序号:36087678发布日期:2023-11-18 04:50阅读:31来源:国知局
一种代码异常处理的方法及装置与流程

本说明书涉及计算机,尤其涉及一种代码异常处理的方法及装置。


背景技术:

1、webassembly是一种能够将其他编程语言编译为浏览器可执行的二进制文件的技术。例如,为诸如c/c++等语言提供一个编译目标,以便它们可以在web上运行。也就是说,webassembly并不是一门编程语言,而是一份字节码标准,需要用高级编程语言编译出字节码放到webassembly虚拟机中才能运行。

2、目前,在资源受限的智能卡或se设备上执行webassembly字节码时,可能会出现异常,导致系统无法正常运行甚至崩溃。但是,由于现有的对webassembly字节码进行执行的方法中并没有对异常进行处理的方法,导致在执行webassembly字节码出现异常时,只能由虚拟机对异常进行处理。例如,中止执行webassembly字节码、记录异常信息并返回等。

3、因此,在执行webassembly字节码出现异常时,如何对异常进行处理,则是一个亟待解决的问题。


技术实现思路

1、本说明书提供一种代码异常处理的方法、装置、电子设备及机器可读存储介质,以在执行webassembly字节码出现异常时,对异常进行处理。

2、本说明书采用下述技术方案:

3、本说明书提供了一种代码异常处理的方法,所述方法应用于电子设备上搭载的用于运行与应用代码对应的webassembly字节码的虚拟机;在所述webassembly字节码中预设了至少一个异常处理区域,所述异常处理区域预设了自定义的用于处理异常的代码段,包括:

4、执行与所述应用代码对应的webassembly字节码;

5、响应于所述webassembly字节码中的任一目标webassembly字节码出现执行异常,确定所述目标webassembly字节码是否位于所述目标异常处理区域内;如果是,跳转到与所述目标异常处理区域对应的用于处理异常的代码段,对所述异常进行处理。

6、可选地,在执行与所述应用代码对应的webassembly字节码之前,所述方法还包括:

7、获取应用代码;

8、通过编译器,将所述应用代码转换为webassembly字节码,并对webassembly字节码中的用于调用代码段的字节码进行修改,修改为用于标识异常处理区域的起始位置的起始字节码以及用于标识异常处理区域的结束位置的结束字节码。

9、可选地,所述异常处理区域包括用于标识所述异常处理区域的起始位置的起始字节码以及用于标识所述异常处理区域的结束位置的结束字节码;

10、确定所述目标webassembly字节码是否位于所述目标异常处理区域内,包括:

11、在执行至所述webassembly字节码中的目标起始字节码时,开始对目标异常处理区域进行监控,直到执行至与所述目标结束字节码,结束对所述目标异常处理区域的监控;

12、确定所述目标webassembly字节码是否位于所述目标异常处理区域内的目标起始字节码与所述目标结束字节码之间的区域。

13、可选地,所述目标异常处理区域内嵌套了至少一个与具有调用关系的多个代码段对应的异常处理区域;

14、在执行至所述webassembly字节码中的目标起始字节码时,开始对目标异常处理区域进行监控,直到执行至与所述目标结束字节码,结束对所述目标代码监控区域的监控,包括:

15、在执行至所述webassembly字节码中的目标起始字节码时,开始对目标异常处理区域进行监控,按照所述多个代码段的调用顺序,为所述多个代码段中的各个与代码段对应的异常处理区域依次注册对应的用于处理异常的代码段;

16、在执行至与所述多个代码段对应的异常处理区域中的结束字节码时,按照所述多个代码段的调用顺序,为所述多个代码段中的各个与代码段对应的异常处理区域依次注销对应的用于处理异常的代码段,直到执行至与所述目标结束字节码,结束对所述目标异常处理区域的监控。

17、可选地,所述目标异常处理区域内包含至少一个异常处理子区域;

18、在执行至所述webassembly字节码中的目标起始字节码时,开始对目标异常处理区域进行监控,直到执行至与所述目标结束字节码,结束对所述目标代码监控区域的监控,包括:

19、在执行至所述webassembly字节码中的目标起始字节码时,开始对目标异常处理区域进行监控,并在执行至与所述至少一个异常处理子区域对应的起始字节码时,为所述至少一个异常处理子区域注册对应的用于处理异常的代码段;

20、在执行至与所述至少一个异常处理子区域对应的结束字节码时,为所述至少一个异常处理子区域注销对应的用于处理异常的代码段,直到执行至所述目标结束字节码,结束对所述目标异常处理区域的监控。

21、可选地,在执行至与所述多个代码段对应的异常处理区域中的结束字节码之前,所述方法还包括:

22、按照与多个异常处理区域对应的用于处理异常的代码段的注册顺序,将所述多个异常处理区域中的各个用于处理异常的代码段的代码段信息,依次存储到为与所述多个异常处理区域对应的用于处理异常的代码段注册的代码段数组中;

23、在执行至与所述多个异常处理区域对应的异常处理区域中的结束字节码之后,按照与多个异常处理区域对应的用于处理异常的代码段的注销顺序,将所述多个异常处理区域中的各个用于处理异常的代码段的代码段信息,从为与所述多个异常处理区域对应的用于处理异常的代码段注册的代码段数组中依次删除。

24、可选地,所述代码段信息包括:代码段对应的异常处理区域中的起始字节码、虚拟机栈帧信息;

25、确定所述目标webassembly字节码是否位于所述目标异常处理区域内,包括:

26、按照所述代码段数组中的各个代码段对应的异常处理区域中的起始字节码以及各异常处理区域所在代码段的大小,确定与各用于处理异常的代码段对应的异常处理区域;

27、从与各用于处理异常的代码段对应的异常处理区域中,确定所述目标webassembly字节码是否位于的目标异常处理区域内;

28、如果是,跳转到与所述目标异常处理区域对应的用于处理异常的代码段,对所述异常进行处理,包括:

29、如果是,基于与所述目标异常处理区域对应的用于处理异常的代码段信息中的虚拟机栈帧信息,恢复虚拟机栈帧,跳转到与所述目标异常处理区域对应的用于处理异常的代码段,对所述异常进行处理。

30、可选地,所述方法还包括:

31、如果否,通过所述虚拟机对所述异常进行处理。

32、可选地,所述方法还包括:

33、在基于所述用于处理异常的代码段对所述异常进行处理的过程中,确定是否出现其他异常,如果否,从位于所述目标结束字节码之后的首个webassembly字节码开始,以继续执行所述webassembly字节码;如果是,确定所述其他异常位于的异常处理区域,跳转到与所述其他异常位于的异常处理区域对应的用于处理异常的代码段,对所述其他异常进行处理。

34、本说明书提供了一种代码异常处理的装置,所述装置应用于电子设备上搭载的用于运行与应用代码对应的webassembly字节码的虚拟机;所述webassembly字节码中预设了至少一个异常处理区域,所述异常处理区域预设了自定义的用于处理异常的代码段,包括:

35、执行模块,用于执行与所述应用代码对应的webassembly字节码;

36、处理模块,用于响应于所述webassembly字节码中的任一目标webassembly字节码出现执行异常,确定所述目标webassembly字节码是否位于所述目标异常处理区域内;如果是,跳转到与所述目标异常处理区域对应的用于处理异常的代码段,对所述异常进行处理。

37、本说明书提供了一种电子设备,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;

38、所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行上述代码异常处理的方法。

39、本说明书提供了一种机器可读存储介质,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现上述代码异常处理的方法。

40、本说明书采用的上述至少一个技术方案能够达到以下有益效果:

41、在本说明书提供的代码异常处理的方法中,webassembly字节码中预设了至少一个异常处理区域,异常处理区域预设了自定义的用于处理异常的代码段。虚拟机可以执行与应用代码对应的webassembly字节码,响应于webassembly字节码中的任一目标webassembly字节码出现执行异常,确定目标webassembly字节码是否位于目标异常处理区域内。如果是,跳转到与目标异常处理区域对应的用于处理异常的代码段,对异常进行处理。本方法可以在异常处理区域内的webassembly字节码出现执行异常时,跳转到与目标异常处理区域对应的用于处理异常的代码段,对异常进行处理。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1