当前位置: 首页 > 专利查询>徐下兵专利>正文

一种程序自动查错方法技术

技术编号:7996243 阅读:222 留言:0更新日期:2012-11-22 05:05
本发明专利技术涉及一种程序自动查错方法,包括以下步骤:101,读取并分析汇编源程序Y,得到所述汇编源程序Y使用到的全部变量,再生成所述变量和与其一一对应的页地址的关系列表A;102,将所述汇编源程序Y进行预处理,规范汇编源程序Y,使形成一个易于识别和检查的汇编源程序B;103,对所述汇编源程序B进行页切换正确性检查,发现并报告页错误。通过本发明专利技术,可以快速准确地检查出程序中的页地址错误,还可以检查出程序中的无效代码,并且易于实现。节省了人力,保证开发工作的高效进行。本发明专利技术思想适用范围广,可广泛用于所有数据空间或程序空间存在页或段区分的程序的检错。包括具有页/段特性存储空间的DSP处理器,MCU,MPU等芯片的程序的页地址错误检查。

【技术实现步骤摘要】

本专利技术涉及,特别涉及对程序中的页错误进行自动查错的方法。
技术介绍
对于嵌入式软件,绝大多数要与硬件直接打交道。根据嵌入式系统的差异,所用处理器也各不相同,有用DSP (Digital Signal Processing数字信号处理)的,有用单片机的。这些处理器的程序或用汇编语言编写,或用高级语言与汇编的混合编写,但是核心部分要用汇编语言编写以提高效率。对于一些DSP和单片机来说,数据区间和程序区间是分页的(也有称为段的),正如早期PC机,每段内存和数据都是64k字节。不同的是DSP和单片机的一页是64或128或其他2的η次方(η为大于O的正整数)个存储单元。以大家熟悉的TI DSP为例,TI C28XX系列是64字为一页,TI C2XX/C24X/24XX是128字为一页。 目前的查错方法一般是使用人工检查,但是人工检查往往费时费力,并且事倍功半,因为即使稍微复杂的系统,程序量也往往会达到上万行、十几万甚至几十万行,人工检查的难度之大可想而知。
技术实现思路
本专利技术提供了和装置,可以自动检查到程序中的页地址错误及无用代码。本专利技术解决其技术问题所采用的技术方案是,包括以下步骤 101,读取并分析汇编源程序Y,得到所述汇编源程序Y使用到的全部变量,再生成所述变量和与其对应的页地址的关系列表A ; 102,将所述汇编源程序Y进行预处理,规范汇编源程序Y,使形成一个易于识别和检查的汇编源程序B ; 103,对所述汇编源程序B进行页切换正确性检查,发现并报告页错误。在优选的实施例中,步骤101中,根据特定芯片的语法及其指令来得到所述关系列表Α。在优选的实施例中,所述关系列表A是所述变量与页地址的多对I格式的列表,即一个页地址对应至少一个变量。4、根据权利要求I所述的程序自动查错方法,其特征在于步骤102中,所述预处理包括步骤 401,读取汇编源程序Y; 402,根据特定芯片语法及其指令对所述汇编源程序Y进行初步编译将汇编源程序Y中的宏进行替代,删除注释、无用伪指令。在优选的实施例中,步骤102中,所述预处理是提取所述汇编源程序Y的纯代码,过滤掉无用信息。在优选的实施例中,步骤102中,所述预处理是编译所述汇编源程序Y的宏指令,建立与原来代码文件的关系列表。在优选的实施例中,步骤103中,以顺序结构和跳转分支结构对所述汇编源程序B进行页切换正确性检查。在优选的实施例中,先以顺序结构对所述汇编源程序B进行页切换正确性检查,再以跳转分支结构对所述汇编源程序B进行页切换正确性检查。在优选的实施例中,所述以顺序结构对所述汇编源程 序B进行页切换正确性检查的方法是 901,从所述汇编源程序B开始处读取一条指令; 902,置首次进入子程序或函数的标记为F ; 903,如果是页切换指令,则当前页指向切换后的页地址,同时清标记F即给F标记赋零值;如果不是页切换指令,则执行步骤904 ; 904,如果是变量存取指令,且该变量记为X,则对照所述关系列表找出对应的页地址;如果有首次进入程序标记F,则设当前的页地址为所述变量X的页地址,同时清标记F ;如果没有首次进入程序标记F,则比较变量X的页地址与当前的页地址,如果不相同则标记此处存在页切换错误,如果相同继续读取下一条指令,执行步骤902的动作;如果不是变量存取指令,执行步骤905 ; 905,如果是跳转指令或子程序及函数调用指令,则记录指令中的跳转标号或子程序及函数入口标号,同时记录当前页地址及跳转发生的位置;如果是子程序及函数调用指令,则在其后构造一个标号;如果是绝对跳转指令或子程序及函数调用指令,则做首次进入程序标记F ;如果不是跳转指令或子程序及函数调用指令或绝对跳转指令,执行步骤906 ; 906,如果不是上述所列的指令,则丢弃,并顺序读取下一条指令,执行步骤902。在优选的实施例中,如果在检查某指令或标号时发现有所述标记F首次出现,则将该指令或标号处作为一个子程序入口记录,并记录所述标号后的首次当前页地址的改变情况作为所述子程序标号后页地址,顺序检查所述子程序或函数,到结束时,再将其当时的当前页地址记录为所述子程序的出口页地址。本专利技术的有益效果是通过本专利技术,可以快速准确地检查出程序中的页地址错误,还可以检查出程序中的无效代码,并且易于实现。节省了人力,保证开发工作的高效进行。本专利技术思想适用范围广,可广泛用于所有数据空间或程序空间存在页或段区分的程序的检错。包括具有页/段特性存储空间的DSP处理器,MCU, MPU等芯片的程序的页地址错误检查。具体实施例方式下面根据具体实施例对本专利技术作进一步地阐述。本专利技术方法主要包括三个步骤首先,读取程序Y,根据特定芯片语法及其指令,找出所述程序Y使用到的全部变量,生成变量与页地址的I对I关系列表。所述关系列表A也是所述变量与页地址的多对I格式的列表,即一个页地址对应至少一个变量。然后,重新读取所述程序Y,对其进行预处理使之易于读取、识别和检查,并保持与所述程序Y的对应关系,生成简化版程序B。例如根据特定芯片语法及其指令对所述程序Y进行初步编译将程序Y中的宏进行替代,删除注释、无用伪指令等规范所述程序Y ;或者提取所述程序Y的纯代码,过滤掉无用信息来规范程序;或者编译所述程序Y的宏指令,建立与原来代码文件的关系列表来规范程序。但不限于此,只要所述程序Y变化后,易于识别即属此要素。最后,对所述程序B进行页切换正确性检查,发现并报告页错误。在上述步骤2中,不一定要集中处理以生成程序B,也可以在检查的过程中分散针对每一条程序指令单独进行优化,只要便于读取、识别和检查就可。所述对程序Y进行页切换正确性检查是按程序设计三种基本结构检查(即顺序结构,条件跳转分支结构和循环结构)。其中循环结构可以看作条件跳转结构,子程序及函数调用也可以看作跳转分支结构来对待(但要在子程序及函数调用结束时取得出口页地址)。所以只采取顺序和条件跳转分支两种结构即可完成对所述程序Y的检查。因此在上述步骤3中,是以顺序结构和跳转分支结构对所述程序(B)进行页切换 正确性检查,并且是先以顺序结构对所述程序B进行页切换正确性检查,再以跳转分支结构对所述程序B进行页切换正确性检查。另外需要说明的一点是为便于处理,宏调用或伪指令在生成程序B之前完成。以顺序结构对所述程序B进行页切换正确性检查的方法是从所述程序B开始处读取程序,以标记F标记首次进入程序,以便在稍后的检查中初始化当前页地址。所述标记F只是为说明检查过程使用的一个标志的代号,是在文件头或绝对跳转及子程序、函数返回指令处置位的,表示其后的代码可能是一个子程序或函数的开始。从所述程序Y中顺序读取一条指令;如果读取的指令是页切换指令,则当前页地址指向切换后的页地址,同时清F标记(即给F标记赋零值);如果不是页切换指令,则要判断是否是变量存取指令。如果是变量存取指令,且该变量记为X,则对照所述关系列表找出对应的页地址;如果有首次进入程序标记F,则设当前的页地址为所述变量X的页地址,同时清标记F ;如果没有首次进入程序标记F,则比较变量X的页地址与当前的页地址,如果不相同则标记此处存在页切换错误,如果相同继续读取下一条指令;如果不是变量存取指令,再判断是否是跳转指令或子程序及函数调用指令。如果是跳转本文档来自技高网...

【技术保护点】
一种程序自动查错方法,包括以下步骤:101,读取并分析汇编源程序Y,得到所述汇编源程序Y使用到的全部变量,再生成所述变量和与其一一对应的页地址的关系列表A;102,将所述汇编源程序Y进行预处理,规范汇编源程序Y,使形成一个易于识别和检查的汇编源程序B;103,对所述汇编源程序B进行页切换正确性检查,发现并报告页错误。

【技术特征摘要】

【专利技术属性】
技术研发人员:徐下兵
申请(专利权)人:徐下兵
类型:发明
国别省市:

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

1