【技术实现步骤摘要】
一种实现高速CPU指令解释器的方法
[0001]本专利技术涉及指令解释器
,尤其涉及一种实现高速CPU指令解释器的方法。
技术介绍
[0002]在计算机发展的历史与过程中,解释器(Interpreter)占有了重要的地位,与编译器(Compiler)形成一个相对应的概念,相比编译器编译出可以直接运行在CPU之上的本地程序,解释器解释运行的程序运行相对较慢,但是解释器也拥有许多编译器编译出的本地程序无法比拟的优势:开发者运行程序时拥有程序的完整控制权,可以在运行中非常方便地检测包括但不限于内存泄漏,堆栈越界,系统调用记录等的问题,此外,解释器不需要编译,写完即运行,同时也不会受到程序运行所在系统平台的安全策略限制,也受到了许多开发者的欢迎,在解释器的实际使用过程中,其运行速度相对较慢,通常与编译器编译的本地程序相比相差了20
‑
700倍不等。
技术实现思路
[0003]本专利技术的目的是解决现有技术中存在的缺点,而提出的一种实现高速CPU指令解释器的方法。
[0004]为了实现上述目的,本专利技术采用了如下技术方案,一种实现高速CPU指令解释器的方法,包括以下步骤:
[0005]S1:运行CPU指令解析模块,解析需要解释执行的二进制文件所有的原始CPU指令得到指令逻辑;
[0006]S2:解释器指令生成模块获取CPU指令解析模块中解析获得的指令逻辑,并且根据该逻辑分解、重组指令,生成专为解释器指令执行模块使用的解释器指令;
[0007]S3:自定义 ...
【技术保护点】
【技术特征摘要】
1.一种实现高速CPU指令解释器的方法,其特征在于,包括以下步骤:S1:运行CPU指令解析模块,解析需要解释执行的二进制文件所有的原始CPU指令得到指令逻辑;S2:解释器指令生成模块获取CPU指令解析模块中解析获得的指令逻辑,并且根据该逻辑分解、重组指令,生成专为解释器指令执行模块使用的解释器指令;S3:自定义动态链接器模块会把需要解释执行的二进制文件映射入待执行的进程的内存空间,绑定或者迟绑定该文件与系统模块的互相调用关系;S4:系统回调入口模块会为每个可能的回调入口准备一块可执行的内存,应对从系统模块回到解释器内部的情况;S5:自定义动态链接器把控制权交给解释器指令执行模块,并根据S2中生成的解释器指令快速执行;S6:当需要解释执行的二进制文件需要调用系统函数时,ABI转换模块负责把该系统函数所需要的所有参数和返回值依照ABI的规范放到指定的内存/寄存器位置。2.根据权利要求1所述的实现高速CPU指令解释器的方法,其特征在于,所述S1中,解析需要解释执行的二进制文件是由开源软件Capstone的核心完成。3.根据权利要求1所述的实现高速CPU指令解释器的方法,其特征在于,所述S2中,所述根据该逻辑分解、重组指令,生成专为解释器指令执行模块使用的解释器指令具体为假定真实CPU指令集中使用的寄存器集合为S,则定义一个该集合的子集C,实现解释器指令的真实CPU指令只用到C中的寄存器,使用该子集可有效减少解释器的解释指令数量,避免解释器体积爆炸式的增长消耗大量内存,每一条解释器指令都被分配到一个数字a。4.根据权利要求1所述的实现高速CPU指令解释器的方法,其特征在于,所述S2中,所述根据该逻辑分解、重组指令,生成专为解释器指令执行模块使用的解释器指令,包括:S201:在真实CPU指令向解释器转换时,保存所有C集合中的寄存器到对应的内存位置;S202:如果当前真实指令中的操作寄存器属于集合S但不属于C,则通过赋值指令把当前真实指令中操作寄存器的值从S集合转移到C集合中任一寄存器;如果当前真实指令中的操作寄存器属于集合C,则通过内存载入指令把S201中保存的C集合的寄存器对应的内存载入到C集合中任一寄存器;S203:解释器中含有使用了限于C集合寄存器中的所有指令,使用解释器执行该指令;S204:如果当前真实指令中的结果寄存器属于集合S但不属于C,则把解释器指令执行的结果寄存器的值,从C集合通过赋值指令转移回原指令中属于S集合的寄存器;如果当前真...
【专利技术属性】
技术研发人员:黄钟吕,
申请(专利权)人:上海芯竹科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。