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

发布者:信息巫师最新更新时间:2011-07-20 关键字:80C51  虚拟  指令系统 手机看文章 扫描二维码
随时随地手机看文章
0 引言
    在进行嵌入式系统开发时,通常是在宿主机上通过交叉编译方式生成目标机平台的二进制代码,然后将其写入目标机中运行,这种开发方法的一个缺点是不易调试生成的目标代码逻辑,因此,目前许多交叉编译工具都具有在宿主机上调试源代码的功能。要让目标机平台的二进制代码能够在宿主机上运行,必须提供一个虚拟的能够执行目标机指令的系统。本文以80C51单片机为目标机,基于X86平台的PC机为宿主机,给出了一种在宿主机上构造虚拟目标机指令执行系统的方法。

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

a.JPG


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

2 虚拟存储器的设计与实现
    加载过程和虚拟指令执行器都依赖于虚拟存储器,因此先介绍虚拟存储器的实现是必要的。从访问的角度分析,寄存器和存储器具有同样的属性,可以使用类似的实现方法虚拟它们。本文虚拟存储器的范围包括虚拟的存储空间和寄存器。
2.1 虚拟80C51存储空间
    80C51的存储空间除了有ROM和RAM之分,还有片内和片外之分。80C51指令在执行的时候访问的数据可以存在于以下四种类型的存储单元中:片内ROM,片外ROM,片内RAM,片外RAM,它们的地址空间见表1。

b.JPG[page]


    各个存储空间的容量都较小,可以通过开辟相应大小的不同数组来虚拟存储空间:
  c.JPG
    虚拟存储器除了要虚拟出存储空间,还要提供访问的接口:读存储单元和写存储单元。在读写存储单元时需要指出存储单元的类型。
   d.JPG
    使用这两个接口,虚拟指令执行器在执行指令时可以方便地访问虚拟存储器。
2.2 虚拟80C51寄存器
    80C51的寄存器可以分为三类:特殊寄存器(SFR),工作寄存器(R0~R7),程序计数器(PC),虚拟系统对这三种寄存器有不同的虚拟方式和访问方式。
    1)特殊寄存器的虚拟和访问
    80C51的特殊寄存器的地址空间范围是0x80~0xFF,每一个特殊寄存器在这个地址空间中有一个确定的地址,从虚拟角度可以认为特殊寄存器和RAM具有类似的访问特点,因此可以使用虚拟存储器的方法来虚拟特殊寄存器:
  e.JPG
    这样,可以使用虚拟存储器提供的读写接口来访问特殊寄存器。[page]

 

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

f.JPG

g.JPG


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

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

i.JPG


    可以看出,虚拟指令执行器的工作流程分为三个阶段:取指令阶段、分析指令阶段和执行指令阶段。
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实际上就是对上面描述的实现。
    j.JPG
    k.JPG
    80C51指令系统共有111条指令,虚拟指令执行器为每条指令都设计一个类似的执行函数。这些指令可以分为几类:数据传送指令、算术运算指令、逻辑运算和移位指令、控制转移指令和位操作指令。在设计执行函数时有一些需要注意的地方:算术运算指令需要注意运算对PSW的标志位的影响,控制转移指令需要精确改变PC寄存器的值等。

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

 

 

关键字:80C51  虚拟  指令系统 引用地址:80C51虚拟指令执行系统的设计与实现

上一篇:基于MC8051内核的便携幅频特性测试仪设计
下一篇:基于ADC0809和51单片机的多路数据采集系统设计

推荐阅读最新更新时间:2024-03-16 12:38

要闯虚拟现实市场,科通芯城憋着啥大招
科通芯城(8.95, -0.13, -1.43%, 实时行情)(00400.HK) 旗下国内最大的智能硬件创新创业平台-“硬蛋”,宣布已成立硬蛋实验室,该平台将向创新创业者提供硬件创新信息、供应链需求对接、软件专利及云平台等服务的电子制造业生态系统等服务。 硬蛋实验室在今年将涉足虚拟现实领域,进一步解决目前行业内数据采集、内容创作以及硬件本身的技术瓶颈。此外,硬蛋团队会密切关注机器人与人工智能的结合,未来将持续投入精力,攻克人工智能交互方面的技术难题。在智能汽车领域,硬蛋团队也会进一步接洽在以色列的合作伙伴,推进技术合作。
[嵌入式]
51单片机教程:单片机寻址方式与指令系统
通过前面的学习,我们已经了解了单片机内部的结构,并且也已经知道,要控制单片机,让它为我们干学,要用指令,我们已学了几条指令,但很零散,从现在开始,我们将要系统地学习8051单片机的指令部份。 一、概述 1、指令的格式 我们已知,要让计算机做事,就得给计算机以指令,并且我们已知,计算机很“笨”,只能懂得数字,如前面我们写进机器的75H,90H,00H等等,所以指令的第一种格式就是机器码格式,也说是数字的形式。但这种形式实在是为难我们人了,太难记了,于是有另一种格式,助记符格式,如MOV P1,#0FFH,这样就好记了。 这两种格式之间的关系呢,我们不难理解,本质上它们完全等价,只是形式不一样而已。 2、汇编 我们写指令使用
[单片机]
80c51单片机的控制总线信号有哪些 80c51单片机特点
  80c51单片机的控制总线信号有哪些   80C51单片机的控制总线信号包括以下几种:   ALE(Address Latch Enable)地址锁存使能信号:当CPU向外部总线发出地址时,ALE信号会使地址锁存器(Latch)中的地址保持稳定,供外设使用。   PSEN(Program Store Enable)程序存储器使能信号:当CPU要从程序存储器中读取指令时,PSEN信号会使程序存储器选择器(Program Memory Selector)选择程序存储器。   RD(Read)读信号:当CPU从外部读取数据时,RD信号会通知外设将数据准备好。   WR(Write)写信号:当CPU向外部写入数据时,WR信号会通知外设
