免费论文查重: 大雅 万方 维普 turnitin paperpass

对于嵌入式FORTH虚拟计算机实现

最后更新时间:2024-01-24 作者:用户投稿原创标记本站原创 点赞:18130 浏览:81038
论文导读:扩展性强,尤其适合应用于对安全性、兼容性、移植性、扩展性、交互性要求高的嵌入式系统领域。2.FORTH虚拟机实现原理真实计算机的基本工作原理是存储和制约。计算机在制约器的指挥下,取出预先存储的指令序列(即程序)和数据,通过制约器译码,按指令的要求,取出数据完成运算,再把结果重新存储起来,如此循环,直至完成全部
【摘要】在嵌入式领域,如何降低系统与运转环境之间的相关性,在各种异构的嵌入式平台上快速构建系统一直是研究的重点。本文基于FORTH语言,通过对虚拟机工作原理的分析,以自主构建的JLP FORTH虚拟平台为例,描述了虚拟机的实现原理、指令定义、存储策略和核心算法,并且在存储上提出以分段的方式分离代码和数据,通过该策略构建的FORTH虚拟机具有了更高的系统安全性,并且调试方便、扩展性强,特别适合应用于嵌入式系统。
【关键词】FORTH;虚拟计算机
1.引言
虚拟机最初是美国计算机科学家波佩克(Popek)与戈德堡(Gerald)在虚拟化需求中给出了定义,专指有效的、孤立的真实计算机的副本[1],现在则指可像真实计算机一样运转程序的软件实现,包括跟任何真实计算机无关的虚拟机[2]。根据运用和与机器的相关性可分为系统虚拟机和程序虚拟机,一个提供了完整的操作系统,另一个则以运转单个计算机程序为主。在嵌入式应用领域,嵌入式系统相关的CPU芯片和微计算机硬件系统种类繁多,并且不断推陈出新,甚至多核处理器已被普遍采用[3]。但是在新平台上,难以针对每一种芯片或平台制定一种计算机语言来编程。解决的策略一是可采用公共计算机语言,用不同的编译器来生成机器码,但该策略需要具有该语言的编译器,在新平台上往往难以具备。另一种策略即建立一个虚拟机,然后用一个计算机语言,用一个解释器来解释执行[4]。采用该策略,难点在于嵌入式虚拟机的构建,要能够适应多种环境、快速构建、可扩展。FORTH是一种与众不同的计算机程序设计语言。它具有极强的扩展性,通过字的定义,可实现不断堆叠和扩展。同时,它又具有极好的交互性,指令可解释执行,这就为应用的调试带来了极大的便捷。本文基于FORTH语言,以自主构建的JLP FORTH虚拟平台为例,详细阐述FORTH虚拟机的实现原理和核心实现策略,模拟和实现了通用的交互式计算机结构,实现了真实计算机的典型工作流程[4],并且一改过去FORTH代码和数据混合存储的方式,在内存的存储上以分段的方式将内存分为CS、VS、DS、SS四个段,分别存储指令和数据,这样,就实现了系统指令和用户数据的分离,有效地提高了代码和系统的安全性,并且调试方便、扩展性强,尤其适合应用于对安全性、兼容性、移植性、扩展性、交互性要求高的嵌入式系统领域。

2.FORTH虚拟机实现原理

真实计算机的基本工作原理是存储和制约。计算机在制约器的指挥下,取出预先存储的指令序列(即程序)和数据,通过制约器译码,按指令的要求,取出数据完成运算,再把结果重新存储起来,如此循环,直至完成全部指令。对真实计算机来说,这个过程依托处理器CPU来实现,CPU包括运算器、制约器和寄存器。如果描述CPU核心工作过程,主要包括以下步骤:(1)提取程序计数器值,该值指向的地址即指令地址;(2)从该地址取出指令;(3)程序计数器增加指令长度,即指向下一条指令地址;(4)解码执行指令;(5)返回结果。
由于FORTH虚拟机是工作在真实计算机上的,因此要实现FORTH虚拟机必须用对应关系依托真实计算机的代码来实现这个核心过程。在FORTH虚拟机中,用核心算法——NEXT模拟了这个过程,将虚拟机指令和真实计算机指令实现对应,通过建立字典表,设置地址跳转,以串线码的方式将虚拟机命令字和直接机器指令实现对应,依托真实计算机指令完成了CPU的处理过程[6]。如图1所示。
在字典表存放了各个FORTH高级字的名称和代码执行地址,其中也有S字的定义,在S字的代码场中存有S字的代码执行地址,该代码执行地址与code所描述的直接机器执行代码相对应,构成间接串线编码。当执行该指令时,首先查找字典表,找到S定义后,取出其WPF指令码中存放的地址,然后跳转到代码场该地址中,由于是FORTH高级字定义,所以首先执行“:”机器码将程序计数器所记录的下一条指令返回地址压入栈,然后跳转到参数场地址依序执行,直到最后的“;”返回指令执行后,再将原先存入栈的返回地址弹出,这样即完成一条指令的执行。其中,代码场和参数场分别存储指令和参数。以下以JLP FORTH虚拟机为例,详细描述其字典表、代码场、参数场的定义、虚拟机存储和指针的分配,以及核心算法。

3.指令的定义和存储

FORTH虚拟计算机采用该虚拟指令的存储地址来表示该指令,称为“地址码”。虚拟计算机的每个指令用名称(例如+、-、*)来表示,称为“字(Word)”。FORTH虚拟计算机的指令包括“复合字”和“基本字”。基本字也称为“低级字”,由真实计算机机器码和数据组成的,低级字组合可构成“复合字”,所以,“复合字”也称为“高级字”。
高级字和低级字都可通过定义扩展。扩展嵌入式FORTH虚拟计算机的实现相关范文由写论文的好帮手www.7ctime.com提供,转载请保留.高级字用“:”冒号定义,通过高级字定义用已有的指令形成新的指令。格式如下:
:名字 … lee … ;
其中执行lee指令可以跳出该FORTH字的执行,忽略掉其后的指令。扩展低级字则用机器码定义,格式如下:
CODE 名字 … … NEXT, END-CODE
其中NEXT,指令可以让计算机执行下一条虚拟机指令。
对于真实计算机,用编译器生成的指令码序列中不需要保留指令名称。FORTH虚拟计算机不同,由于需要虚拟机执行和构造新的虚拟机指令,因此在虚拟计算机中要保留FORTH字的名称,用于存储FORTH字的存储空间就是“字典表”。在JLP FORTH虚拟平台中,字典表结构如表1,在图1中也有标注。
WPF里存储的指令码即FORTH字在存储空间的地址。由于允许FORTH字的名称长度不一样,因此采用链表结构可有效地存储它们,在LPF中即存放了下一个字的定义地址。
代码场和参数场用于共同存储FORTH字,如表2。嵌入式FORTH虚拟计算机的实现由优秀论文网站{#GetFullDomain}提供,助您写好论文.嵌入式FORTH虚拟计算机的实现论文资料由论文网www.7ctime.com提供,转载请保留地址. 全文地址:www.7ctime.com/jsjkxlw/lw4161.html上一论文:浅论激发学习兴趣,给力初中计算机教学