通信网--中国通信行业门户网站 | 中国行业网站集群--通信行业电子商务唯一网站 设为首页 | 收藏本站
免费注册 商机无限 商务中心 行业展会 立即发布商机
网站首页 公司库 产品库 商机库 行业资讯 展会信息 招聘信息 招商加盟 下载中心 招标信息
关键词:
热门词汇: IP网络电话   语音识别   手机充电器   手机GPS   3G手机   传输设备   交换设备
  行业要闻 | 通信市场 | 通信技术 | 网络学院 | 5G前沿 | 4G前沿 | VoIP | IPTV | WiMAX | 呼叫中心 | IT制造 | IT就业  
  企业专栏 | 企业报道 | 通信标准 | 通信百科 | 分析预测 | 手机评测 | 增值通信 | 政策法规 | 专家观点 | 网商访谈 | 招标信息 | 物联网
网上展览:
综合厂商 | 手机 | IP电话 | 交换机 | 呼叫中心 | 网络 | 终端 | 电源 | 仪器 | 光纤 | 电缆 | 电脑 | 数码 | 软件 | 其他
中国通信网最新加盟企业: 
当前位置:网站首页 > 行业资讯 > 通信技术
【创心服务 联通你我】青春逢盛世,奋斗正当时
中国通信网 时间:2011-07-05 信息来源:网络
文中以80C51的体系结构和指令系统为基础,设计并实现了虚拟80C51指令执行系统,包括虚拟指令执行器和虚拟存储器。这种设计方法适用于存储空间和指令规模与80C51相似的单片机指令系统,也可根据需要,增加对80C51单片机的虚拟范围。

0 引言

在进行嵌入式系统开发时,通常是在宿主机上通过交叉编译方式生成目标机平台的二进制代码,然后将其写入目标机中运行,这种开发方法的一个缺点是不易调试生成的目标代码逻辑,因此,目前许多交叉编译工具都具有在宿主机上调试源代码的功能。要让目标机平台的二进制代码能够在宿主机上运行,必须提供一个虚拟的能够执行目标机指令的系统。本文以80C51单片机为目标机,基于X86平台的PC机为宿主机,给出了一种在宿主机上构造虚拟目标机指令执行系统的方法。

1 虚拟指令执行系统简介

本文所述的80C51虚拟指令执行系统是指用软件来模拟80C51指令的执行过程和执行效果,它主要由虚拟指令执行器和虚拟存储器组成。虚拟指令执行器是虚拟指令执行系统的核心模块,它将指令的执行过程分为取指令、分析指令和执行指令三个阶段,模拟这三个阶段的操作并虚拟出指令的执行效果。虚拟存储系统是虚拟指令执行系统必不可少的模块,它反映着虚拟指令执行器执行指令的效果,本文以80C51体系中存储器的结构为依据,虚拟出存储器空间和寄存器,并提供了虚拟指令执行器访问虚拟存储器的接口。

图1是虚拟80C51指令执行系统的总体结构图,同时图1也显示了系统运行的三个基本过程:

80C51虚拟指令执行系统的设计与实现

(1)加载二进制文件到虚拟存储器的ROM中
     (2)虚拟指令执行器周期性地从虚拟存储器的ROM中取指令、分析指令并且执行指令
     (3)指令在执行过程中通过读写虚拟存储器中的内存和寄存器来反映指令执行效果

显然,上述过程是围绕着虚拟指令执行器和虚拟存储器进行的。

2 虚拟存储器的设计与实现

加载过程和虚拟指令执行器都依赖于虚拟存储器,因此先介绍虚拟存储器的实现是必要的。从访问的角度分析,寄存器和存储器具有同样的属性,可以使用类似的实现方法虚拟它们。本文虚拟存储器的范围包括虚拟的存储空间和寄存器。

2.1 虚拟80C51存储空间

80C51的存储空间除了有ROM和RAM之分,还有片内和片外之分。80C51指令在执行的时候访问的数据可以存在于以下四种类型的存储单元中:片内ROM,片外ROM,片内RAM,片外RAM,它们的地址空间见表1。

80C51虚拟指令执行系统的设计与实现

各个存储空间的容量都较小,可以通过开辟相应大小的不同数组来虚拟存储空间:

80C51虚拟指令执行系统的设计与实现

虚拟存储器除了要虚拟出存储空间,还要提供访问的接口:读存储单元和写存储单元。在读写存储单元时需要指出存储单元的类型。

80C51虚拟指令执行系统的设计与实现

使用这两个接口,虚拟指令执行器在执行指令时可以方便地访问虚拟存储器。

2.2 虚拟80C51寄存器

