[发明专利]解释执行字节码指令流的方法及装置有效
| 申请号: | 201910818266.X | 申请日: | 2019-08-30 |
| 公开(公告)号: | CN110704108B | 公开(公告)日: | 2020-08-14 |
| 发明(设计)人: | 刘晓建 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
| 主分类号: | G06F9/38 | 分类号: | G06F9/38;G06F9/32 |
| 代理公司: | 北京亿腾知识产权代理事务所(普通合伙) 11309 | 代理人: | 张静娟;周良玉 |
| 地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 解释 执行 字节 指令 方法 装置 | ||
1.一种解释执行字节码指令流的方法,通过虚拟机的解释器执行,包括:
读取第一寄存器中存储的第一值;
当所述第一值为有效值时,将所述第一值存储到第二寄存器中,所述第二寄存器用于存储所述字节码指令流中当前指令对应的当前模拟函数地址;
从存储器获取所述当前指令的下一条指令对应的下一模拟函数地址,并将该下一模拟函数地址存储在所述第一寄存器中,并且,根据从所述第二寄存器中读取的所述当前模拟函数地址,执行所述当前指令。
2.根据权利要求1所述的方法,还包括,当所述第一值不是有效值时,从存储器获取所述当前指令对应的当前模拟函数地址,并将其存储到所述第二寄存器中。
3.根据权利要求1或2所述的方法,其中,从存储器获取所述当前指令的下一条指令对应的下一模拟函数地址,包括:
确定下一条指令对应的操作码;
查询所述存储器中存储的映射表,从而得到所述操作码对应的模拟函数地址。
4.根据权利要求3所述的方法,其中,确定下一条指令对应的操作码包括:
将程序计数器的PC值累加预定字节长度,得到下一条指令的位置编号;
根据该位置编号,查询所述存储器中存储的指令顺序表,得到下一条指令对应的操作码。
5.根据权利要求3所述的方法,其中,确定下一条指令对应的操作码包括:
确定所述当前指令的指令长度;
将程序计数器的PC值累加所述指令长度,得到下一条指令的位置编号;
根据该位置编号,查询所述存储器中存储的指令顺序表,得到下一条指令对应的操作码。
6.根据权利要求4或5所述的方法,其中,所述存储器为高速缓存或内存;
所述查询所述存储器中存储的映射表,和/或,查询所述存储器中存储的指令顺序表,包括:
在高速缓存中进行查询;在不命中的情况下,在内存中进行查询。
7.根据权利要求1或2所述的方法,其中,执行所述当前指令包括:
判断当前指令是否会改变指令流顺序;
如果是,则将所述第一寄存器设为无效值,并执行所述当前指令对应的当前模拟函数;
如果否,直接执行所述当前指令对应的当前模拟函数。
8.根据权利要求1或2所述的方法,其中,在从存储器获取所述当前指令的下一条指令对应的下一模拟函数地址之后,还包括:
根据所述下一模拟函数地址,判断所述下一条指定对应的下一模拟函数是否被加载到高速缓存中;如果没有,则将该下一模拟函数加载到高速缓存中。
9.根据权利要求1所述的方法,其中,所述字节码指令流为智能合约编译后的字节码指令流,所述虚拟机为WASM虚拟机或Solidity虚拟机。
10.一种解释执行字节码指令流的装置,部署在虚拟机的解释器中,包括:
读取单元,配置为读取第一寄存器中存储的第一值;
存储单元,配置为当所述第一值为有效值时,将所述第一值存储到第二寄存器中,所述第二寄存器用于存储所述字节码指令流中当前指令对应的当前模拟函数地址;
预取及执行单元,配置为从存储器获取所述当前指令的下一条指令对应的下一模拟函数地址,并将该下一模拟函数地址存储在所述第一寄存器中,并且,根据从所述第二寄存器中读取的所述当前模拟函数地址,执行所述当前指令。
11.根据权利要求10所述的装置,还包括地址获取单元,配置为,当所述第一值不是有效值时,从存储器获取所述当前指令对应的当前模拟函数地址,并将其存储到所述第二寄存器中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910818266.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:预取器、预取器的运作方法及处理器
- 下一篇:一种椭圆曲线密码协处理器





