摘要:文中以80C51的体系结构和指令系统为基础,设计并实现了虚拟80C51指令执行系统,包括虚拟指令执行器和虚拟存储器。这种设计方法适用于存储空间和指令规模与80C51相似的单片机指令系统,也可根据需要,增加对80C51单片机的虚拟范围。
关键字:80C51;虚拟;指令系统
0 引言
在进行嵌入式系统开发时,通常是在宿主机上通过交叉编译方式生成目标机平台的二进制代码,然后将其写入目标机中运行,这种开发方法的一个缺点是不易调试生成的目标代码逻辑,因此,目前许多交叉编译工具都具有在宿主机上调试源代码的功能。要让目标机平台的二进制代码能够在宿主机上运行,必须提供一个虚拟的能够执行目标机指令的系统。本文以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。