本文以80C51单片机为目标机,基于X86平台的PC机为宿主机,给出了一种在宿主机上构造虚拟目标机指令执行系统的方法。
1 虚拟指令执行系统简介
本文所述的80C51虚拟指令执行系统是指用软件来模拟80C51指令的执行过程和执行效果,它主要由虚拟指令执行器和虚拟存储器组成。虚拟指令执行器是虚拟指令执行系统的核心模块,它将指令的执行过程分为取指令、分析指令和执行指令三个阶段,模拟这三个阶段的 *** 作并虚拟出指令的执行效果。虚拟存储系统是虚拟指令执行系统必不可少的模块,它反映着虚拟指令执行器执行指令的效果,本文以80C51体系中存储器的结构为依据,虚拟出存储器空间和寄存器,并提供了虚拟指令执行器访问虚拟存储器的接口。
图1是虚拟80C51指令执行系统的总体结构图,同时图1也显示了系统运行的三个基本过程:
(1)加载二进制文件到虚拟存储器的ROM中
(2)虚拟指令执行器周期性地从虚拟存储器的ROM中取指令、分析指令并且执行指令
(3)指令在执行过程中通过读写虚拟存储器中的内存和寄存器来反映指令执行效果
显然,上述过程是围绕着虚拟指令执行器和虚拟存储器进行的。
2 虚拟存储器的设计与实现
加载过程和虚拟指令执行器都依赖于虚拟存储器,因此先介绍虚拟存储器的实现是必要的。从访问的角度分析,寄存器和存储器具有同样的属性,可以使用类似的实现方法虚拟它们。本文虚拟存储器的范围包括虚拟的存储空间和寄存器。
2.1 虚拟80C51存储空间
80C51的存储空间除了有ROM和RAM之分,还有片内和片外之分。80C51指令在执行的时候访问的数据可以存在于以下四种类型的存储单元中:片内ROM,片外ROM,片内RAM,片外RAM,它们的地址空间见表1。
各个存储空间的容量都较小,可以通过开辟相应大小的不同数组来虚拟存储空间:
虚拟存储器除了要虚拟出存储空间,还要提供访问的接口:读存储单元和写存储单元。在读写存储单元时需要指出存储单元的类型。
使用这两个接口,虚拟指令执行器在执行指令时可以方便地访问虚拟存储器。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)