`
文章列表
  函数:{"getlocal", db_getlocal} 从db_getlocal开始跟调.该函数是把自身的所有变量打印出来。大体的思路是算到执行码,根据执行码的大小限制,遍历函数保存的变量信息,然后依次打印。       static int db_getlocal (lua_State *L) { int arg; lua_State *L1 = getthread(L, &arg); lua_Debug ar; const char *name; /* 根据level算出L->ci 和 L->ba ...
关于一些语法包装的问题不涉及(可见前面某篇),主要对堆栈排列上的分析。 一路跟调到static void f_parser (lua_State *L, void *ud)函数,堆栈记录如下: + L->top 0x003950e8:当前指针 + L->stack 0x003950a8 + L->base 0x003950b8 + L->ci 0x00398e08 跟调到Proto *luaY_parser函数中。该函数主要进行了语法解析,FuncState的建立,最后返回结构体 Proto。里面具体怎么解析语法等我们都不需要关系, ...
require的调用其实很简单,熟悉完env的设置后,其实本质上都是走luaL_dofile函数对全局表的设置。do_file完,然后设置环境变量。借助此,把LUA里的函数堆栈方式依次跟调一次。 如果是熟悉汇编堆栈的形式,对LUA的源码风格很好理解。比如没有实际的变量名,通过对栈的偏移来访问。大于0的表示从base基地址加起,负数的表示从top往后减,或者是表示特定的全局值。因为有这种访问上的规则,所以lua的源码对访问封装的层次很清晰,哪里要回退栈指针,哪里要增加top地址等等。 static int ll_require (lua_State *L) { cons ...
    LUA源码分析五:环境设置 版本日期 2011年4月22日 lua里的环境设置,可以看成是一个临时的域名空间。这个空间里有名字和变量等等。可以试着运行一下以下代码,输出全局的环境     local l_lindp=1 g_lindp=1 for n in pairs(_G) do print(n) end  输出: string xpcall package tostring print os unpack require getfenv setmetatable next assert tonumber io rawequal ...
  版本整理日期:2011/4/21   元表其实就是可以让你HOOK掉一些操作的一张表。 表的定义在ltm.h/c的文件里。对元表的调用在lvm文件里。 来看看是怎么hook的。首先定义了一堆的枚举   typedef enum { TM_INDEX, TM_NEWINDEX, TM_GC, TM_MODE, TM_EQ, /* last tag method with `fast' access */ TM_ADD, TM_SUB, TM_MUL, TM_DIV, TM_MOD, TM_POW, TM_U ...
何谓是言论信息式?如果要来个鲜明的对比,请看QQ和豆瓣。一说豆瓣,给人的意识形态就是一个以读书、电影为主的一个专业化网站。说QQ,就是用户多、各种聊天信息,展示的是一种社会型的关系。典型的有QQ,人人网,微博。那么结合前篇的《社交网络的思考》中的部分内容,来分析下三者出现的规律。 QQ是在网络上最早一批的联络工具。最早的吸引点是可以为网络上互不相识的人提供交流的工具。我相信很大部分人都经历过在QQ上遇到一个MM(即使是人妖);在网吧里隔壁座的MM在上QQ的那种好奇感。那么再看现在呢,从早起的加陌生人变得很谨慎的加好友信息。QQ里存的都是同学,朋友,同事,N年的网友。在逐渐的经历过这种热潮后 ...
版本整理日期:2011/3/31   本篇主要说明两个点: 1. 载入的IO流程, 2. lua内部调用函数流程 两个核心的函数   int luaD_pcall (lua_State *L, Pfunc func, void *u, ptrdiff_t old_top, ptrdiff_t ef) int luaD_rawrunprotected (lua_State *L, Pfunc f, void *ud) { LUAI_TRY(L, &lj, (*f)(L, ud); ...
版本整理日期:2011/3/27 分析函数:getn,tinsert     table在里面数据方式比较直观,但是算法很复杂。一些算法的坑会慢慢补上。 先总括下table的数据结构: 1)由一个hash表和一个数组构成,当插入一个小标元素,会根据当前数组的 ...
版本整理日期:2011/3/27 对lmathlib.c文件中的函数进行跟调。函数是那个不重要,这里选取math_abs /* lmathlib.c 取出一个TValue,转成整型,然后fabs处理。TValue可能是字符串,也可能就是数字。 luaL_checknumber的行为是必返回一个number值 lua_pushnumber的行为是把结果进行压栈处理,具体怎么处理还不知道 return 1;表示参数个数。有做过lua和c交互的就很熟悉了,表示结果的个数 可以得到的信息是,lua通过push参数+个数来表示结果的传递 */ static in ...
1.lua语言短小,而且是我目前开发用到的语言之一,我会把它作为长期阅读的一个开源代码之一 2.读完并不代表很牛了,只是把自己的一些弱点给弥补得不是那么明显 3.格式上会大概如下:  1)引用一段代码时,会把大意通过注释标识出来,如果遇到具体的函数调用会通过1.x表示在后面标记段  2)有时候一遍下来,会有选择性的通读,很可能以后会回过头再次阅读,会加个时间戳表示更新  3)根据2)的读法是,不从细节的算法出推导逻辑,而是先认识这个东西是干吗的,再去推导其中的细节。否则会迷失在无尽的细节中  4)前几篇中,我会把每个函数背后所对应的c文件名列举出来,通过观察这些文件的层次,学习lua ...
       这段时间一直在想手机上的应用,包括前一篇的社交网络。但是在用户群的定位上一直很不明晰,甚至在一些想法上和PC产生了很大的交集。所以,势必要想想,手机虽然越来越智能化,但不代表它在人们的生活中也 ...
