yyqng

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1.1 前世今生

    Lua于1993年诞生于巴西的Tecgraf实验室,Tecgraf主要专注于图形图像相关的工具研发。

    (1)可移植性:使用clean C编写的解释器。

    (2)良好的嵌入性:提供丰富的API供宿主与Lua脚本之间进行通信和交换数据。

    (3)非常小的尺寸:Lua5.1源码只有一万多行。

    (4)效率很高:为了提高性能,作者们自己开发词法分析器和解析器,代替Lex和Yacc等工具。

    用户使用C、C++等语言进行主要功能的开发,而扩展、配置等频繁动态变化的部分使用Lua语言来进行开发。在游戏服务器领域:

    (1)C、C++语言实现引擎层。

    (2)向引擎层注册一个Lua主逻辑脚本。Lua负责处理数据包,并根据数据的内容调用主逻辑脚本中的相关函数进行处理。

    可以看出,游戏的逻辑、玩法等频繁变动的内容由Lua完成。

1.2 源码组织

    内部模块对外提供的接口、数据结构都以“lua模块名_”作为前缀。

    C API则用“lua_”作为前缀。

1.3 Lua虚拟机工作流程

    (1)Lua代码->字节码:llex.c(词法分析)和lparser.c(语法分析)。lopcodes.h , lopcodes.c(定义字节码指令及相关API )

    (1)Lua虚拟机执行字节码:执行(lvm.c:luaV_execute),函数环境(ldo.c),垃圾回收(lgc.c),与宿主系统交互(lapi.c)

    后面的分析是基于Lua 5.1.4版本进行分析的。

 

posted on 2021-01-17 12:26  zziii  阅读(251)  评论(0编辑  收藏  举报