![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
脚本学习
文章平均质量分 73
xuzhonghai
这个作者很懒,什么都没留下…
展开
-
Lua 常用函数 一
lua_getallocflua_Alloc lua_getallocf (lua_State *L, void **ud);返回给定状态机的内存分配器函数。如果 ud 不是 NULL ,Lua 把调用lua_newstate 时传入的那个指针放入*ud 。lua_getfenvvoid lua_getfenv (lua_State *L, int index);把索引处值原创 2012-02-07 13:56:22 · 36930 阅读 · 0 评论 -
lua操作常用函数学习一
(1)lua 和 C++之间的交互的基本知识: lua 和 C++ 之间的数据交互通过堆栈进行,栈中的数据通过索引值进行定位,(栈就像是一个容器一样,放进去的东西都要有标号)其中栈顶是-1,栈底是1,也就是第 1 个入栈的在栈底;也可以这么说:正数表示相对于栈底的位置(位移),负数表示相对于栈顶的位置(位移);(2)计算和清空栈中元素的操作:1、函数lua_gettop(转载 2013-01-10 16:23:18 · 2296 阅读 · 0 评论 -
lua_gc 源码学习二
普及下常识:GC 是 garbage collector 资源回收器;初期的 Lua GC 采取的是 stop the world 的实现。一旦产生 gc 就需要期待全部 gc 流程走完。lua 自己是个很精简的体系,但不代表处理的数据量也必然很小。从 Lua 5.1 入手下手,GC 的实现改成分步的。固然照旧是 stop the world ,可是,每个步骤均可以分阶段执行。这样,屡次搁转载 2013-01-04 16:04:31 · 3972 阅读 · 0 评论 -
lua_gc 源码学习三
我们晓得,lua 对外的 API 中,统统个 gc 打交道的都经过lua_gc。C 说话构建体系时,普通不讲计划模式。但模式仍是存在的。若要按《计划模式》中的分类,这应当归于 Facade 形式。代码在 lapi.c 的 895 行: LUA_API int lua_gc (lua_State *L, int what, int data) { int res = 0; global_Stat转载 2013-01-04 16:06:03 · 3641 阅读 · 0 评论 -
lua_gc 源码学习四
今天来看一下 mark 过程是怎样实现的。所有的 GC 流程,都从 singlestep 函数开始。singlestep 就是一个最简单的状态机。GC 状态简单的从一个状态切换到下一个状态,循环不止。状态标识放在 global state 的 gcstate 域中。这一点前面谈过。开始的两个状态和 mark 过程有关。初始的 GCSpause 状态下,执行 markroot 函数。我们转载 2013-01-04 16:08:26 · 2506 阅读 · 0 评论 -
lua_gc源码学习一
转自别人的博客 备用学习最近发现在大数据量的 lua 环境中,GC 占据了很多的 CPU。差不多是整个 CPU 时间的 20% 左右。希望着手改进。这样,必须先对 lua 的 gc 算法极其实现有一个详尽的理解。我之前读过 lua 的源代码,由于 lua 源码版本变迁,这个工作还需要再做一次。这次我重新阅读了 lua 5.1.4 的源代码。从今天起,做一个笔记,详细分析一下 lua 的转载 2013-01-04 16:03:15 · 2242 阅读 · 1 评论 -
lua_gc 源码学习六
GC 中最繁杂的 mark 部分已经谈完了。剩下的东西很简单。今天一次可以写完。sweep 分两个步骤,一个是清理字符串,另一个是清理其它对象。看代码,lgc.c 573 行:case GCSsweepstring: { lu_mem old = g->totalbytes; sweepwholelist(L, &g->strt.hash[g->swee转载 2013-01-04 16:10:59 · 2567 阅读 · 0 评论 -
lua_gc 源码学习五
今天来说说 write barrier 。在 GC 的扫描过程中,由于分步执行,难免会出现少描了一半时,那些已经被置黑的对象又被修改,需要重新标记的情况。这就需要在改写对象时,建立 write barrier 。在扫描过程中触发 write barrier 的操作影响的对象被正确染色,或是把需要再染色的对象记录下来,留到 mark 的最后阶段 atomic 完成。和 barrier 相关的转载 2013-01-04 16:09:52 · 2451 阅读 · 0 评论 -
Lua文件函数调用
假设你在脚本中定义了一个函数:function main(number)number = number + 1return numberend在你的游戏代码中,你希望在某个时刻调用这个函数取得它的返回值。在Lua中,函数等同于变量,所以你可以这样来取得这个函数:lua_getglobal(L, "main");//函数现在栈顶现在,我们可以调用这原创 2012-03-03 18:02:42 · 5558 阅读 · 0 评论 -
大体了解Lua的语法
Lua 的语法比较简单,学习起来也比较省力,但功能却并不弱。 在Lua中,一切都是变量,除了关键字。请记住这句话。 I. 首先是注释 写一个程序,总是少不了注释的。 在Lua中,你可以使用单行注释和多行注释。 单行注释中,连续两个减号"--"表示注释的开始,一直延续到行末为止。相当于C++语言中的"//"。 多行注释中,由"--[["表示注释开始原创 2012-02-27 11:32:36 · 2511 阅读 · 1 评论 -
ini 文件的字段删除
BOOL WritePrivateProfileString( LPCTSTR lpAppName, // section name LPCTSTR lpKeyName, // key name LPCTSTR lpString, // string to add LPCTSTR原创 2012-02-22 17:42:52 · 2079 阅读 · 0 评论 -
使用lua_next()遍历表
转自:http://hi.baidu.com/bitbull/blog/item/bc27581eca1886f61bd5768e.html问题概要: 用lua写了个函数,返回的是一个表.需要在C里对返回的表里元素做二次处理.在C里我们可以通过lua_gettable()或者lua_rawget()来获取表里元素值,但使用这两个接口的前提是你得知道key,它才能给你value. 当然对于顺转载 2012-02-07 13:42:45 · 6562 阅读 · 0 评论 -
Lua常用函数
lua_setlocalconst char *lua_setlocal (lua_State *L, lua_Debug *ar, int n);设置给定活动记录中的局部变量的值。参数 ar 与 n 和 lua_getlocal 中的一样(参见 lua_getlocal)。 lua_setlocal 把栈顶的值赋给变量然后返回变量的名字。它会将值从栈顶弹出。 当索引大于局原创 2012-02-07 14:01:50 · 2057 阅读 · 0 评论 -
lua堆栈操作常用函数学习二
/*** basic stack manipulation*/LUA_API int (lua_gettop) (lua_State *L); //返回当前堆栈的大小LUA_API int lua_gettop (lua_State *L) { return cast_int(L->top - L->base);}int lua_gettop(lua_S原创 2013-01-10 16:26:06 · 4953 阅读 · 0 评论