80C51的寄存器可以分为三类:特殊寄存器(SFR),工作寄存器(R0~R7),程序计数器(PC),虚拟系统对这三种寄存器有不同的虚拟方式和访问方式。

1)特殊寄存器的虚拟和访问

80C51的特殊寄存器的地址空间范围是0x80~0xFF,每一个特殊寄存器在这个地址空间中有一个确定的地址,从虚拟角度可以认为特殊寄存器和RAM具有类似的访问特点,因此可以使用虚拟存储器的方法来虚拟特殊寄存器:

80C51虚拟指令执行系统的设计与实现

这样,可以使用虚拟存储器提供的读写接口来访问特殊寄存器。

2)工作寄存器的虚拟和访问

不同于特殊寄存器,工作寄存器R0~R7的地址在指令执行过程是不确定的。它们的地址由特殊寄存器PSW中的RS1位和RS0位的值决定,其物理地址占用片内RAM的地址空间,见表2。图2给出了访问工作寄存器Rn的流程。

80C51虚拟指令执行系统的设计与实现

80C51虚拟指令执行系统的设计与实现

3)PC寄存器的虚拟和访问

80C51的程序计数器PC是一个16位寄存器,在指令执行过程中被CPU改变。PC寄存器对用户是透明的,也即PC寄存器没有映射到存储器的地址空间中,不能借助虚拟存储器的读写接口来访问PC,需要单独虚拟一个16位的PC寄存器,并且提供读写的接口:

80C51虚拟指令执行系统的设计与实现

80C51虚拟指令执行系统的设计与实现

3 虚拟指令执行器的设计与实现

一般地,CPU总是不停的取指令、分析指令、执行指令,虚拟指令执行器执行同样的过程,它以模拟上述三个阶段的操作为核心,并模拟出80C51指令系统中每条指令的执行效果。图4给出了虚拟指令执行器的总体设计。

80C51虚拟指令执行系统的设计与实现

可以看出,虚拟指令执行器的工作流程分为三个阶段:取指令阶段、分析指令阶段和执行指令阶段。

3.1 取指令阶段

虚拟的指令执行系统每一周期根据PC的值从虚拟的ROM中取将要执行的指令。在虚拟指令执行器执行指令之前,必须将硬盘上的二进制文件(hex文件格式)加载到虚拟的ROM中,作为指令执行器的输入。装载的过程按照如下描述完成:解析二进制文件的内容,将指令存放在指定的ROM地址处。加载完成后还需要将PC寄存器的值设置为第一条要执行的指令的地址。

虚拟的指令执行系统每次取的指令长度是不确定的。80C51的指令长度不是固定的,分为单字节、双字节和三字节指令三种,因此取一条指令时需要确定该条指令的长度。通过分析80C51的指令表可以得到,任何一条指令第一个字节都是唯一的。利用这个特点,可以建一个该字节到指令长度的映射表。取指令时,先从PC所指地址处取第一个字节,然后通过查询映射表再取相应的字节数。取指成功后需要更新PC值,使PC就指向下条指令的地址。

为了后续两个阶段的使用,需要将取到的指令存放在一个缓冲区中。80C51的最长指令为3个字节,因此可以使用一个3个字节长度的数组存放取到的指令,比如unsigned char inst,将取到的指令按顺序填充到inst中。

3.2 分析指令阶段

一条指令包括操作码和操作数,操作码决定该条指令对操作数执行什么样的动作。分析指令阶段需要从取到的指令中解析出操作码和操作数。解析的过程为,假设指令已经取到inst中,从虚拟指令执行器的角度可以认为指令的第一个字节为操作码,即inst[0],操作数分别存在inst[1]和inst[2]中,根据操作码到指令长度的映射表确定操作数的个数。

解析出指令码和操作数后,就需要根据操作码来调用该指令对应的执行函数。每条指令都有自己的执行动作,可以为每条指令设计一个执行函数来模拟该指令的执行动作。指令操作码和指令执行函数也是一一对应的,所以虚拟系统中会有指令操作码到指令执行函数的映射表,当分析出指令的操作码后,就能快速地调用该指令的执行函数来模拟该指令的语义动作。比如,取到的指令为e580,按照前面所述,0xe5为操作码,存放在inst[0]中,0x80为操作数,存放在inst[1]中,通查指令表可知0xe5对应的汇编指令为MOV A,direct,为这条指令设计一个执行函数mov_a_direct0,虚拟的指令执行系统在执行指令e580时,实际上就是调用其执行函数mov_a_direct 0。

3.3 执行指令阶段