[单片机]
山东7部门印发“虚拟现实”行动计划,布局芯片设计
3月21日,山东省工业和信息化厅、山东省发展和改革委员会等7部门印发《山东省推动虚拟现实产业高质量发展三年行动计划(2022-2024年)》(以下简称《行动计划》),提出“努力打造国内一流、具有国际竞争力的千亿级虚拟现实产业高地”。 《行动计划》主要分发展现状、总体要求、产业布局、重点任务和保障措施等五部分。 产业布局 青岛。打造全球领先的虚拟现实研发高地。充分发挥歌尔全球研发中心创新引领作用,加快创建国家虚拟现实制造业创新中心。依托北京航空航天大学、北京理工大学等高校,以及虚拟现实技术国家级重点实验室,重点围绕近眼显示、感知交互、空间定位、人机协同、开发平台、渲染处理等核心技术开展研究,建立虚拟现实关键技术领域的龙头地位,加快
[手机便携]
基于FPGA的USB2.0虚拟逻辑分析仪
  引言   传统的逻辑分析仪体积庞大、价格昂贵、通道数目有限,并且在数据采集、传输、存储、显示等方面存在诸多限制,在很大程度上影响了其在实际中的应用。选用高性能的FPGA芯片进行数据处理,充分利用PC的强大处理功能,配合LabView图形化语言开发的虚拟逻辑分析仪,其数据处理和传输速率大大提高,适用性极大增强,其显示、操作界面和低廉的成本较之传统的逻辑分析仪具有极大的优势和发展前景。   工作原理   本设计选用Altera公司的Cyclone系列FPGA器件EP1C3进行数据采集和处理,外接SRAM,用于数据的存储。系统通过高性能的PIC单片机PIC18F6620完成与PC的通信,接收PC发出的触发、配置信息并控制系统将
[测试测量]
全球VR专利现况完全剖析 虚拟现实医疗应用有机可乘
     虚拟实境(VR)在2016年成为市场火热话题,吸引各家厂商积极投入布局。目前VR专利多掌握在美国和日本企业手上;而应用则以运算科技与游戏为主。值得注意的是,VR医疗应用潜力可期且目前投入者较少,有机会成为群雄竞逐的新战场。 虚拟实境是透过电脑科技建构出一个三度空间虚拟世界,并藉由人机介面让使用者进入虚拟世界中,就如同身处在真实世界一般。虚拟实境应用广泛,举凡:游戏娱乐、飞航训练、作战训练、手术训练等。   什么是虚拟实境?虚拟实境主要类型有那些?虚拟实境专利所属国家别分布如何?专利所属领域别以及行业别分布又是如何?重要技术与应用项目又有那些?   融合AI/云端运算技术 VR提供真实临场感   虚拟实境(Vir
[手机便携]
虚拟仿真技术在电子行业中的应用
电子行业是一个飞速发展的行业,市场容量极其巨大,现如今我国已是全球第三大电子信息产品制造国,电子信息产品已经渗透到我们生活的各个角落,包括国防军工用品、通信、医疗、计算机及周边视听产品、玩具等。随着社会的发展和技术的进步,人们对电子相关行业提出了更高的要求:精确、稳定、轻巧、保密、可靠;同时,电子行业又具有产品更新快,研发周期短的特点,为了满足不断发展的市场需求,加快产品结构的升级,在核心技术领域取得重大突破,电子行业必须采用新的研究方法和技术。虚拟仿真研究是目前电子行业所广泛采用的一种新的方法和技术。   MSC.Software公司作为全球最大的CAE产品供应商,不仅为电子行业提供了多方位的虚拟仿真软件,同时MSC.Softwa
[模拟电子]
<font color='red'>虚拟</font>仿真技术在电子行业中的应用
微型虚拟示波器的设计与实现
  接触USB总线已经有5年左右的时间了,刚接触USB时就采用了周立功代理的芯片——PDIUSBD12,该芯片为USB设备控制器,可以实现批量12Mbps的数据传输率。采用该芯片我设计了一些数据采集系统以及信号发生系统,主要应用于虚拟测试。这里我想总结一下我以前设计实现的微型虚拟示波器,并对示波器的关键技术作一下简单总结。   实物展示   微型虚拟示波器一共设计了三版,下图是一个稳定版本。总的来说体积还是相当小的,技术指标也还可以,能和一台普通20MHz带宽的模拟示波器相媲美。   上图所示的板子为示波器的核心部分,还需要前向通道电路,实现阻抗匹配、信号衰减以及程控放大。上位机的测控软件基于Labview平台,软件界面如
[测试测量]
微型<font color='red'>虚拟</font>示波器的设计与实现
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved