您所在位置: 网站首页 / 文档列表 / 嵌入式开发 / 文档详情
实验八 VM编译器.doc 立即下载
上传人:yy****24 上传时间:2024-09-09 格式:DOC 页数:3 大小:67KB 金币:14 举报 版权申诉
预览加载中,请您耐心等待几秒...

实验八 VM编译器.doc

实验八VM编译器.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

14 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验六构造计算机实验八VM编译器实验目的:根据VM-Hack规范实验VM编译器中的算术和逻辑命令、内存访问命令实验器材:硬件:安装了JDK的PC机一台软件:1.软件包tecs-software-suite-2.5.zip中的CPU仿真器2.实验八测试包实验步骤:程序和命令结构VM程序由一个或多个扩展名为.vm的文件构成的集合,而每个程序又包含一个或多个函数。在.vm文件中,每一行一个VM命令,按照下面所列的格式之一写:命令(比如,add)命令参数(比如,gotoloop)命令参数1参数2(比如,pushlocal3)参数与参数之间必须用空格分离,空格的个数可以是任意的。每一行行尾可以添加//开头的注释,它不会被程序执行。程序中允许出现空行,它同样也不会被执行。算术和逻辑命令VM语言有9个面向堆栈的算术命令和逻辑命令。7个是二元的:它们从堆栈中弹出两个元素,在其上执行二元函数操作,然后将结果压回堆栈。剩下2个是一元的,只从堆栈中弹出一个元素,在其上执行一元函数操作,然后将结果压回堆栈。可以看到每个命令仅会用操作结果来取代它的操作数,而对堆栈的其他部分没有影响。下表中有3个命令(eq,gt,lt)返回布尔类型的值。VM用0xFFFF和0x0000代表真和假命令返回值(弹出操作数之后)说明addx+y整数加法2-补码Subx-y整数减法2-补码neg-y算数求反2-补码eq若x=y则为真,否则为假相等判断gt若x>y则为真,否则为假大于判断lt若x<y则为真,否则为假小于判断andxAndy按位“与”操作orxOry按位“或”操作notNoty按位“非”操作内存访问命令所有的内存段都通过相同的两个命令来进行存取pushsegmentindex将segment[index]的值压入堆栈,index都从0开始popsegmentindex将栈顶元素弹出然后存入segment[index]段名功能说明argument存储函数的参数当进入函数时,由VM实现机制进行动态分配local存储函数的局部变量当进入函数时,由VM实现机制进行动态分配并被初始化为0static存储在同一.vm文件中所有函数共享的静态变量由VM实现机制为每个.vm文件进行分配;被.vm文件中所有函数共用constant包含所有常数的伪段,常数范围为0..32767由VM实现机制来模拟;该段对于程序中的所有函数都是可见的thisthat通用段,能够与堆中不同堆中不同区域相对应来满足各种程序编写的需求任何VM函数可以使用这两个段来操纵堆中指定的区域pointer该段由2个内存单元组成,用来保存this和that段的基地址任何VM函数可以将pointer0(或1)设置到某一地址上;这相当于将this(或that)段联结到起始于该地址的堆区域上temp固定的段,由8个内存单元组成,用来保存临时变量被任何VM函数用于任何用途。被程序中的所有函数共享程序流程控制命令和函数调用命令程序流程控制命令labelsymbol//标签声明gotosymbol//无条件分支if-gotosymbol//条件分支函数调用命令function函数名nLocals//函数声明,指明函数的本地变量个数call函数名nArgs//函数调用,指明函数参数的个数return//将程序控制权返回给调用者(这些命令中,函数名是字符串,nLocals和nArgs都是非负整数如何测试你的VM翻译器正确先用你的VM翻译器将VM文件翻译成ASM文件,以SimpleAdd.vm为例,翻译后的文件名为SimpleAdd.asm将你翻译后的SimpleAdd.asm加载到CPU仿真器的ROM中,然后加载测试文件SimpleAdd.tst,运行CPU仿真器,这时会生成SimpleAdd.out文件,如果与SimpleAdd.cmp中的要求相符,则说明你的翻译器是正确的,否则请修改翻译器程序。【注】:1.VMEmulator为VM语言仿真器,可以让你来直接执行VM语言,以便了解VM的执行情况2.我在第一次做测试时,给的仿真软件老是抛出异常,你可以把要.tst文件中要执行的次数改小一点,以便快点执行完。
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

实验八 VM编译器

文档大小:67KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
年会员
99.0
¥199.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用

手机号注册 用户名注册
我已阅读并接受《用户协议》《隐私政策》
已有账号?立即登录
我已阅读并接受《用户协议》《隐私政策》
已有账号?立即登录
登录
手机号登录 微信扫码登录
微信扫一扫登录 账号密码登录

首次登录需关注“豆柴文库”公众号

新用户注册
VIP会员(1亿+VIP文档免费下)
年会员
99.0
¥199.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用