指令的执行动作是通过调用指令的执行函数来完成的。指令的执行函数是对该条指令的实际执行动作的模拟,主要包括对寄存器、内存的访问,以及对程序状态字中标志位的影响等。比如上面介绍的操作码为0xe5的指令,该指令对应的汇编指令为MOV A,direct,其意义为将direct中的内存数存放在寄存器A中,并且改变PSW中的P标志位,该指令的执行函数mov_a_direct 0实际上就是对上面描述的实现。

80C51指令系统共有111条指令,虚拟指令执行器为每条指令都设计一个类似的执行函数。这些指令可以分为几类:数据传送指令、算术运算指令、逻辑运算和移位指令、控制转移指令和位操作指令。在设计执行函数时有一些需要注意的地方:算术运算指令需要注意运算对PSW的标志位的影响,控制转移指令需要精确改变PC寄存器的值等。

4 结束语

本文详细介绍了虚拟80C51指令执行系统的设计与实现,文章给出的方法也适用于存储空间和指令规模与80C51相似的单片机指令系统。虚拟指令执行系统是虚拟目标机其他功能的基础,有广泛的应用,比如可以构造出基于虚拟指令执行系统的目标机代码调试器等。另外根据应用需要,也可增加对80C51单片机的虚拟范围,比如实现对中断和I/O等的虚拟。

相关资讯
· 【创心服务 联通你我】青春逢盛世,奋斗正当时 (2012-01-17)
· 【创心服务 联通你我】青春逢盛世,奋斗正当时 (2012-01-17)
· 【创心服务 联通你我】青春逢盛世,奋斗正当时 (2012-01-16)
· 【创心服务 联通你我】青春逢盛世,奋斗正当时 (2012-01-16)
· 【创心服务 联通你我】青春逢盛世,奋斗正当时 (2012-01-12)
发表评论
昵   称:   匿名发表
验证码: 
 
热门资讯
【创心服务 联通你我】青春逢盛... (2009-09-15)
【创心服务 联通你我】青春逢盛... (2011-04-28)
【创心服务 联通你我】青春逢盛... (2009-09-16)
【创心服务 联通你我】青春逢盛... (2008-07-15)
【创心服务 联通你我】青春逢盛... (2008-05-23)
【创心服务 联通你我】青春逢盛... (2008-07-31)
【创心服务 联通你我】青春逢盛... (2008-07-31)
【创心服务 联通你我】青春逢盛... (2012-01-09)
【创心服务 联通你我】青春逢盛... (2011-01-30)
【创心服务 联通你我】青春逢盛... (2010-05-28)
【创心服务 联通你我】青春逢盛... (2008-07-31)
【创心服务 联通你我】青春逢盛... (2008-07-31)
【创心服务 联通你我】青春逢盛... (2008-07-31)
【创心服务 联通你我】青春逢盛... (2008-07-31)
【创心服务 联通你我】青春逢盛... (2008-07-31)
【创心服务 联通你我】青春逢盛... (2011-02-17)
【创心服务 联通你我】青春逢盛... (2010-08-27)
【创心服务 联通你我】青春逢盛... (2009-08-12)
【创心服务 联通你我】青春逢盛... (2009-08-12)
【创心服务 联通你我】青春逢盛... (2009-10-11)
【创心服务 联通你我】青春逢盛... (2009-07-24)
【创心服务 联通你我】青春逢盛... (2009-08-12)
【创心服务 联通你我】青春逢盛... (2010-07-20)
【创心服务 联通你我】青春逢盛... (2011-05-03)
【创心服务 联通你我】青春逢盛... (2009-08-13)
国之鑫科技 | 泰尔网 | 中华网科技 | 信息产业网 | 通讯世界 | 数字通信世界 | 文传商讯 | 中华英才网 | 电话视频会议 | 凤凰科技 | 呼叫中心 | 新浪科技 | 新传媒网 | 和讯科技 | 中国科技网 | 通信英才网 | 江苏星光发电设备 | 中劳网 | 赛迪网 | MSCBSC移动通信网 | 中国软件网 | 新华网 | 腾讯科技 | 3G通信网 | 千龙网 | 光通信人才招聘网 | 通信人才网 | 中商顾问网
返回首页 | 网站简介 | 企业理念 | 免责声明 | 广告服务 | 代理政策 | 联系我们 | 铭万网 | 中国产品推广联盟
南京国之鑫科技有限公司版权所有©2008-2016 客户服务热线:025-83752991, 客户服务邮箱:gzx@gzxinfo.com
苏ICP备18005078号-1
本站图片及文字仅供功能演示,本站保留对本演示内容及功能的最终解释权

加入铭万联盟中国行业网站集群独家技术供应商