【技术实现步骤摘要】
具有指令签名支持的分布式编译处理
本申请涉及用于向编译器提供指令签名支持(instruction signature support) 的编译模块,更具体地,涉及在高级语言源代码的编译处理期间处理指令签名相关的信息。
技术介绍
可编程计算单元通常被设计为处理指令序列,以执行特定任务。指令序列也可称 为程序代码。程序代码通常存储在存储器中,并在运行时被提供至计算单元。鉴于信息安 全,可能期望在指令存储于存储器中或从存储器传输至计算单元时保护指令不被分析。另 一方面,如果到达计算单元的指令不同于所需的指令,则可能会在程序代码执行期间发生 错误。由计算单元实际处理的指令和所需指令之间的差异可能有随机的原因,或可能由入 侵者故意引起。在任何情况下,都应及早检测到由改变的指令所造成的错误。控制流检查方法可用于检测由计算单元实际处理的指令和所需指令之间的这种 差异。基于指令签名的控制流检查方法的基本原则是在程序运行期间在校验和(即,签名) 中计算程序运行时所执行的指令总数,并在预定的程序点验证该校验和是否匹配参考值。 校验和与参考值之间的差表明实际程序执行和预计程序执行之间的可能偏差。当创建或编译支持控制流检查的程序时,最常见的控制流检测方法需要所谓的更 新值插入程序中的特定点。例如,如果程序跳变或分支点发生,且两个不同的路径(在不同 指令序列被执行进而导致不同签名的意义上不同)再次合并,由路径执行产生的签名需要 在合并点处是一致的。为此,更新的值插入至少一个路径。分支发生在条件(直接)跳变、间 接跳变、直接和间接函数调用处。此外,在执行将运行期间计算的签名和参考值进 ...
【技术保护点】
一种用于对编译器提供指令签名支持的编译模块,所述编译模块包括:语言结构识别器,被配置为在供应至所述编译器的高级语言源代码中识别指令签名相关的语言结构;以及占位符插入组件,被配置为与所述编译器交互,从而将基于所述指令签名相关的语言结构的至少一个指令签名相关的占位符插入由所述编译器基于所述高级语言源代码所处理的编译代码中。
【技术特征摘要】
2011.07.15 US 13/184,1351.一种用于对编译器提供指令签名支持的编译模块,所述编译模块包括 语言结构识别器,被配置为在供应至所述编译器的高级语言源代码中识别指令签名相关的语言结构;以及 占位符插入组件,被配置为与所述编译器交互,从而将基于所述指令签名相关的语言结构的至少一个指令签名相关的占位符插入由所述编译器基于所述高级语言源代码所处理的编译代码中。2.根据权利要求1所述的编译模块,其中,所述签名相关的占位符的所述插入保留了给予所述编译器的原始的所述高级语言代码的逻辑功能。3.根据权利要求1所述的编译模块,还包括数据库接口,被配置为查询包括由所述语言结构识别器和所述占位符插入组件使用的多个可能的指令签名相关的语言结构和相应的指令签名相关的占位符的数据库。4.根据权利要求3所述的编译模块,其中,多个所述可能的指令签名相关的语言结构包括以下各项中的至少一个条件跳变、if-then结构、switch_case结构、while-loop结构、do-while结构和专用指令签名相关的关键字。5.根据权利要求3所述的编译模块,其中,所述数据库还包括至少一个插入规则,用于控制所述占位符插入组件关于所述至少一个指令签名相关的占位符的所述插入。6.根据权利要求1所述的编译模块,其中,所述编译代码是机器语言代码,且其中所述占位符插入组件被配置为选择所述至少一个指令签名相关的占位符,使得所述至少一个指令签名相关的占位符的大小等于在所述编译代码中最终取代所述至少一个指令签名相关的占位符的机器语言指令序列或机器语言指令的大小。7.根据权利要求1所述的编译模块,其中,所述至少一个指令签名相关的占位符是以下各项之一用于参考签名值的占位符、用于签名更新值的占位符、以及用于指令签名相关的指令的占位符。8.根据权利要求1所述的编译模块,还包括占位符信息收集器,被配置为收集有关插入所述编译代码中的指令签名相关的占位符的占位符信息并输出所述占位符信息。9.根据权利要求1所述的编译模块,其中,所述语言结构识别器被配置为识别对其使能所述指令签名支持的受保护的程序代码段,且其中,所述编译模块还包括库调用信息收集器,所述库调用信息收集器被配置为收集与在所述受保护的程序代码段中发生的软件库调用相关的库调用信息,并提供所述库调用信息用于随后的连接处理使用。10.根据权利要求1所述的编译模块,其中,所述语言结构识别器被配置为在对其使能所述指令签名支持的所述高级语言源代码中识别受保护的程序代码段的开始和结束,且其中,所述占位符插入组件被配置为使用相应的受保护段识别的结果,以便激活在所述受保护的程序代码段中插入所述至少一个指令签名相关的占位符,并禁用在非受保护的程序代码段中插入所述至少一个指令签名相关的占位符。11.根据权利要求1所述的编译模块,其中,所述占位符插入组件进一步被配置为验证所述编译器的代码优化是否与所述至少一个指令签名相关的占位符冲突,且在验证到冲突时,阻止所述编译器执行影响所述至少一个指令签名相关的占位符的所述编译代码的优化。12.一种指令签名生成器,包括用于编译代码的输入; 占位符识别器,被配置为在所述编译代码中识别指令签名相关的占位符; 签名计算器,被配置为针对在所述编译代码中发生所述指令签名相关的占位符的程序点确定签名值;以及 占位符替换器,被配置为基于所述程序点处的所述签名值插入编译代码段。13.根据权利要求12所述的指令签名生成器,其中,所述编译代码是机器语言代码和汇编代码之一。14.根据权利要求12所述的指令签名生成器,其中,由所述占位符替换器产生的所述编译代码段在所述编译代码中占用的空间等于所述指令签名相关的占位符所占用的空间。15.根据权利要求12所述的指令签名生成器,其中,所述编译代码段包括处理器指令,其中,所述占位符替换器被配置为从多个处理器指令中选择特定的处理器指令,并在所述特定的处理器指令的基础上产生所述编译代码段。16.根据权利...
【专利技术属性】
技术研发人员:于尔根·迪维,奔迪特·加梅尔,斯特凡·曼格德,
申请(专利权)人:英飞凌科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。