一种生成快速出栈的汇编代码的编译方法及编译器的制造方法

文档序号:6627971阅读:205来源:国知局
一种生成快速出栈的汇编代码的编译方法及编译器的制造方法
【专利摘要】本发明提供一种生成快速出栈的汇编代码的编译器,包括生成中间代码的前端处理模块和最终生成汇编代码的后端处理模块;所述后端处理模块增加:出栈检测模块,用来在前端处理模块生成中间代码后,判断当前程序是否有出栈操作;出栈地址处理单元,用来判断当前出栈地址是否符合C*core所规定的出栈地址要求;若符合,则以此地址作为最终的出栈地址直接输出,否则将堆栈地址通过地址计算单元改写成为符合Ocore对堆栈地址要求的堆栈地址。本发明的优点和积极效果是:要比以前编译器编译出来的汇编指令中出栈指令要少,而在程序的运行过程中,压栈出栈是经常使用的指令;因此处理器所要执行的有效指令的条数要比以前少很多,从而提高了处理器的处理速度和性能。
【专利说明】一种生成快速出栈的汇编代码的编译方法及编译器

【技术领域】
[0001] 本发明涉及处理器体系结构和编译器开发【技术领域】,尤其是涉及一种生成快速出 栈的汇编代码的编译方法及编译器。

【背景技术】
[0002] 随着处理器技术和现代工艺的进步,处理器的运算速度越来越快,性能越来越强, 同时人们对处理器的要求也越来越高。但仅仅依靠工艺的发展来满足人们日益增长对处理 器性能的要求是远远不够的。因此,提高软件编写效率并最终减少有效代码长度变得越来 越重要。
[0003] 在软件应用中,对堆栈的使用是很频繁的,比如函数中的参数值的保存,局部变量 的保存等。现有技术中堆栈的出栈效率不高,极大的影响到了处理器的性能。
[0004] 例如,在含有堆栈指针的情况下,编译器针对C*core架构编译出的出栈指令如 下:
[0005]

【权利要求】
1. 一种生成快速出栈的汇编代码的编译方法,其特征在于包含: 在对源程序进行预处理生成中间代码后,针对中间代码的堆栈操作,判断当前程序是 否有出栈操作,并进行分类标记,同时提取出栈地址并进行保存; 若无出栈操作,输出汇编指令; 若有出栈操作,根据标记对其出栈地址进行分析,判断当前出栈地址是否符合c*c〇re 所规定的堆栈地址要求; 若符合,则以此出栈地址作为最终的出栈地址,输出汇编指令; 否则将出栈地址改写成为符合c*c〇re对堆栈地址要求的出栈地址,输出汇编指令。
2. 根据权利要求1所述的生成快速出栈的汇编代码的编译方法,其特征在于:将出栈 地址改写成为符合C*c〇re对堆栈地址要求的出栈地址的方法是针对出栈地址的属性:字、 半字或者字节来计算出其真正所需要的堆栈地址的基地址,并将其值赋给原来的地址寄存 器。
3. -种生成快速出栈的汇编代码的编译器,包括用于对源程序进行预处理并生成中间 代码的前端处理模块和最终生成汇编代码的后端处理模块;其特征在于:所述后端处理模 块增加: 出栈检测模块,用来在前端处理模块生成中间代码后,判断当前程序是否有出栈操 作; 出栈地址处理单元,用来判断当前出栈地址是否符合C*c〇re所规定的出栈地址要求; 若符合,则以此地址作为最终的出栈地址直接输出,否则将堆栈地址通过地址计算单元改 写成为符合C*c〇re对堆栈地址要求的堆栈地址。
【文档编号】G06F9/45GK104216754SQ201410490577
【公开日】2014年12月17日 申请日期:2014年9月23日 优先权日:2014年9月23日
【发明者】兰光洋, 王忠海, 肖佐楠, 郑茳 申请人:天津国芯科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1