一种51单片机处理器指令集虚拟化仿真方法技术

技术编号:35830181 阅读:15 留言:0更新日期:2022-12-03 13:58
本发明专利技术涉及一种51单片机处理器指令集虚拟化仿真方法,属于虚拟仿真领域。本发明专利技术通过对256条指令的仿真,提供51单片机嵌入式处理器软件的运行环境,为51单片机嵌入式处理器软件的开发提供支撑。本发明专利技术提出的方案,能够实现51单片机处理器的指令集仿真,仿真精度高,仿真执行效率高;本发明专利技术采用数组、链表等实现寄存器、内存的仿真,能够完成仿真51单片机处理器。理器。

【技术实现步骤摘要】
一种51单片机处理器指令集虚拟化仿真方法


[0001]本专利技术属于虚拟仿真领域,具体涉及一种51单片机处理器指令集虚拟化仿真方法。

技术介绍

[0002]指令集仿真是处理器虚拟化技术最重要的支撑技术,指令集仿真允许特定指令集上的软件运行在另一类异构的指令集上。在指令集层次上实现虚拟化,实际上就是将某个硬件平台上的二进制代码转换为另一个硬件平台上的二进制代码,从而实现不同指令集间的兼容,这一技术也被称为二进制翻译。虚拟化技术实现有2种主要方式:解释执行、动态二进制翻译。
[0003]解释器对源二进制代码逐条进行分析,根据译码结果即指令类型,分解相应的解释例程执行。解释例程在一个由软件维护的源体系结构(包括各种结构寄存器、内存状态等)上用等价的一条或多条目标指令来模拟源指令的执行,获得和源指令同样的执行效果。解释器工作过程主要包括“取指令—>分析指令—>完成指令所需的操作—>修改处理器状态”等步骤,如此循环。如图1所示。
[0004]基于解释执行的仿真器在主机中维护一个精确的处理器数据结构,具有很高的仿真精度,可以实现精确的寄存器、存储器、流水线,除了模拟源程序的功能外,可以得到精确的性能指标,如每条指令在流水线中的时钟周期,堆栈模拟等。
[0005]但是精确的解释执行方案存在仿真效率低下的问题,本专利技术基于解释执行技术方案,提出了快速解释执行的仿真方案,实现仿真效率的提升。

技术实现思路

[0006](一)要解决的技术问题
[0007]本专利技术要解决的技术问题是如何提供一种51单片机处理器指令集虚拟化仿真方法,以解决精确的解释执行方案存在仿真效率低下的问题。
[0008](二)技术方案
[0009]为了解决上述技术问题,本专利技术提出一种51单片机处理器指令集虚拟化仿真方法,该方法包括如下步骤:
[0010]S1、51单片机目标文件解析
[0011]打开51单片机编译后的可执行文件*.Hex,Hex文件的每一行中都包含了一个hex记录,这些记录是由一些代表机器语言代码和常量的16进制数据组成;解析Hex文件信息,获取可执行文件中的代码段;
[0012]S2、51单片机内存仿真及代码加载
[0013]采用数组的方式对51单片机内存进行仿真,记为C51

Vmemory,并加载代码段;
[0014]S3、51单片机寄存器仿真
[0015]通过数组模拟寄存器,通过数组操作模拟寄存器读写操作,实现寄存器的模拟;
[0016]S4、51单片机指令描述
[0017]每条指令Instruction有一个唯一的表示,51单片机指令长度非固定长度,共计256条;
[0018]S5、51单片机读取指令
[0019]根据程序计数器PC(Program Count)的值,从51单片机仿真内存C51

Vmemory中读取指令Instruction,获取当前PC对应的指令Instruction;
[0020]S6、51单片机指令译码
[0021]根据读取的指令Instruction,取Instruction的高8位,该字段为指令的指令码Opcode,每个数值对应一条指令;
[0022]S7、51单片机指令翻译
[0023]对51单片机指令集进行功能翻译,并对每条指令的进行操作模拟,保证运行的内存、寄存器保持一致;并将每个指令对应的函数名称存储到指令翻译译码数组中,存储顺序与指令译码数组顺序保持一致;
[0024]S8、51单片机指令执行
[0025]根据指令数量,进行循环取指、译码、指令翻译,并根据函数指针,执行指令操作;连续仿真,直到完成所有指令执行,实现针对51单片机的处理器指令集仿真。
[0026]进一步地,所述步骤S1具体包括:
[0027]S11、打开51单片机编译后的可执行文件*.Hex,读取文件信息;
[0028]S12、Hex文件的每一行中都包含了一个hex记录,这些记录是由一些代表机器语言代码和常量的16进制数据组成。解析可执行文件*.Hex中的文件信息,获取可执行文件中的代码段。
[0029]进一步地,所述步骤S2具体包括:
[0030]S21、51单片机RAM大小为256Byte、ROM大小为64K Byte、XDATA大小为64KByte,采用数组的方式对51单片机内存进行仿真,记为C51

