`
chenpeilei2003
  • 浏览: 191405 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

LUA源码阅读顺序

    博客分类:
  • Lua
阅读更多
LUA源码阅读顺序 - [LUA]
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://cjbskysea.blogbus.com/logs/74215893.html



转自:http://www.reddit.com/comments/63hth/ask_reddit_which_oss_codebases_out_there_are_so/c02pxbp

Recommended reading order:

    * lmathlib.c, lstrlib.c: get familiar with the external C API. Don't bother with the pattern matcher though. Just the easy functions.
    * lapi.c: Check how the API is implemented internally. Only skim this to get a feeling for the code. Cross-reference to lua.h and luaconf.h as needed.
    * lobject.h: tagged values and object representation. skim through this first. you'll want to keep a window with this file open all the time.
    * lstate.h: state objects. ditto.
    * lopcodes.h: bytecode instruction format and opcode definitions. easy.
    * lvm.c: scroll down to luaV_execute, the main interpreter loop. see how all of the instructions are implemented. skip the details for now. reread later.
    * ldo.c: calls, stacks, exceptions, coroutines. tough read.
    * lstring.c: string interning. cute, huh?
    * ltable.c: hash tables and arrays. tricky code.
    * ltm.c: metamethod handling, reread all of lvm.c now.
    * You may want to reread lapi.c now.
    * ldebug.c: surprise waiting for you. abstract interpretation is used to find object names for tracebacks. does bytecode verification, too.
    * lparser.c, lcode.c: recursive descent parser, targetting a register-based VM. start from chunk() and work your way through. read the expression parser and the code generator parts last.
    * lgc.c: incremental garbage collector. take your time.
    * Read all the other files as you see references to them. Don't let your stack get too deep though.

If you're done before X-Mas and understood all of it, you're good. The information density of the code is rather high.

分享到:
评论

相关推荐

    Lua源代码分析顺序

    通过按照推荐的顺序阅读相关文件,可以系统地学习Lua的各个组件,并最终掌握其工作原理。 #### 二、关键知识点解析 ##### 1. **lmathlib.c 和 lstrlib.c** 这两个文件主要介绍了如何扩展Lua的功能。`lmathlib.c`...

    《Lua 源码欣赏》

    由于Lua源码的结构和设计思想的复杂性,作者建议读者可以按照自己感兴趣的章节进行阅读,不必拘泥于顺序,最终再做统一的调整。这种方式可以帮助读者更好地理解语言的设计和实现。 综上所述,这篇文章不仅对Lua源码...

    Lua源码分析

    Lua源码主要可以分为几个部分:虚拟机运转的核心功能、源文件划分、代码风格、Lua核心、代码翻译及预编译字节码、内嵌库、独立解析器及字节码编译器、阅读源代码的次序。具体而言: 1. 源文件划分: Lua的源代码...

    Lua源码欣赏2012年11月-云风.pdf

    7. “阅读源代码的次序”可能会介绍阅读和理解Lua源码的推荐顺序,帮助读者更加高效地学习和研究Lua源码。 在后续章节中,文档还将会探讨“内置库的实现”、“String的实现”、“Table的实现”、“全局状态机及内存...

    lua源码分析

    标题中提到的知识点是“lua源码分析”,这涉及到对Lua语言的内部实现进行深入了解和解读。Lua是一种轻量级的脚本语言,经常被嵌入到应用程序中提供灵活的扩展和定制功能。源码分析是一个深入研究编程语言或软件的...

    Lua5.2源码

    Lua源码分为几个主要部分:lua.c和lua.h包含核心解释器和虚拟机实现;lapi.c和lapi.h处理C接口;lcode.c和lcode.h负责编译Lua代码为字节码;ltm.c和ltm.h管理元表等。通过阅读源码,开发者可以深入理解Lua的工作原理...

    lua嵌入式脚本语言源码 0.0-5.2.3

    Lua是一种轻量级的、可嵌入式的脚本...通过阅读和分析源码,开发者不仅可以提升对Lua的理解,也能从中吸取到编程语言设计和实现的宝贵经验。无论是为了学习、调试,还是进行二次开发,这份源码合集都是一份宝贵的资源。

    Lua入门示例

    首先,我们需要准备Lua的源代码,将其编译为适用于C++的静态库。Lua 5.2的源码通常包含`lua.c`和`luac.c`等文件,通过VS2008的工程设置,可以配置成生成静态库`.lib`文件。在编译选项中,确保与你的C++项目兼容,...

    lua-5.3.4.tar.gz Mylua-5.3.4.tar.gz lua生成动态库 lua包管理 pkgconfig PKG_CONFIG_PATH

    在源码包中,此宏定义在GCC中,打开lua-5.3.4/src/Makefile,可以看到:CFLAGS= -O2 -Wall -Wextra -DLUA_COMPAT_5_2 $(SYSCFLAGS) $(MYCFLAGS)。 默认编译后,再回头编译vlc开源库,发现:lua/demux.c:55:13: 错误...

    lua编译调试工具

    Decoda是一款功能强大的lua源代码调试器,支持断点、单步执行、查看变量值、调用栈分析等功能。在原有Decoda的基础上,经过扩充和完善后的lua调试工具,成为了目前lua开发者首选的调试利器。它不仅继承了Decoda的...

    lua-5.4.0_Win64_bin.zip

    luac是Lua的编译器,用于将Lua源代码(.lua文件)编译成字节码(.lua.c文件)。luac54.exe是针对Lua 5.4的版本,它能将 Lua 5.4 代码转换为更高效的形式,便于快速加载和执行。字节码可以跨平台运行,只要目标平台...

    lua fifo函数文件

    在`fifo.lua-0.2`这个文件中,包含了该库的源代码,版本号为0.2,可能包含了一些优化和改进,比如错误处理、性能提升或者增加了新的API接口。为了使用这个库,你需要将其导入到你的Lua项目中,并调用其提供的函数。...

    LuaCSP:在Lua中通信顺序过程

    由于只给出了“LuaCSP-master”,这可能是项目仓库的主目录名,通常包含项目的源代码、文档、示例和其他资源。在实际使用中,开发者可以通过浏览这个目录下的内容来学习如何使用LuaCSP库,包括如何创建并发任务、...

    LUA参考资料

    1. **词法约定**:Lua的源代码由一系列的词法单元构成,包括标识符、关键字、数字、字符串、注释等。它的语法简洁明了,易于阅读和编写。 2. **值和类型**:Lua是动态类型的,意味着变量不需要预先声明类型。它有...

    Lua学习 中午参考手册

    Lua的词法约定定义了源代码的基本结构,包括关键字、标识符、注释等的使用规则。 - **关键字**:如`if`、`then`、`end`等。 - **标识符**:用于命名变量、函数等。 - **注释**:单行注释用`--`,多行注释用`--[[ .....

    lua编程手册和SciTE中文使用教程

    在本文中,我们将深入探讨Lua编程的基础知识,并介绍SciTE(源代码编辑器)作为Lua开发的辅助工具。 **Lua编程基础** 1. **变量与数据类型**:Lua支持五种基本数据类型:数字(Number)、字符串(String)、布尔值...

    luascript_source_lua_Tibia_zip_

    标题 "luascript_source_lua_Tibia_zip_" 暗示了这是一个与 Lua 脚本相关的项目,特别是针对游戏“Tibia”的源代码。这个压缩包包含了一个名为 "luascript.cpp" 的 C++ 文件,可能是一个将 Lua 脚本集成到 C++ 项目...

    Lua51DLL.zip

    Lua51DLL.zip是一个包含5.1版本的Lua官方C源码的压缩包,这个版本的Lua被认为是比较稳定且广泛使用的。"DLL"是Dynamic Link Library的缩写,表明这里提供的是一组动态链接库文件,这些文件在Windows操作系统中被用作...

    Lua代码规范-代码书写规范

    - **文件编码**:所有Lua源代码文件应以UTF-8编码保存,以支持各种字符集。 - **缩进**:推荐使用tab进行缩进,并在编辑器中设置tab显示为4个字节的宽度,保持代码的整齐。 ### 2. **命名规范** - **原则**:命名应...

Global site tag (gtag.js) - Google Analytics