deliangyang / lua-start

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

开始学习lua

visitor badge

  1. lua的词法、语法解析,语义分析,代码生成 parse完毕之后得到AST,一个先进的编译器应该包含更多的步骤:语义分析,类型检查/推导,代码优化,机器代码生成...
  1. lua的vm虚拟机
  2. 标准库
  3. 二进制

想到哪就写到哪里,

通识整个项目,捋清楚思路之后再整理

Lua虚拟机

对计算机的模拟和抽象,虚拟机的实现大致可以分为两类:基于栈和基于寄存器。5.0以后

指令集

  • 常量加载指令
  • 运算符相关指令
  • 循环和跳转指令
  • 函数调用相关指令
  • 表操作指令
  • Upvalue操作指令

指令的四种编码

  • iABC -> A、B、C三个操作数,8、9、9位
  • iABx -> A、Bx两个操作数,8、18位
  • iAsBx -> A、sBx(有符号的整数),8、18位
  • iAx -> Ax只携带一个操作数,占用26bit。

Lua编译器

标准库

名词解释

  1. sp stack pointer 栈指针
  2. ip Instruction pointer 指令指针
  3. pc 指针计数器

gdb调试

https://interrupt.memfault.com/blog/automate-debugging-with-gdb-python-api

https://sourceware.org/gdb/onlinedocs/gdb/Types-In-Python.html#Types-In-Python

About


Languages

Language:C 49.0%Language:Makefile 36.7%Language:Lua 7.9%Language:C++ 3.2%Language:CMake 3.1%Language:TypeScript 0.0%Language:Shell 0.0%Language:Python 0.0%Language:PHP 0.0%