[发明专利]一种高速模拟非目标指令集的系统及方法在审
申请号: | 202210789593.9 | 申请日: | 2022-07-06 |
公开(公告)号: | CN115033288A | 公开(公告)日: | 2022-09-09 |
发明(设计)人: | 黄钟吕 | 申请(专利权)人: | 上海芯竹科技有限公司 |
主分类号: | G06F9/30 | 分类号: | G06F9/30 |
代理公司: | 深圳博敖专利代理事务所(普通合伙) 44884 | 代理人: | 胡智援 |
地址: | 200072 上海市静*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 高速 模拟 目标 指令 系统 方法 | ||
1.一种高速模拟非目标指令集的系统,其特征在于,所述高速模拟非目标指令集的系统包括:
API/ABI自动扫描模块,用于自动扫描系统sdk,为所有可能会调用的API的ABI准备好ABI转换信息;
内核处理模块,用于修改内核所能接受的指令集的程序类型,使得模拟程序集能够顺利载入内存;
指令翻译模块,用于把模拟指令集翻译成目标指令集;
ABI转换模块,负责当模拟程序运行到要跟原生指令交互时,把不同指令集的ABI格式进行转换;
异常处理模块,负责当异常发生并且进行Unwind时,程序能够顺利在不同指令集之间切换。
2.根据权利要求1所述的高速模拟非目标指令集的系统,其特征在于:所述API/ABI自动扫描模块基于LLVM开源代码。
3.根据权利要求1所述的高速模拟非目标指令集的系统,其特征在于:所述指令翻译模块基于QEMU开源代码。
4.一种高速模拟非目标指令集的方法,其特征在于,所述高速模拟非目标指令集的方法包括以下步骤:
S1,首先运行API/ABI自动扫描模块,获得所有程序可调用的API的ABI记录保存;
S2,然后载入内核处理模块,使内核允许载入模拟指令集的程序;
S3,运行模拟指令集的程序,此时由于内核处理模块已经载入,会为模拟指令集的程序载入指令翻译模块、ABI转换模块和异常处理模块;
S4,在模拟指令集程序运行后,指令翻译模块优先获得运行权,此时开始指令翻译工作,完成后开始执行翻译完的指令;
S5,当翻译指令运行到需要调用目标指令集的API时,ABI转换模块会读取S1步骤中生成的ABI转换信息,并且按照ABI转换信息来进行ABI转换,使得目标指令集的API能够被正确调用;
S6,当目标指令集的API需要回调模拟指令集时,由于所有的回调理论上都是通过API注册的,所以只需要在S5中记录有回调的API,为回调地址记录ABI信息,同样由ABI转换模块进行ABI转换处理;
S7,当模拟程序发生异常,需要进行Unwind时,由异常处理模块处理,根据目标指令集和模拟指令集的混合堆栈进行异常Unwind,直到异常得到处理为止。
5.根据权利要求4所述的高速模拟非目标指令集的方法,其特征在于:在S1步骤中,所述获得所有程序可调用的API的ABI记录包括以下步骤:
步骤一,读取SDK头文件,获取API的函数原型;
步骤二,记录函数名称,函数参数数量,函数参数类型,函数返回类型;
步骤三,如果有函数类型的参数,则要继续记录该参数作为函数的函数参数数量,函数参数类型,函数返回类型。
6.根据权利要求4所述的高速模拟非目标指令集的方法,其特征在于:在S4步骤中,所述指令翻译过程由开源软件qemu完成。
7.根据权利要求4所述的高速模拟非目标指令集的方法,其特征在于:在S5和S6步骤中,所述ABI转换包括以下步骤:
步骤一,读取S1步骤中创建的ABI记录;
步骤二,根据要调用的目标地址得到所需函数的名字或者ABI信息;
步骤三,结合步骤一中读取到的ABI信息,根据函数名字查询到函数参数个数、函数参数类型和函数返回类型;
步骤四,根据步骤三中的信息,开始根据ABI信息读取调用者的参数信息,如果在不同指令集的ABI下形态不同的,此时进行调整,并在所有转换工作完成以后,把转换完成后的信息写入被调用者的指令集的参数ABI位置;
步骤五,在当被调用者返回时,根据步骤三中的信息,开始根据ABI信息读取被调用者的返回信息,如果在不同指令集的ABI下形态不同的,此时进行调整,所有转换工作完成以后,把转换完成后的信息写入调用者的指令集的返回值ABI位置。
8.根据权利要求4所述的高速模拟非目标指令集的方法,其特征在于:在S7步骤中,所述异常Unwind具体包括以下步骤:
步骤一,异常发生时,根据堆栈内容,逐层网上寻找已经注册的异常处理函数;
步骤二,如果当前堆栈所属指令集为目标指令集,则直接交给当前层的异常处理函数处理异常;
步骤三,如果当前堆栈所属的指令集为模拟指令集,则由指令模拟程序模拟执行该异常处理函数;
步骤四,这时重复步骤二与步骤三,直到寻找到一个异常处理函数愿意处理该异常为止。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海芯竹科技有限公司,未经上海芯竹科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210789593.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种散热性能良好的网络机柜
- 下一篇:一种矿用自卸车变流驱动控制系统及算法