QQ刚开始的时候,大家都一个劲的加陌生人(异性),而越到现在,大家的好友列表里反而都是熟悉的常用联系人。并且即使有其他IM软件出现,也很少人会去转换阵地,最主要的还是周边的人也在用QQ。  从QQ刚开始的疯狂加异性朋友到现在的谨慎对待陌生人,可以看到,传统的模式去认识一个新的朋友代价太高了。第一,没有准确的目的性,比如你随便加一个人,你根本不知道对方是干什么的。第二,每次都要进行机械式的问候,“你好”“你是干吗的”“你真的是女的吗?”。这样必然导致QQ从早期的交友工具变成后期的以联络为主工具。  我们再看看FACEBOOK,微博。FACEBOOK(包括国内的校内)是以一种主动开放主人 ...
内容上没什么好说的,不同情况下,看主策对一种东西的理解。从通用性讲我认为有这些: 分为本质和特质两个方面 本质: 1)操作 比如走路,使用物品,打怪,甚至可以扯到界面的布局合理上 2)帮助指引 玩家主动性方面:玩家遇到内容的不解,是否可以有直接的参照资料,比如在线客服,图文讲解等 内容主动性方面:一项功能,比如装备打孔,教玩家一次后,是否可以很容易的上手 特质: 我把网络游戏的特质归属为 互动,总结得不太好,显得有点空,大。 3)和平互动 指的是社交上的互动。聊天,好友,帮派,家族等等 4)战斗互动
视频地址:http://www.tudou.com/programs/view/Fo6GIWdWssQ/ 是不是强烈推荐不知道,从感情上来说,挺煽情的。 看后几点感受。 1)游戏作为新的文明承载体,孕育出新的科技。 2)精神,动作,感情。游戏变成了一个新的黑客帝国。 3)虽然向往专业的地方,但片子里的专业,让人感觉很恐怖,非常害怕和他们做为对手会是怎么样。 4)技术和策划是并行刺激的,如果有一方不是瓶颈了,那说明另一方没跟上。   4点多了,临时记录以上。   1月16日补充 5)一些东西并不是兴趣就可以。有时候会兴趣到恶心。要把兴趣更多的作为高效的学习动力、灵感的来源,千 ...
对于SLUB不熟的同学可以先跳过了,涉及的东西比较细致。 简单来说SLUB的结构是N(CPU数)个kmem_cache_cpu,和一个kmem_cache_node组成。其中kmem_cache_cpu的目的是为了从技术层面上提高CPU命中缓存,以及在同一个页面上不出现一个脏的内 ...
Global site tag (gtag.js) - Google Analytics