CN110007955A - 一种指令集模拟器译码模块代码的压缩方法 - Google Patents

一种指令集模拟器译码模块代码的压缩方法 Download PDF

Info

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
Application number
CN201910178129.4A
Other languages
English (en)
Other versions
CN110007955B (zh
Inventor
骆华鲲
蔡铭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN201910178129.4A priority Critical patent/CN110007955B/zh
Publication of CN110007955A publication Critical patent/CN110007955A/zh
Application granted granted Critical
Publication of CN110007955B publication Critical patent/CN110007955B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program 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。对所有两两分布的异或结果做或运算,汇总成组内总差异结果。
CN201910178129.4A 2019-03-08 2019-03-08 一种指令集模拟器译码模块代码的压缩方法 Expired - Fee Related CN110007955B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 吉林大学 一种基于四叉树的位仲裁查询树防碰撞方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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