[发明专利]指令转换方法和装置有效
申请号: | 201710813786.2 | 申请日: | 2017-09-11 |
公开(公告)号: | CN109491659B | 公开(公告)日: | 2022-06-21 |
发明(设计)人: | 张利霞;余银 | 申请(专利权)人: | 龙芯中科技术股份有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 北京润泽恒知识产权代理有限公司 11319 | 代理人: | 莎日娜 |
地址: | 100095 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 指令 转换 方法 装置 | ||
本发明实施例提供了一种指令转换方法,包括:获取底层虚拟机LLVM编译器中间代码的算数指令;确定所述LLVM编译器中间代码的算数指令的操作数和操作码;确定目标平台的系统位数;在所述目标平台的指令集中,确定与所述LLVM编译器中间代码的算数指令操作码以及所述系统位数对应的目标操作码;采用所述操作数以及目标操作码,生成目标平台的算数指令。在本发明实施例中,LLVM编译器在将中间代码的算数指令转换为目标平台的算数指令时,可以根据目标平台的系统位数,生成与目标系统的系统位数匹配的算数指令。
技术领域
本发明涉及计算机技术领域,特别是涉及一种指令转换方法和一种指令转换装置。
背景技术
LLVM(Low Level Virtual Machine,底层虚拟机)编译器是一种可以将高级语言代码,转换为目标平台代码的编译器。LLVM编译器首先将高级语言代码转换为LLVM的中间语言指令IR,然后再将中间指令转换为目标平台代码。
LLVM编译器的中间语言指令IR,需要经过SelectionDAG节点选择器转换为带有的SelectionDAG节点的指令。ISD命令空间包括一个记录所有SelectionDAG节点类型和值类型的枚举列表,其中的SelectionDAG节点包括:多精度加减法指令ADDC,SUBC,ADDE,SUBE。
现有技术中只实现了将多精度加减法指令ADDC,SUBC,ADDE,SUBE,转换为32位的MIPS平台上的指令的转换操作,未实现64位MIPS平台的转换操作。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种指令转换方法和相应的一种指令转换装置。
为了解决上述问题,本发明实施例公开了一种指令转换方法,包括:
获取底层虚拟机LLVM编译器中间代码的算数指令;
确定所述LLVM编译器中间代码的算数指令的操作数和操作码;
确定目标平台的系统位数;
在所述目标平台的指令集中,确定与所述LLVM编译器中间代码的算数指令操作码以及所述系统位数对应的目标操作码;
采用所述操作数以及目标操作码,生成目标平台的算数指令。
优选的,所述目标平台为MIPS平台,所述算数指令包括:ADDC加法指令和SUBC减法指令;所述ADDC加法指令的操作码为ADDC操作码;所述SUBC减法指令的操作码为SUBC操作码;
所述在所述目标平台的目标指令集中,确定与所述LLVM编译器中间代码的算数指令的操作码对应的目标操作码的步骤包括:
若所述算数指令为ADDC加法指令,目标平台的系统位数为64位,且ADDC加法指令的操作数不包含立即数,则确定与所述ADDC操作码对应的加法操作码DADDu;
若所述算数指令为SUBC减法指令,目标平台的系统位数为64位,且SUBC减法指令的操作数不包含立即数,则确定与所述SUBC操作码对应的减法操作码DSUBu;
若所述算数指令为ADDC加法指令,目标平台的系统位数为64位,且ADDC加法指令的操作数包含立即数,则确定与所述ADDC操作码对应的加法操作码DADDiu;
若所述算数指令为SUBC减法指令,目标平台的系统位数为64位,且SUBC减法指令的操作数包含立即数,则确定与所述SUBC操作码对应的减法操作码DSUBiu。
优选的,所述ADDC加法指令和所述SUBC减法指令的操作数包括:第一操作数和第二操作数;所述采用所述操作数以及目标操作码,生成目标平台的算数指令的步骤包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于龙芯中科技术股份有限公司,未经龙芯中科技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710813786.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:计算机可执行代码数据的生成方法及装置
- 下一篇:一种机车事件数据动态解析方法