CN110007955A - 一种指令集模拟器译码模块代码的压缩方法 - Google Patents
一种指令集模拟器译码模块代码的压缩方法 Download PDFInfo
- Publication number
- CN110007955A CN110007955A CN201910178129.4A CN201910178129A CN110007955A CN 110007955 A CN110007955 A CN 110007955A CN 201910178129 A CN201910178129 A CN 201910178129A CN 110007955 A CN110007955 A CN 110007955A
- Authority
- CN
- China
- Prior art keywords
- group
- code
- distribution
- instruction set
- operation code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Library & Information Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种指令集模拟器译码模块代码的压缩方法。该方法根据指令集中所有指令操作码的分布情况,将各分布按操作码长度降序排序,并将操作码位置相同的分布划分为同一小组。通过寻找同组分布差异位,循环拆分小组分布和生成公共操作码识别代码的方法,最终实现将操作码位置相同分布压缩至同一译码代码块的效果,从而显著减少模拟器译码模块代码规模。该方法适用于多种类型的指令集,可显著减少模拟器解析指令时的位匹配次数,提高模拟器运行效率,具有较好的应用前景。
Description
技术领域
本发明涉及指令集模拟,尤其涉及一种指令集模拟器译码模块代码的压缩方法。
背景技术
由于指令集模拟器具有摆脱硬件数目限制,运行过程可调试,随时获取设备状态等优点,在硬件仿真、芯片设计等领域都得到了广泛的应用。
指令集模拟器的译码模块通过匹配指令操作码,确定指令类型,并根据指令编码格式,分割提取各特征段信息。实际情况下,由于一个指令集往往包含上百条指令,而译码模块又需要支持所有指令类型的识别,故相关模块代码往往非常庞大,而且极其复杂。此外,模拟器在译码时,通过顺序遍历上述模块代码的方法解析指令内容,故其执行效率与译码模块规模呈负相关,即译码模块的代码块数目越多,指令集模拟器的执行效率越低。因此,找到一种压缩模拟器译码模块代码的方法在实际应用中具有重要价值。
发明内容
本发明的目的在于,针对模拟器译码模块需要支持指令集中所有指令的译码解析,故相关代码规模往往庞大且效率较低的问题,提供了一种指令集模拟器译码模块代码的压缩方法。
本发明的目的是通过以下技术方案来实现的:一种指令集模拟器译码模块代码的压缩方法,具体包括如下步骤:
(1)汇总指令集中所有指令的操作码分布,并按操作码长度对分布作降序排序。将操作码位置相同的分布划分为同一小组,提取当前长度排名第一的小组。
(2)判断当前小组规模,若小组规模大于1,则对同组内的所有操作码分布做两两异或运算,对所有异或结果做或运算,汇总成组内总差异结果,跳转至步骤3。若小组规模为1,则当前小组已无法继续拆分,为当前分布生成相应指令译码代码,跳转至步骤4。
(3)从高至低位遍历总差异结果,寻找第一位为1的位置,将其作为同组拆分节点。根据拆分节点的0、1情况,将原小组拆分成两个新小组。为拆分节点之前的操作码段生成公共操作码识别语句。将拆分节点为1的新小组入栈,提取拆分节点为0的新小组,跳转至步骤2。
(4)提取栈顶新小组,若提取新小组成功,则跳转至步骤2。若提取新小组失败,则说明栈已空,跳转至步骤5。
(5)提取步骤1中当前长度排名第一的小组,若提取成功,则跳转至步骤2。若提取失败,则说明步骤1已无剩余小组,指令集模拟器译码模块代码生成完毕,结束所有步骤。
进一步地,所述步骤1具体为:用字符串记录所有指令的操作码分布,其中指令操作码用0、1确定位表示,其他不确定位用x表示。0、1确定位个数即为指令操作码长度,按该长度对所有指令的操作码分布作降序排序。将操作码位置相同的分布合并至同一小组。
进一步地,所述步骤2中,组内分布做两两异或运算时,由于分布中存在x位,约定两个x位做异或运算时,结果为0。对所有两两分布的异或结果做或运算,汇总成组内总差异结果。
本发明的有益效果是,合并了操作码位置相同指令的译码代码,减少了指令集模拟器译码模块的代码规模,显著提高了模拟器译码阶段的执行效率。
附图说明
图1是本方法流程图。
具体实施方式
(1)汇总指令集中所有指令的操作码分布,并按操作码长度对分布作降序排序。将操作码位置相同的分布划分为同一小组,提取当前长度排名第一的小组;
用字符串记录所有指令的操作码分布,其中指令操作码用0、1确定位表示,其他不确定位用x表示。0、1确定位个数即为指令操作码长度,如字符串“0011xxx01”表示指令操作码长度为4+2=6。按上述长度对所有指令的操作码分布作降序排序,并将操作码位置相同的分布合并至同一小组。如分布“0011xxx01”和分布“0101xxx10”属于同一小组,而分布“001101xxx”则与上述两分布属于不同小组。
(2)判断当前小组规模,若小组规模大于1,则对同组内的所有操作码分布做两两异或运算,对所有异或结果做或运算,汇总成组内总差异结果,跳转至步骤3。若小组规模为1,则当前小组已无法继续拆分,为当前分布生成相应指令译码代码,跳转至步骤4;
组内分布做两两异或运算时,由于分布中存在x位,约定两个x位做异或运算时,结果为0。对所有两两分布的异或结果做或运算,汇总成组内总差异结果。
指令译码代码完成匹配指令操作码,提取指令信息的工作。
(3)从高至低位遍历总差异结果,寻找第一位为1的位置,将其作为同组拆分节点。根据拆分节点的0、1情况,将原小组拆分成两个新小组。为拆分节点之前的操作码段生成公共操作码识别语句。将拆分节点为1的新小组入栈,提取拆分节点为0的新小组,跳转至步骤2。
(4)提取栈顶新小组,若提取新小组成功,则跳转至步骤2。若提取新小组失败,则说明栈已空,跳转至步骤5。
(5)提取步骤1中当前长度排名第一的小组,若提取成功,则跳转至步骤2。若提取失败,则说明步骤1已无剩余小组,指令集模拟器译码模块代码生成完毕,结束所有步骤。
Claims (3)
1.一种指令集模拟器译码模块代码的压缩方法,其特征在于,具体包括如下步骤:
(1)汇总指令集中所有指令的操作码分布,并按操作码长度对分布作降序排序。将操作码位置相同的分布划分为同一小组,提取当前长度排名第一的小组。
(2)判断当前小组规模,若小组规模大于1,则对同组内的所有操作码分布做两两异或运算,对所有异或结果做或运算,汇总成组内总差异结果,跳转至步骤3。若小组规模为1,则当前小组已无法继续拆分,为当前分布生成相应指令译码代码,跳转至步骤4。
(3)从高至低位遍历总差异结果,寻找第一位为1的位置,将其作为同组拆分节点。根据拆分节点的0、1情况,将原小组拆分成两个新小组。为拆分节点之前的操作码段生成公共操作码识别语句。将拆分节点为1的新小组入栈,提取拆分节点为0的新小组,跳转至步骤2。
(4)提取栈顶新小组,若提取新小组成功,则跳转至步骤2。若提取新小组失败,则说明栈已空,跳转至步骤5。
(5)提取步骤1中当前长度排名第一的小组,若提取成功,则跳转至步骤2。若提取失败,则说明步骤1已无剩余小组,指令集模拟器译码模块代码生成完毕,结束所有步骤。
2.根据权利要求1所述的指令集模拟器译码模块代码的压缩方法,其特征是,所述步骤1具体为:用字符串记录所有指令的操作码分布,其中指令操作码用0、1确定位表示,其他不确定位用x表示。0、1确定位个数即为指令操作码长度,按该长度对所有指令的操作码分布作降序排序。将操作码位置相同的分布合并至同一小组。
3.根据权利要求1所述的指令集模拟器译码模块代码的压缩方法,其特征是,所述步骤2中,组内分布做两两异或运算时,由于分布中存在x位,约定两个x位做异或运算时,结果为0。对所有两两分布的异或结果做或运算,汇总成组内总差异结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910178129.4A CN110007955B (zh) | 2019-03-08 | 2019-03-08 | 一种指令集模拟器译码模块代码的压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910178129.4A CN110007955B (zh) | 2019-03-08 | 2019-03-08 | 一种指令集模拟器译码模块代码的压缩方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110007955A true CN110007955A (zh) | 2019-07-12 |
CN110007955B CN110007955B (zh) | 2020-12-15 |
Family
ID=67166692
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910178129.4A Expired - Fee Related CN110007955B (zh) | 2019-03-08 | 2019-03-08 | 一种指令集模拟器译码模块代码的压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110007955B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110572160A (zh) * | 2019-08-01 | 2019-12-13 | 浙江大学 | 一种指令集模拟器译码模块代码的压缩方法 |
CN112416315A (zh) * | 2020-06-16 | 2021-02-26 | 上海哔哩哔哩科技有限公司 | Css代码的压缩方法、电子设备和存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5768567A (en) * | 1996-05-14 | 1998-06-16 | Mentor Graphics Corporation | Optimizing hardware and software co-simulator |
WO2005119439A2 (en) * | 2004-06-01 | 2005-12-15 | The Regents Of The University Of California | Retargetable instruction set simulators |
CN101527615A (zh) * | 2009-04-07 | 2009-09-09 | 华为技术有限公司 | 一种循环冗余校验crc码的实现方法和装置 |
CN102984230A (zh) * | 2012-11-19 | 2013-03-20 | 北京奇虎科技有限公司 | 远程协助中的数据传输装置及方法 |
CN104536810A (zh) * | 2014-12-18 | 2015-04-22 | 北京奇虎科技有限公司 | 一种基于栈的异常检测方法和装置 |
CN107146638A (zh) * | 2016-03-01 | 2017-09-08 | 群联电子股份有限公司 | 译码方法、内存储存装置及内存控制电路单元 |
CN108491741A (zh) * | 2018-03-12 | 2018-09-04 | 吉林大学 | 一种基于四叉树的位仲裁查询树防碰撞方法 |
-
2019
- 2019-03-08 CN CN201910178129.4A patent/CN110007955B/zh not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5768567A (en) * | 1996-05-14 | 1998-06-16 | Mentor Graphics Corporation | Optimizing hardware and software co-simulator |
WO2005119439A2 (en) * | 2004-06-01 | 2005-12-15 | The Regents Of The University Of California | Retargetable instruction set simulators |
CN101527615A (zh) * | 2009-04-07 | 2009-09-09 | 华为技术有限公司 | 一种循环冗余校验crc码的实现方法和装置 |
CN102984230A (zh) * | 2012-11-19 | 2013-03-20 | 北京奇虎科技有限公司 | 远程协助中的数据传输装置及方法 |
CN104536810A (zh) * | 2014-12-18 | 2015-04-22 | 北京奇虎科技有限公司 | 一种基于栈的异常检测方法和装置 |
CN107146638A (zh) * | 2016-03-01 | 2017-09-08 | 群联电子股份有限公司 | 译码方法、内存储存装置及内存控制电路单元 |
CN108491741A (zh) * | 2018-03-12 | 2018-09-04 | 吉林大学 | 一种基于四叉树的位仲裁查询树防碰撞方法 |
Non-Patent Citations (2)
Title |
---|
NICOLAS FOURNEL等: "Automated Generation of Efficient Instruction Decoders for Instruction Set Simulators", 《ICCAD "13: PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON COMPUTER-AIDED DESIGN》 * |
刘晓燕: "一种 RISC 处理器指令集模拟器的设计与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110572160A (zh) * | 2019-08-01 | 2019-12-13 | 浙江大学 | 一种指令集模拟器译码模块代码的压缩方法 |
CN112416315A (zh) * | 2020-06-16 | 2021-02-26 | 上海哔哩哔哩科技有限公司 | Css代码的压缩方法、电子设备和存储介质 |
CN112416315B (zh) * | 2020-06-16 | 2024-05-14 | 上海哔哩哔哩科技有限公司 | Css代码的压缩方法、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110007955B (zh) | 2020-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103955660B (zh) | 一种批量二维码图像识别方法 | |
CN106202172B (zh) | 文本压缩方法及装置 | |
CN101783788A (zh) | 文件压缩、解压缩方法、装置及压缩文件搜索方法、装置 | |
EP3154202B1 (en) | Encoding program, encoding method, encoding device, decoding program, decoding method, and decoding device | |
CN110007955A (zh) | 一种指令集模拟器译码模块代码的压缩方法 | |
CN105243168B (zh) | 一种数据迁移方法及系统 | |
WO2017017738A1 (ja) | 符号化プログラム、符号化装置、及び符号化方法 | |
CN104036187A (zh) | 计算机病毒类型确定方法及其系统 | |
JP6540308B2 (ja) | 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置 | |
CN115630343B (zh) | 一种电子文档信息的处理方法、装置及设备 | |
CN106550268B (zh) | 视频处理方法和视频处理装置 | |
CN103530574B (zh) | 一种基于英文pdf文档的隐藏信息嵌入和提取方法 | |
JP5487985B2 (ja) | 圧縮装置、方法及びプログラム、並びに展開装置、方法及びプログラム | |
US11741121B2 (en) | Computerized data compression and analysis using potentially non-adjacent pairs | |
CN107911570B (zh) | 一种对图片特征进行压缩及解压的方法 | |
CN103729197A (zh) | 一种基于lda模型的多粒度层次软件聚类方法 | |
CN103218349A (zh) | Pmw格式文件中plc指令存储规律的解读及转换方法 | |
CN113378163A (zh) | 基于DEX文件分区特性的Android恶意软件家族分类方法 | |
KR101843087B1 (ko) | 디코딩 장치 및 방법 | |
CN110111852A (zh) | 一种海量dna测序数据无损快速压缩平台 | |
CN101729076B (zh) | 一种基于非完备码表解析码长的哈夫曼解码方法 | |
CN100479331C (zh) | 条码的解码方法 | |
KR20220089211A (ko) | 문자 빈도 기반 서열 재정렬을 통한 fastq 데이터 압축 방법 및 장치 | |
CN110572160A (zh) | 一种指令集模拟器译码模块代码的压缩方法 | |
Nguyen et al. | A proposed approach to compound file fragment identification |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20201215 |