Golang编程语言知识介绍


  • 首页

  • todo

  • 思考

  • life

  • food

  • OS

  • lua

  • redis

  • Golang

  • C

  • TCP/IP

  • ebpf

  • p4

  • OpenVPN

  • IPSec

  • L2TP

  • DNS

  • distributed

  • web

  • OpenWRT

  • 运维

  • Git

  • 鸟哥的私房菜

  • IT杂谈

  • 投资

  • About Me

  • 友情链接

  • FTP

  • 搜索
close

lua源码阅读顺序-建议

时间: 2021-04-06   |   分类: lua     |   阅读: 217 字 ~1分钟

原文链接

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.

#lua#
C4:4个函数,528行代码实现可自举的 C语言编译器
Lua虚拟机指令介绍
shankusu2017@gmail.com

shankusu2017@gmail.com

日志
分类
标签
GitHub
© 2009 - 2025
粤ICP备2021068940号-1 粤公网安备44011302003059
0%