- 浏览: 342313 次
- 性别:
- 来自: 福建福州
最新评论
-
jw72jw:
最后这个是打表求值
LUA源码分析三:table分析(1) -
dyllove98:
"一些非常重要的问题,涉及面少。那这个时候,我更崇尚 ...
乱写:团队里的独裁和民主一点看法 -
jvmlover:
被踩10次了,什么思想感情啊。
LUA源码分析三:table分析(1) -
chenchenfly99:
chenchenfly99 写道
MMO游戏终极内测开服一周,问题记录 -
chenchenfly99:
...
MMO游戏终极内测开服一周,问题记录
文章列表
函数:{"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命中缓存,以及在同一个页面上不出现一个脏的内 ...