![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
lua
文章平均质量分 88
lua源码分析
本人注释在github:https://github.com/huoyang11/read_lua
yanghuo11
这个作者很懒,什么都没留下…
展开
-
skynet环境搭建
skynet环境搭建本博客的使用环境ubuntu20.04gcc version 9.4.0autoconf1. 获取源码并且编译1.1 获取源码githubgit clone https://github.com/cloudwu/skynet.gitgiteegit clone https://gitee.com/mirrors/skynet.git不能访问github,可以去gitee里面clone镜像1.2 编译源码获取完毕之后直接使用make编译make li原创 2022-05-04 19:49:34 · 1340 阅读 · 0 评论 -
windows 搭建lua调试环境
1. makefile 文件的简要分析LUA_A= liblua.aCORE_O= lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.oLIB_O= lauxlib.o lbaselib.o lcorolib.o ldblib.o l原创 2022-01-16 22:54:03 · 749 阅读 · 0 评论 -
7.lua语法解析-token函数
1.lua的zio1.1 zio的定义typedef const char * (*lua_Reader) (lua_State *L, void *ud, size_t *sz);struct Zio { size_t n; //缓存长度 const char *p; //缓存 lua_Reader reader; //读取内容的回调函数 void *data; //回调函数的参数 lua_State *L; /* Lua state (for reade原创 2021-10-10 13:57:53 · 879 阅读 · 0 评论 -
6.lua指令与虚拟机
1. lua函数1.1 函数定义typedef int (*lua_CFunction) (lua_State *L);typedef struct CClosure { ClosureHeader; lua_CFunction f; TValue upvalue[1]; /* list of upvalues */} CClosure;typedef struct Proto { //语法解析的输出 CommonHeader; lu_byte numparams; /原创 2021-09-25 17:24:04 · 372 阅读 · 0 评论 -
5.lua api
1.lua的数据类型#define LUA_TNONE (-1) //无类型#define LUA_TNIL 0 //空类型#define LUA_TBOOLEAN 1 //bool#define LUA_TLIGHTUSERDATA 2 //指针(需要关注内存释放)#define LUA_TNUMBER 3 //数据#define LUA_TSTRING 4 //st原创 2021-09-05 23:30:39 · 758 阅读 · 0 评论 -
4. lua调试脚本编写
1. 调试lua源码带来的麻烦在之前的三篇文章中写了lua中最基本的数据类型和数据结构的实现,lua数据类型的实现、lua中string的实现、lua Table的实现。这些基础数据结构在lua源码中大量的使用,给调试带来了一定的困扰。如TValue的实现,把一切数据类型集合在一起。如果我使用gdb去打印这个值我需要做的是,查看TValue的类型 tt_ 查看具体类型到底是int、float、还是string等数据类型,以此我们需要写一些脚本给我们的调试带来便利。2. gdb的脚本编写gdb脚本中可原创 2021-06-28 16:42:03 · 1335 阅读 · 0 评论 -
3.lua Table实现
1. 数据结构的定义table的定义typedef struct Table { CommonHeader; lu_byte flags; //是否存在元方法 lu_byte lsizenode; //hash部分的大小(这个值是以2为底的对数值) unsigned int alimit; //数组大小 TValue *array; //数组部分 Node *node; //hash部分 Node *lastfree; //指向hash部分最后一个未使用的节点原创 2021-06-16 22:06:22 · 594 阅读 · 0 评论 -
2.lua 中string的实现
数据结构定义#define CommonHeader struct GCObject *next; lu_byte tt; lu_byte markedtypedef struct GCObject { CommonHeader;} GCObject;typedef union Value { struct GCObject *gc; /* collectable objects */ void *p; /* light userdata */ lua_CF原创 2021-06-13 09:47:29 · 496 阅读 · 0 评论 -
1.lua数据类型的实现
lua中的常用的数据类型print(type(a))a = 10print(type(a))a = trueprint(type(a))a = {}print(type(a))a = "aaaa"print(type(a))a = function () print("aaaa")endprint(type(a))输出:nilnumberbooleantablestringfunction可以看到lua中的变量类型支持简单类型的数字类型、和bool类型,也支原创 2021-06-13 09:46:33 · 447 阅读 · 0 评论