【技术实现步骤摘要】
一种51单片机处理器指令集虚拟化仿真方法
[0001]本专利技术属于虚拟仿真领域,具体涉及一种51单片机处理器指令集虚拟化仿真方法。
技术介绍
[0002]指令集仿真是处理器虚拟化技术最重要的支撑技术,指令集仿真允许特定指令集上的软件运行在另一类异构的指令集上。在指令集层次上实现虚拟化,实际上就是将某个硬件平台上的二进制代码转换为另一个硬件平台上的二进制代码,从而实现不同指令集间的兼容,这一技术也被称为二进制翻译。虚拟化技术实现有2种主要方式:解释执行、动态二进制翻译。
[0003]解释器对源二进制代码逐条进行分析,根据译码结果即指令类型,分解相应的解释例程执行。解释例程在一个由软件维护的源体系结构(包括各种结构寄存器、内存状态等)上用等价的一条或多条目标指令来模拟源指令的执行,获得和源指令同样的执行效果。解释器工作过程主要包括“取指令—>分析指令—>完成指令所需的操作—>修改处理器状态”等步骤,如此循环。如图1所示。
[0004]基于解释执行的仿真器在主机中维护一个精确的处理器数据结构,具有很高的仿真精度,可以实现精确的寄存器、存储器、流水线,除了模拟源程序的功能外,可以得到精确的性能指标,如每条指令在流水线中的时钟周期,堆栈模拟等。
[0005]但是精确的解释执行方案存在仿真效率低下的问题,本专利技术基于解释执行技术方案,提出了快速解释执行的仿真方案,实现仿真效率的提升。
技术实现思路
[0006](一)要解决的技术问题
[ ...
【技术保护点】
【技术特征摘要】
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单片机处理器指令集虚拟化仿真方法,其特征在于,所述步骤
...
【专利技术属性】
技术研发人员:贾张涛,付修锋,勉斌,安恒,李雅斯,刘美佳,孔祥炳,金玉川,安顺,
申请(专利权)人:北京计算机技术及应用研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。