嵌入式处理器P2020机器码程序到C语言源程序的溯源方法
2021-10-20谢文光李琪马春燕汪克念尹伟张涛
谢文光,李琪,马春燕,*,汪克念,尹伟,张涛
1. 中国民航大学 适航学院 民航航空器适航审定技术重点实验室, 天津 300300
2. 航空工业无线电电子研究所, 上海 200241
3. 西北工业大学 软件学院, 西安 710072
目前,电信、军事以及工业嵌入式应用领域均要求确保机器码程序和C源程序的功能一致性,以防止编译过程中插入非C源程序中要求的例外功能,影响嵌入式系统可靠性和安全性[1]。例如民用飞机机载软件通常采用RTCA/DO-178C作为适航符合性方法。对于A级软件(即安全水平最高的研制保证等级软件)[2],RTCA/DO-178C要求实现机器码程序到源程序的追溯性。
PowerPC P2020[3]处理器在航空嵌入式软件系统和其他嵌入式领域中被广泛应用。C语言应用程序需要在PC平台X86处理器上通过C语言编译器进行编译[4],生成可以在PowerPC P2020处理器上执行的机器码程序。本文以RTCA/DO-178C中的适航要求[5]作为研究的出发点,以PowerPC P2020处理器的机器码程序作为溯源的需求,假设编译器在编译过程中可能会插入例外代码,通过追溯机器码程序和C源程序的溯源关系,降低安全关键软件存在的风险和不稳定因素。
目前溯源方法需要程序员人工分析并建立映射关系,分析难度高、效率低。提升机器码程序和C源程序溯源关系的自动化程度是目前研究的热点之一。Brauer等[6]通过判断机器码和源代码的控制流图是否同构,提出了一种使用抽象解释验证部分机器码和源代码可追溯性分析的技术。Boccardo等[7]利用调用图的大小、函数数量、控制流图的顶点和边的数量4个特性,提出了一种使用人工神经网络来关联源代码和机器码的方法,但是,该方法实现的机器码的溯源关系精确性有待提高。……
