[发明专利]一种在JavaScript脚本语言中预生成机器码指令的方法和装置有效
申请号: | 201210379940.7 | 申请日: | 2012-10-09 |
公开(公告)号: | CN103077011A | 公开(公告)日: | 2013-05-01 |
发明(设计)人: | 张振龙 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 北京中博世达专利商标代理有限公司 11274 | 代理人: | 申健 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 javascript 脚本语言 生成 机器码 指令 方法 装置 | ||
1.一种在JavaScript脚本语言中预生成机器码的方法,其特征在于,包括:
获取JavaScript脚本的中间代码;所述中间代码通过对JavaScript脚本的源程序解析得到;
从机器码模板中查询与所述中间代码对应的机器码指令的指令总长度,并申请能容纳所述机器码指令的指令存储空间;所述指令存储空间用于保存所述中间代码对应的机器码指令;所述机器码模板包含有所述机器码指令和所述机器码指令的指令总长度;
将所述中间代码对应的机器码指令复制到所述指令存储空间;
根据所述中间代码中的立即数和/或伪寄存器,对与伪寄存器和立即数信息相关的机器码指令进行修改,以便于修改后的机器码指令符合所述中间代码的解析结果;所述与伪寄存器和立即数信息相关的机器码指令,包含在复制到所述指令存储空间的、与所述中间代码对应的机器码指令中;
继续执行上述将所述中间代码对应的机器码模板中的机器码指令复制到所述指令存储空间,以及修改与伪寄存器和立即数信息相关的机器码指令的动作,直至生成所有中间代码对应的机器码指令。
2.根据权利要求1所述的方法,其特征在于,所述机器码模板还包含:需要修改的机器码指令偏移地址,
所述根据所述中间代码中的立即数和/或伪寄存器,对与伪寄存器和立即数信息相关的机器码指令进行更改,具体包括:
根据所述中间代码中的立即数和/或伪寄存器,以及所述当前中间代码对应的机器码模板中的需要修改的机器码指令偏移地址,更改与伪寄存器和立即数信息相关的机器码指令。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述中间代码中的立即数和/或伪寄存器,对与伪寄存器和立即数信息相关的机器码指令进行修改,具体包括:
获取所述中间代码的操作数以及目标寄存器;所述操作数包括伪寄存器或立即数,所述目标寄存器包括伪寄存器;
将所述机器码指令中的伪寄存器修改为所述中间代码的伪寄存器;和/或
将所述机器码指令中的立即数修改为所述中间代码的立即数。
4.根据权利要求1所述的方法,其特征在于,所述机器码模板预先保存在后缀名为.c的文件中。
5.根据权利要求1-4中任意一项所述的方法,其特征在于,所述中间代码包括:ENTER指令、ADD指令和END指令。
6.一种在JavaScript脚本语言中预生成机器码指令的装置,其特征在于,包括:
获取模块,用于获取JavaScript脚本中的中间代码;所述中间代码通过对JavaScript脚本的源程序解析得到;
申请模块,用于从机器码模板中查询与所述中间代码对应的机器码指令的指令总长度,申请能容纳所述机器码指令的指令存储空间;所述指令存储空间用于保存所述中间代码对应的机器码指令;所述机器码模板包含有所述机器码指令和所述机器码指令的指令总长度;
指令复制模块,用于将所述中间代码对应的机器码指令复制到所述指令存储空间;
指令更改模块,用于根据所述中间代码中的立即数和/或伪寄存器,对与伪寄存器和立即数信息相关的机器码指令进行修改,以便于修改后的机器码指令符合所述中间代码的解析结果;所述与伪寄存器和立即数信息相关的机器码指令,包含在复制到所述指令存储空间的、与所述中间代码对应的机器码指令中;
所述指令复制模块还用于继续执行上述将所述中间代码对应的机器码模板中的机器码指令复制到所述指令存储空间,所述指令更改模块还用于在所述申请模块复制所述机器码指令后,继续修改与伪寄存器和立即数信息相关的机器码指令的动作,直至生成所有中间代码对应的机器码指令。
7.根据权利要求6所述的装置,其特征在于,所述机器码模板还包含:需要修改的机器码指令偏移地址,
所述指令更改模块具体用于根据所述当前中间代码,以及所述当前中间代码对应的机器码模板中的需要修改的机器码指令偏移地址,更改与伪寄存器和立即数信息相关的机器码指令。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210379940.7/1.html,转载请声明来源钻瓜专利网。