Vmemory,包括RAM[256]、ROM[65536]和XDATA[65536],RAM[256]对应256Byte内存块大小,包含寄存器,ROM[65536]对应64KByte内存块大小,XDATA[65536]对应64KByte内存块大小;
[0031]S22、将S1获取的代码段,写入到51单片机芯片仿真内存C51

Vmemory中,并根据代码段的大小,维护整个仿真内存结构。
[0032]进一步地,所述步骤S3具体包括:
[0033]S31、51单片机芯片RAM中包含256个可用寄存器,通过C51

Vmemory中的RAM描述51单片机的256个寄存器,实现寄存器的模拟;
[0034]S32、通过访问C51

Vmemory中的RAM数组,对相应的寄存器进行操作模拟51单片机的寄存器操作,实现对51单片机的寄存器仿真。
[0035]进一步地,所述寄存器包括:B、ACC、PSW、TH2*、TL2*、RCAP2H*、RCAP2L*、T2CON*、IP、P3、IE、P2、SBUF、SCON、P1、TH1、TH0、TL1、TL0、TMOD、TCON、DPH、DPL、SP、P0和PCON。
[0036]进一步地,所述步骤S5具体包括:根据程序计数器PC(Program Count)的值,从S2维护的C51

Vmemory中ROM[65536]数组中读取指令Instruction。
[0037]进一步地,所述步骤S4中,指令编码为0x00~0xFF,所述步骤S6中,Opcode取值范围为0~0xFF之间。
[0038]进一步地,所述步骤S7具体包括:
[0039]S71、对51单片机指令集进行功能翻译,并对相应的地址、寄存器进行操作模拟,保证硬件处理器和虚拟仿真处理器的内存、寄存器保持一致;
[0040]S72、定义翻译函数描述结构体Instruction

desc

to

exec,实现指令码与指令翻译函数之间的关联;
[0041]S73、翻译51单片机的256条指令,并将函数指针存储到Instruction

desc

to

exec C51InstructionInterp本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种51单片机处理器指令集虚拟化仿真方法,其特征在于,该方法包括如下步骤:S1、51单片机目标文件解析打开51单片机编译后的可执行文件*.Hex,Hex文件的每一行中都包含了一个hex记录,这些记录是由一些代表机器语言代码和常量的16进制数据组成;解析Hex文件信息,获取可执行文件中的代码段;S2、51单片机内存仿真及代码加载采用数组的方式对51单片机内存进行仿真,记为C51

Vmemory,并加载代码段;S3、51单片机寄存器仿真通过数组模拟寄存器,通过数组操作模拟寄存器读写操作,实现寄存器的模拟;S4、51单片机指令描述每条指令Instruction有一个唯一的表示,51单片机指令长度非固定长度,共计256条;S5、51单片机读取指令根据程序计数器PC(Program Count)的值,从51单片机仿真内存C51

Vmemory中读取指令Instruction,获取当前PC对应的指令Instruction;S6、51单片机指令译码根据读取的指令Instruction,取Instruction的高8位,该字段为指令的指令码Opcode,每个数值对应一条指令;S7、51单片机指令翻译对51单片机指令集进行功能翻译,并对每条指令的进行操作模拟,保证运行的内存、寄存器保持一致;并将每个指令对应的函数名称存储到指令翻译译码数组中,存储顺序与指令译码数组顺序保持一致;S8、51单片机指令执行根据指令数量,进行循环取指、译码、指令翻译,并根据函数指针,执行指令操作;连续仿真,直到完成所有指令执行,实现针对51单片机的处理器指令集仿真。2.如权利要求1所述的51单片机处理器指令集虚拟化仿真方法,其特征在于,所述步骤S1具体包括:S11、打开51单片机编译后的可执行文件*.Hex,读取文件信息;S12、Hex文件的每一行中都包含了一个hex记录,这些记录是由一些代表机器语言代码和常量的16进制数据组成。解析可执行文件*.Hex中的文件信息,获取可执行文件中的代码段。3.如权利要求2所述的51单片机处理器指令集虚拟化仿真方法,其特征在于,所述步骤S2具体包括:S21、51单片机RAM大小为256Byte、ROM大小为64K Byte、XDATA大小为64K Byte,采用数组的方式对51单片机内存进行仿真,记为C51

Vmemory,包括RAM[256]、ROM[65536]和XDATA[65536],RAM[256]对应256Byte内存块大小,包含寄存器,ROM[65536]对应64K Byte内存块大小,XDATA[65536]对应64K Byte内存块大小;S22、将S1获取的代码段,写入到51单片机芯片仿真内存C51

Vmemory中,并根据代码段的大小,维护整个仿真内存结构。4.如权利要求3所述的51单片机处理器指令集虚拟化仿真方法,其特征在于,所述步骤
...

【专利技术属性】
技术研发人员:贾张涛付修锋勉斌安恒李雅斯刘美佳孔祥炳金玉川安顺
申请(专利权)人:北京计算机技术及应用研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1