技术栈
luajit
异次元的归来
1 个月前
lua
·
luajit
LuaJIT源码分析(六)语法分析
lua虚拟机在编译lua脚本时,在对源代码进行词法分析之后,还需要进行语法分析,把源代码翻译成字节码。lua 5.1完整的语法描述如下:
异次元的归来
2 个月前
lua
·
luajit
LuaJIT源码分析(五)词法分析
lua虽然是脚本语言,但在执行时,还是先将脚本编译成字节码,然后再由虚拟机解释执行。在编译脚本时,首先需要对源代码进行词法分析,把源代码分解为token流。lua的token可以分为若干不同的类型,比如关键字,标识符,字面量,运算符,分隔符等等。
异次元的归来
8 个月前
lua
·
luajit
LuaJIT源码分析(三)字符串
要表示一个字符串,核心就是需要知道字符串的长度,以及存放字符串具体数据的地址。lua的字符串是内化不可变的,也就是lua字符串变量存放的不是字符串的拷贝,而是字符串的引用。那么,每当新建一个字符串时,lua都会去检查当前虚拟机中是否已经存在相同的数据,如果有就可以直接拿来用,没有再进行创建。
异次元的归来
9 个月前
lua
·
luajit
LuaJIT源码分析(二)数据类型
LuaJIT支持的lua数据类型和官方的lua 5.1版本保持一致,它的源文件中也有一个lua.h:不过LuaJIT用来表示这些类型的通用数据结构TValue定义就和官方lua不太一样了,它的定义要复杂一些:
fensnote
1 年前
linux
·
arm开发
·
luajit
LuaJit交叉编译移植到ARM Linux
Lua与LuaJit的主要区别在于LuaJIT是基于JIT(Just-In-Time)技术开发的,可以实现动态编译和执行代码,从而提高了程序的运行效率。而Lua是基于解释器技术开发的,不能像LuaJIT那样进行代码的即时编译和执行。因此,在运行速度方面,LuaJIT要比Lua快得多。此外,LuaJIT还支持更多的操作系统和处理器架构,具有更广泛的适用性。但是,由于它引入了JIT技术,其实现复杂度更高,而且在一些特殊情况下,可能会存在性能问题。