本发明涉及计算机,具体涉及一种栈溢出保护方法、存储介质及芯片。
背景技术:
1、许多计算系统在运行程序过程中,由于内存管理并不够可靠,经常遇到栈溢出现象,容易导致计算系统运行出现异常,因此,相关技术通过定时监测堆栈寄存器的指针地址,以监测是否会发生栈溢出问题。但是,由于相关技术采用的监测方式是定时监测方式,因此,相关技术并未能够有效地及时发现堆栈寄存器是否会出现栈溢出问题。
技术实现思路
1、本发明实施例的一个目的旨在提供一种栈溢出保护方法、存储介质及芯片,旨在改善相关技术未能够有效及时地监测栈溢出的技术问题。
2、在第一方面,本发明实施例提供一种栈溢出保护方法,包括:
3、确定初始指针地址;
4、根据所述入栈操作所需的指针偏移量及所述初始指针地址计算入栈地址;
5、根据所述入栈地址及预设的栈底地址生成栈溢出判断结果;
6、根据所述栈溢出判断结果执行栈溢出保护操作。
7、可选地,所述栈溢出判断结果包括栈溢出结果和栈未溢出结果,所述根据所述入栈地址及预设的栈底地址生成栈溢出判断结果包括:
8、判断所述入栈地址是否大于所述栈底地址;
9、若小于或等于,则生成栈溢出结果;
10、若大于,则生成栈未溢出结果。
11、可选地,所述根据所述栈溢出判断结果执行栈溢出保护操作包括:
12、若所述栈溢出判断结果为栈溢出结果,则根据已请求的异常存储区执行栈溢出保护操作,所述异常存储区用于存储所述入栈操作所需存储的数据。
13、可选地,所述根据已请求的异常存储区执行栈溢出保护操作包括:
14、确定所述异常存储区的目标指针地址;
15、根据所述目标指针地址,将所述入栈操作所需存储的数据存储在所述异常存储区内。
16、可选地,所述确定所述异常存储区的目标指针地址包括:
17、确定所述异常存储区的起始存储地址;
18、访问程序计数器的机器码以遍历出第一指针转移指令;
19、解析所述第一指针转移指令,得到第一地址偏移量;
20、根据所述起始存储地址及所述第一地址偏移量确定目标指针地址。
21、可选地,所述根据已请求的异常存储区执行栈溢出保护操作还包括:
22、检测到溢出退出操作时,执行指针还原操作以将当前指针地址还原成所述初始指针地址。
23、可选地,所述执行指针还原操作以将当前指针地址还原成所述初始指针地址包括:
24、访问程序计数器的机器码以遍历出第二指针转移指令;
25、解析所述第二指针转移指令,得到第二地址偏移量;
26、根据所述目标指针地址及所述第二地址偏移量确定起始存储地址;
27、根据所述起始存储地址,将当前指针地址还原成所述初始指针地址。
28、可选地,所述异常存储区包括用于存储所述初始指针地址的指定存储单元,所述指定存储单元的存储地址高于所述起始存储地址,所述根据所述起始存储地址,将当前指针地址还原成所述初始指针地址包括:
29、根据所述起始存储地址确定所述指定存储单元的存储地址;
30、根据所述指定存储单元的存储地址,读取所述指定存储单元以得到所述初始指针地址;
31、根据所述初始指针地址更新所述当前指针地址。
32、在第二方面,本发明实施例提供一种存储介质,存储有计算机可执行指令,所述计算机可执行指令用于使电子设备执行上述的栈溢出保护方法。
33、在第三方面,本发明实施例提供一种芯片,包括:
34、至少一个处理器;以及,
35、与所述至少一个处理器通信连接的存储器;其中,
36、所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的栈溢出保护方法。
37、在本发明实施例提供的栈溢出保护方法中,确定初始指针地址,根据入栈操作所需的指针偏移量及初始指针地址计算入栈地址,根据入栈地址及预设的栈底地址生成栈溢出判断结果,根据栈溢出判断结果执行栈溢出保护操作,因此,本实施例在每次执行入栈操作时,能够及时有效地监测是否发生栈溢出现象,并根据栈溢出判断结果执行栈溢出保护操作,如此能够在发生栈溢出时也能够有效地存储数据,以维持芯片的正常运行,从而能够提高芯片运行的鲁棒性和实时性。
1.一种栈溢出保护方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述栈溢出判断结果包括栈溢出结果和栈未溢出结果,所述根据所述入栈地址及预设的栈底地址生成栈溢出判断结果包括:
3.根据权利要求1所述的方法,其特征在于,所述根据所述栈溢出判断结果执行栈溢出保护操作包括:
4.根据权利要求3所述的方法,其特征在于,所述根据已请求的异常存储区执行栈溢出保护操作包括:
5.根据权利要求4所述的方法,其特征在于,所述确定所述异常存储区的目标指针地址包括:
6.根据权利要求4所述的方法,其特征在于,所述根据已请求的异常存储区执行栈溢出保护操作还包括:
7.根据权利要求6所述的方法,其特征在于,所述执行指针还原操作以将当前指针地址还原成所述初始指针地址包括:
8.根据权利要求7所述的方法,其特征在于,所述异常存储区包括用于存储所述初始指针地址的指定存储单元,所述指定存储单元的存储地址高于所述起始存储地址,所述根据所述起始存储地址,将当前指针地址还原成所述初始指针地址包括:
9.一种存储介质,其特征在于,存储有计算机可执行指令,所述计算机可执行指令用于使电子设备执行如权利要求1至8任一项所述的栈溢出保护方法。
10.一种芯片,其特征在于,包括: