lua 源码阅读 5.3.5 笔记
记录下吧,断断续续读了几周,收益还是很多的。
推荐阅读顺序:
1) 基础数据类型
lstring.c ltable.c lobject.c lfunc.c lstate.c
2) 标准库(这个相对简单)
lbasiclib.c lstrlib.c ltablib.c lmathlib.c loslib.c liolib.c loadlib.c lcorolib.c
3) lua 核心
ltm.c ldo.c lvm.c lopcodes.c
这个有点难理解, 多读几遍,每次总会有收获的。我是从 lua 的低版本看上来的,很多实现都变了,比如 ltm.c 的最早实现就是一个二维数据, lopcodes.c 早期没有像现在这样会根据虚拟指令进行二级分发,ldo 的变动就比较大,早期的就是调 lua 的虚拟指令,c 的入口地址,现在的加了 coroutine 等。
4) lua 的周边 api
lapi.c lauxlib.c linit.c lua.c print.c luac.c
这些相对比较简单
5) lua 的一些基础辅助模块
lgc.c lmem.c lzio.c ldebug.c
6) 解析相关
这块我没看 5.3.5的,早期的版本简单的扫了下,有点烦人,一堆状态,词法解析生成虚拟指令和数据栈,大概就是这些内容。
记录下感受,像是一个大的宝藏,你能拿走多少要靠自己能理解多少。说在再多,不如读一次源码。 talk is cheap, show me the code.
接下来打算细读下 lua 参考 文档,还有 云大 的 skynet .
文档:lua 5.3.note
链接:http://note.youdao.com/noteshare?id=e75f2653ae3365d1eb534498b302ec63
lua 源码阅读 5.3.5 笔记的更多相关文章
- lua 源码阅读 1.1 -> 2.1
lua 1.1 阅读1. hash.c 中 a) 对建立的 Hash *array 用 listhead 链式结构来管理,新增lua_hashcollector,用来做 Hash 的回收处理. ps: ...
- lua 源码阅读顺序
https://www.reddit.com/comments/63hth/ask_reddit_which_oss_codebases_out_there_are_so/c02pxbp Online ...
- cpython和lua源码阅读
cpython代码很多,不太容易看出来. lua代码真的短小精悍,不得不佩服.
- CI框架源码阅读笔记5 基准测试 BenchMark.php
上一篇博客(CI框架源码阅读笔记4 引导文件CodeIgniter.php)中,我们已经看到:CI中核心流程的核心功能都是由不同的组件来完成的.这些组件类似于一个一个单独的模块,不同的模块完成不同的功 ...
- CI框架源码阅读笔记4 引导文件CodeIgniter.php
到了这里,终于进入CI框架的核心了.既然是“引导”文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http://you.host.c ...
- CI框架源码阅读笔记3 全局函数Common.php
从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap ...
- CI框架源码阅读笔记2 一切的入口 index.php
上一节(CI框架源码阅读笔记1 - 环境准备.基本术语和框架流程)中,我们提到了CI框架的基本流程,这里再次贴出流程图,以备参考: 作为CI框架的入口文件,源码阅读,自然由此开始.在源码阅读的过程中, ...
- CI框架源码阅读笔记1 - 环境准备、基本术语和框架流程
最开始使用CI框架的时候,就打算写一个CI源码阅读的笔记系列,可惜虎头蛇尾,一直没有行动.最近项目少,总算是有了一些时间去写一些东西.于是准备将之前的一些笔记和经验记录下来,一方面权作备忘,另一方面时 ...
- 源码阅读笔记 - 1 MSVC2015中的std::sort
大约寒假开始的时候我就已经把std::sort的源码阅读完毕并理解其中的做法了,到了寒假结尾,姑且把它写出来 这是我的第一篇源码阅读笔记,以后会发更多的,包括算法和库实现,源码会按照我自己的代码风格格 ...
随机推荐
- 如何编写一个简单的Linux驱动(一)
前言 最近在学习Linux驱动,记录下自己学习的历程. 驱动的基本框架 Linux驱动的基本框架包含两部分,“模块入口.出口的注册”和“模块入口.出口函数的实现”,如下方代码. static int ...
- 2020重新出发,NOSQL,MongoDB是什么?
什么是MongoDB ? MongoDB 是一个开源的文档数据库,它基于 C++ 语言编写,性能高,可用性强,能够自动扩展. MongoDB 是最流行的 NoSQL 数据库之一,原生支持分布式集群架构 ...
- C006:多项式求值 horner法则
代码: #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { float x; do{ printf("E ...
- jackson读取json tree讲解
待读取的json文本: {"data":{"count":4031,"list":[{"symbol":"SH ...
- robotframework安装与运行(ride.py1.7.4.2命令报错)(win10+python3.8.1)
首先,robotframework必须在python的环境下运行 所以你的电脑里必须有python3.x的环境先. 上古时期的robotframework只支持python2,不过python2都已经 ...
- python3 while循环
python不支持n++这样格式,因为python中变量不像c那样事先定义好变量类型,在内存中开辟指定的空间,然后赋值. python中以字符串为例,事先在内存划分空间来存放字符串,然后用变量名来指向 ...
- 相同宿主机下的dcoker之间通信
相同宿主机下的dcoker之间通信 docker docker的本质是进程,隔离的资源包括:网卡.回环设备.路由表和 iptables 规则,这些要素构成了一个进程(docker)发起和响应网络请求的 ...
- 实现图片的上传(要求:上传到指定的FTP服务器)
考核的知识点: (1)Linux系统的使用 (2)tengine 纯HTTP的web服务器 (3)SpringMVC的上传功能 (4)FTP的数据传到 1.1 传统上传方式的问题 但是在 ...
- JavaScript创建对象的方式汇总
1.Object构造函数创建 // 1.Object构造函数创建 var Obj = new Object(); Obj.name='saoge'; Obj.say=function(){ conso ...
- py004.python的逻辑运算,随机数及判断语句if,elif,else
判断语句又称 "分支语句" if判断语句的格式: if 条件1: 条件1满足时,执行的代码 -- # 前面有缩进4个空格 elif 条件2: 条件2满足时,执行的代码 -- # 前 ...