[发明专利]一种实现高速CPU指令解释器的方法在审
申请号: | 202211259577.5 | 申请日: | 2022-10-13 |
公开(公告)号: | CN115509542A | 公开(公告)日: | 2022-12-23 |
发明(设计)人: | 黄钟吕 | 申请(专利权)人: | 上海芯竹科技有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 深圳博敖专利代理事务所(普通合伙) 44884 | 代理人: | 郭永娟 |
地址: | 200072 上海市静*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 高速 cpu 指令 解释 方法 | ||
本发明涉及指令解释器技术领域,具体为一种实现高速CPU指令解释器的方法,包括以下步骤,S1:运行CPU指令解析模块,解析需要解释执行的二进制文件所有的原始CPU指令得到指令逻辑。本发明中,提供的解释器均使用1‑2条真实指令实现解释器指令,而原始的真实指令平均会被分解为3‑4条指令,如果增加常用的真实指令到解释器指令中去,在解释器运行前分析需要解释执行的二进制文件,把真实指令集转换成解释器指令集,在运行时就不需要再次分析真实指令,解释器直接根据运行前的分析结果快速运行,速度很快,把解释器放在真实CPU指令组成的进程中运行,除了需要解释执行的二进制文件外,所有系统库都为真实CPU指令本地运行,进一步加快了整个系统的运行速度。
技术领域
本发明涉及指令解释器技术领域,尤其涉及一种实现高速CPU指令解释器的方法。
背景技术
在计算机发展的历史与过程中,解释器(Interpreter)占有了重要的地位,与编译器(Compiler)形成一个相对应的概念,相比编译器编译出可以直接运行在CPU之上的本地程序,解释器解释运行的程序运行相对较慢,但是解释器也拥有许多编译器编译出的本地程序无法比拟的优势:开发者运行程序时拥有程序的完整控制权,可以在运行中非常方便地检测包括但不限于内存泄漏,堆栈越界,系统调用记录等的问题,此外,解释器不需要编译,写完即运行,同时也不会受到程序运行所在系统平台的安全策略限制,也受到了许多开发者的欢迎,在解释器的实际使用过程中,其运行速度相对较慢,通常与编译器编译的本地程序相比相差了20-700倍不等。
发明内容
本发明的目的是解决现有技术中存在的缺点,而提出的一种实现高速CPU指令解释器的方法。
为了实现上述目的,本发明采用了如下技术方案,一种实现高速CPU指令解释器的方法,包括以下步骤:
S1:运行CPU指令解析模块,解析需要解释执行的二进制文件所有的原始CPU指令得到指令逻辑;
S2:解释器指令生成模块获取CPU指令解析模块中解析获得的指令逻辑,并且根据该逻辑分解、重组指令,生成专为解释器指令执行模块使用的解释器指令;
S3:自定义动态链接器模块会把需要解释执行的二进制文件映射入待执行的进程的内存空间,绑定或者迟绑定该文件与系统模块的互相调用关系;
S4:系统回调入口模块会为每个可能的回调入口准备一块可执行的内存,应对从系统模块回到解释器内部的情况;
S5:自定义动态链接器把控制权交给解释器指令执行模块,并根据S2中生成的解释器指令快速执行;
S6:当需要解释执行的二进制文件需要调用系统函数时,ABI转换模块负责把该系统函数所需要的所有参数和返回值依照ABI的规范放到指定的内存/寄存器位置。
作为本发明的进一步方案,所述S1中,解析需要解释执行的二进制文件是由开源软件Capstone的核心完成。
作为本发明的进一步方案,所述S2中,所述根据该逻辑分解、重组指令,生成专为解释器指令执行模块使用的解释器指令具体为假定真实CPU指令集中使用的寄存器集合为S,则定义一个该集合的子集C,实现解释器指令的真实CPU指令只用到C中的寄存器,使用该子集可有效减少解释器的解释指令数量,避免解释器体积爆炸式的增长消耗大量内存,每一条解释器指令都被分配到一个数字a。
作为本发明的进一步方案,所述S2中,所述根据该逻辑分解、重组指令,生成专为解释器指令执行模块使用的解释器指令,包括:
S201:在真实CPU指令向解释器转换时,保存所有C集合中的寄存器到对应的内存位置;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海芯竹科技有限公司,未经上海芯竹科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211259577.5/2.html,转载请声明来源钻瓜专利网。