ImageVerifierCode 换一换
格式:DOC , 页数:72 ,大小:1.59MB ,
资源ID:6268273      下载积分:15 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-6268273.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于虚拟机和解释器的游戏脚本系统 ——虚拟机模块设计与实现.doc)为本站会员(wo7103235)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

基于虚拟机和解释器的游戏脚本系统 ——虚拟机模块设计与实现.doc

1、本 科 毕 业 论 文基于虚拟机和解释器的游戏脚本系统虚拟机模块设计与实现Game Scripting System based on Virtual Machine and Interpreter-Design and Implementation of Virtual Machine姓 名:学 号:学 院:软件学院系:软件工程专 业:软件工程年 级:指导教师: 年 月摘 要随着游戏行业的飞速发展,脚本语言扮演着越来越重要的身份。游戏脚本是计算机游戏逻辑的载体,将脚本引入到游戏开发中,可以避免游戏逻辑的硬编码化,从而大大提高游戏的开发效率,并进一步降低成本。目前国外已经有多个适合游戏开发的动

2、态脚本语言(例如 Ruby、Python、Lua),而国内的游戏开发公司则也逐渐将动态脚本语言应用到开发中。 本研究项目为基于虚拟机和解释器的游戏脚本系统(GSS)的设计与实现。其开发的核心思路是:设计对应语法的解释器,将本研究定义的脚本语言程序翻译成虚拟机接受的机器码并由虚拟机完成具体执行工作。该虚拟机必须是简洁、高效的,且允许跨平台执行。本文针对整个系统的虚拟机部分为主要研究内容。该虚拟机以 Linux GCC为开发环境,实现了对脚本语言的正确执行,并根据游戏开发的需求,提供高效垃圾回收机制与关联数组结构。论文针对虚拟机的设计展开,介绍脚本语言的研究背景、现状,开发了虚拟机部分,并设计了几

3、个程序对系统进行展示验证。 关键字:虚拟机;脚本语言;垃圾回收Game Scripting System based on Virtual Machine and Interpreter- Design and Implementation of Virtual MachineAbstractWith the rapid development of the gaming industry, scripting language began to play an increasingly important role. Game Script is the carrier of compute

4、r game logic. Introducing script into the game development will avoid hard-coded game logic and thus greatly improve the efficiency of game development, which will further reduce costs. At present, foreign countries have a number of dynamic scripting languages (such as Ruby, Python, LUA) for game de

5、velopment, and the domestic game development companies have been applying the dynamic scripting language to game development.This study introduced the design and implementation of game scripting system based on virtual machine and interpreter. The core ideas of designation are to achieve the interpr

6、eter of the corresponding syntax and to translate scripting language into the machine code which will be accepted by the virtual machine and then be implemented. The virtual machine should be easily operated, highly efficient, and allow platform independence implementationIn this thesis, we focus on

7、 the design of virtual machine, which is in Linux GCC development environment, and achieves a correct implementation of scripting language; In accordance with the needs of game developers, this virtual machine will provide efficient garbage collection mechanism and associative array structure. This

8、thesis is concerned with the implementation of virtual machine. Firstly it introduced the research background and current situation of scripting language; Then it was followed by the implementation of virtual machine. Finally, a number of programs were designed to verify this game scripting system.K

9、ey words: Virtual Machine; Scripting Language; Garbage Collection目录第一章 绪论 .11.1 研究背景与选题意义 .11.2 研究现状与存在的问题 .21.3 主要研究内容及特色 .41.4 本文结构安排 .6第二章 GSS 的架构设计 .72.1 GSS 系统需求分析 .72.2 GSS 系统分析与设计 .72.3 虚拟机模块构架设计 112.4 小结 20第三章 GSS VM 的实现 .213.1 实现的环境和语言 213.2 系统开发流程 223.3 虚拟机实现 223.4 系统运行结果 363.5 小结 44第四章 总结

10、与展望 45参考文献 .46致谢 .47ContentsChapter 1 Introduction .11.1 Background.11.2 Current Situation .21.3 Contents and Tasks 41.4 Architecture of Thesis6Chapter 2 Overall Design of GSS72.1 Requirement Analysis of GSS .72.2 Analysis and Design of GSS.72.3 Framwork of GSS Virtual Machine .112.4 Summary.20Chapt

11、er 3 Implementation Value value;第三章 GSS VM 的实现23 Object;其中,Type 为一个 enum 型变量,用于表示该数据的类型。具体的,一共提供 8 种类别的数据类型:typedef enum T_MARK, T_NIL, T_NUMBER, T_STRING, T_ARRAY, T_FUNCTION, T_CFUNCTION, T_USERDATA, Type; T_MARK 类型:设计为标记位,当函数调用、压栈等操作时,通过T_MARK 确定边界问题。 T_NIL 类型:同 C 语言的 NULL 类型,在 GSS 中未初始化的数值标记位 T_

12、NIL 以及用 T_NIL 来表示 False 情况。 T_NUMBER:数值类型。 T_STRING:字符串类型。 T_ARRAY:关联数组类型,即为键值对的 mapping 结构。 T_FUNCTION:GSS 函数指针类型。 T_CFUNCTION:C 语言写的库函数的类型。 T_USERDATA:用户自定义类型。而 Object 中的 Value 类型则用于存储值,详细定义如下:typedef unionCfunction f;real n;char *s;Byte *b;struct Hash *a;void *u; Value;即定义为一个 UNION 型,共用一块 32 位的内存

13、区域。其中,real 类型存储为实值,其余类型则为一个地址指针(在 C 语言中,指针为 32 位正整数) 。在进行类型操作过程中,详细如下: Object 声明时,其 tag 被定义为 T_NIL,而 value 不需要进行特别处理。基于虚拟机和解释器的游戏脚本系统24 在进行赋值操作的时候,由编译器确定类型后,分两种情况:如果该Object 非 NIL,则必须同类型或可进行强制转换的方可赋值,否则给出出错信息。如果该 Object 为 T_NIL 型,意味着还是空白,则写入 tag位以及 value 位。 在进行比较时,需要判断 tag 位必须相同方可进行,并依据不同的类型进行不同的比较策略

14、。3.3.2 Mapping 实现Mapping 内部设计为 Hash Table 实现。而 Hash Tabel 则以开链法作为冲突解决法,具体实现如图 3-2 所示。H a s h T a b l eN o d eN o d eN o d el i s t图 3-2 Hash Table 结构我们将 Hash 是实现为一个二维指针,其包含了对 list 数组的引用,而 list本身是一个 Node 的链表。同一个 list 其哈希值是一致的。使用开链法进行索引或者插入时,先由 Hash Function 计算出所处 list,并顺序遍历该 list 直到找到值。节点的定义:节点为键值对,ref 为其索引值,而 val 代表具体值。同时,节点必须拥有对下一个节点的指向。typedef struct Node

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报