【技术实现步骤摘要】
编译器、相关装置和相关方法
[0001]本公开涉及处理器相关
,具体而言,涉及一种编译器、相关装置和相关方法。
技术介绍
[0002]RISC
‑
V架构是基于精简指令集计算(RISC)原理建立的开放指令集架构,由于其具有完全开源、架构简单并可根据具体场景拓展和裁剪指令集等优点,目前已有处理器厂商基于RISC
‑
V架构构建自己的处理器产品,同时应运而生地,需要为RISC
‑
V架构的处理器产品构建配套的编译器,包括构建新的编译器或改进已有的编译器。
[0003]现有的包括RISC
‑
V架构的处理器在内的处理器产品在执行程序时,一个典型场景是程序调用(包括中断),其过程大致如下:发生子程序调用时,处理单元会利用调用现场保存指令将当前状态下处理单元内核内部的调用者保存属性的寄存器值保存至内存中以实现调用现场保存;处理完子程序后,处理单元会利用调用现场恢复指令将内存中需要恢复的数据恢复至处理单元内核内部对应的调用者保存属性的寄存器以实现调用现场恢复。 ...
【技术保护点】
【技术特征摘要】
1.一种编译器,包括:静态编译器,用于对子程序进行静态编译生成所述子程序对应的机器语言代码,将用于保存所述子程序中所使用的调用者保存属性的第一寄存器值的保存指令代码和用于恢复所述第一寄存器值的恢复指令代码插入所述子程序对应的机器语言代码,以生成所述子程序的用于响应调用指令的目标机器语言代码;控制器,用于将所述目标机器语言代码存储在存储器中,使得处理单元在接收到所述调用指令时,中止运行主程序并执行所述目标机器语言代码来响应所述调用指令。2.根据权利要求1所述的编译器,其中,所述编译器还包括动态编译器,所述动态编译器用于对所述主程序进行动态编译;所述控制器还用于在接收到所述调用指令时,控制所述动态编译器中止对所述主程序进行动态编译,使得所述处理单元中止运行所述主程序并执行所述目标机器语言代码来响应所述调用指令,在接收到返回指令时,控制所述动态编译器继续对所述主程序进行动态编译,使得所述处理单元继续运行所述主程序。3.根据权利要求1所述的编译器,其中,所述静态编译器还用于对所述主程序进行静态编译生成所述主程序对应的机器语言代码,其中所述主程序和所述子程序不是同时被编译的;所述控制器还用于将所述主程序对应的机器语言代码存储在所述存储器中,使得所述处理单元在接收到所述调用指令时,中止执行所述主程序对应的机器语言代码并执行所述目标机器语言代码来响应所述调用指令,在接收到返回指令时,继续执行所述主程序对应的机器语言代码。4.根据权利要求1所述的编译器,其中,所述静态编译器包括:静态编译单元,用于对所述子程序进行静态编译,生成所述子程序对应的机器语言代码;控制流分析单元,用于根据编译结果分析所述子程序中的函数调用关系,根据所述函数调用关系确定所述子程序中所使用的调用者保存属性的第一寄存器;指令生成单元,用于生成用于保存所述第一寄存器值的所述保存指令代码和用于恢复所述第一寄存器值的所述恢复指令代码。5.根据权利要求4所述的编译器,其中,所述静态编译器还包括:指令插入单元,用于在所述子程序对应的机器语言代码之前插入所述保存指令代码,在所述子程序对应的机器语言代码之后插入所述恢复指令代码,以生成所述子程序的用于响应调用指令的目标机器语言代码。6.根据权利要求4所述的编译器,其中,所述静态编译器还包括:关键字检测单元,用于检测第一关键字,所述第一关键字用于标识一个程序为子程序,其中,在检测到所述第一关键字的情况下,所述控制流分析单元根据编译结果分析所述子程序中的函数调用关系,根据所述函数调用关系确定所述子程序中所使用的调用者保存属性的第一寄存器。7.一种计算装置,包括:根据权利要求1至6中任一项所述的编译器;存储器,用于存储所述编译器生成的子程序的用于响应调用指令的目标机器语言代
码;处理单元,用于在接收到所述调用指令时,中止运行主程序以执行所述目标机器语言代码,在接收到返回指令时,继续运行所述主程序...
【专利技术属性】
技术研发人员:戎杰杰,陈志星,
申请(专利权)人:阿里巴巴中国有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。