`

LUA源码分析一:总括

    博客分类:
  • LUA
阅读更多

1.lua语言短小,而且是我目前开发用到的语言之一,我会把它作为长期阅读的一个开源代码之一

2.读完并不代表很牛了,只是把自己的一些弱点给弥补得不是那么明显

3.格式上会大概如下:

 1)引用一段代码时,会把大意通过注释标识出来,如果遇到具体的函数调用会通过1.x表示在后面标记段

 2)有时候一遍下来,会有选择性的通读,很可能以后会回过头再次阅读,会加个时间戳表示更新

 3)根据2)的读法是,不从细节的算法出推导逻辑,而是先认识这个东西是干吗的,再去推导其中的细节。否则会迷失在无尽的细节中

 4)前几篇中,我会把每个函数背后所对应的c文件名列举出来,通过观察这些文件的层次,学习lua优秀的模块划分,和对lua全局上的认识


4.阅读源码上,我的一些体会,大概分这几个步骤

 1)一个好的库会很清晰分这么几个层次,外部API,内部API,自定义的数据格式和解析,核心的数据结构,核心的几个模块,以及工作流程

 2)因此阅读上可以这样,通过跟调一些外部API的实现,来了解这个库的一个工作方式

 3)熟悉这个库的 数据结构,和常用的数据解析宏或者函数

 4)可以尝试分析一些内部API的实现(多为实现外部API的函数), 3),4)可以多次迭代

 5)这个时候是跟调这个库的工作流程。

 6)以库工作流程为例,如果是lvm的虚拟机,那就要先了解它的一些状态文件,栈的操作方式,

 7)如果6)用到一些核心的数据结构,则回头再看这些数据结构,然后再从5)开始迭代

 总结一下,即先了解一个东西暴露出来的api,从这些上层api上去大致揣摩库的工作方式,然后熟悉"通行证"(数据结构,常用的宏),然后继续下一层的探索,有时候需要两个层次的结合来看,不但迭代的这么个过程。其中很重要的一个是,怎么去领会一个库的思考方式和组织关系,有了这个大背景的存在,就不会迷失在看似繁多的代码文件里。


5.环境上的准备

lua版本是(根据lua.h的宏)

#define LUA_VERSION "Lua 5.1"

#define LUA_RELEASE "Lua 5.1.4"

编译器是vs2008, win7版本

把源码都加进vs工程,删掉一些提示重复main的文件,保证代码上的可跟调性

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics