Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1297390
  • 博文数量: 196
  • 博客积分: 4141
  • 博客等级: 中将
  • 技术积分: 2253
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-21 20:04
文章存档

2019年(31)

2016年(1)

2014年(16)

2011年(8)

2010年(25)

2009年(115)

分类: 虚拟化

2014-10-05 01:07:21

命令格式
命令                        (比如,add)
命令    参数              (比如,goto  loop)
命令    参数    参数    (比如,  push local 3)

算术命令和逻辑命令

内存访问命令

  • push  segment index      将segment[index]的值压入堆栈
  • pop   segment  index      将栈顶元素弹出然后存入segment[index]。
段名 功能 说明
agrument 存储函数的参数 当进入函数时,由VM实现机制进行动态分配
local 存储函数的局部变量 当进入函数时,由VM实现机制进行动态分配并被初始化为0
static 存储同一.vm文件中所有函数共享的静态变量 由VM实现机制为每个.vm文件进行分配;被.vm文件中的所有函数公用
constant 包含所有常数的伪段,常数的范围为0...32767 由VM实现机制来模拟;该段对于程序中所有函数都是可见的
this  that 通用段,能够与堆中不同区域相对应来满足各种程序编写的需求 任何VM函数可以使用这两个段来操纵堆中指定的区域
pointer 该段由2个内存单元组成,用来保存this和that段的基地址 任何VM函数可以将pointer 0(或1)设置到某一地址上;这相当于将this(或that)段联结到起始于该地址的堆区域上
temp 固定的段,由8个内存单元组成,用来保存临时变量 被任何VM函数用于任何用途。被程序中的所有函数共享


程序流程控制命令和函数调用命令
程序流程控制命令
label  symbol     //标签声明
goto  symbol     //无条件分支
if-goto symbol   //条件分支
函数调用命令
function  函数名  nLocals     //函数声明,指明函数的本地变量个数
call         函数名  nArgs       //调用函数,指明函数的参数的个数
return                               //将程序控制权返回给调用者
阅读(1546) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~