自己动手实现Lua:虚拟机、编译器和标准库
上QQ阅读APP看书,第一时间看更新

第二部分 Lua虚拟机和Lua API

第2章 二进制chunk

Lua是一门以高效著称的脚本语言,为了达到较高的执行效率,Lua从1.0版(1993年发布)开始就内置了虚拟机。也就是说,Lua脚本并不是直接被Lua解释器解释执行,而是类似Java语言那样,先由Lua编译器编译为字节码,然后再交给Lua虚拟机去执行。相比较而言,诞生时间比Lua稍晚一些的脚本语言Ruby在出现以来的很长一段时间里一直是直接解释执行Ruby脚本,直到1.9版(2007年底发布)才引入了YARV虚拟机。

Lua字节码需要一个载体,这个载体就是二进制chunk,对Java虚拟机比较熟悉的读者可以把二进制chunk看作Lua版的class文件。本章会首先对二进制chunk进行一个简单的介绍,然后详细讨论Lua编译器的用法和二进制chunk格式,最后编写代码实现二进制chunk解析,为后续章节做准备。在继续阅读本章内容之前,请读者执行如下命令,把本章所需的目录结构和编译环境准备好。

        $ cd $LUAGO/go/
        $ cp -r ch01/ ch02
        $ mkdir ch02/src/luago/binchunk
        $ export GOPATH=$PWD/ch02
        $ mkdir $LUAGO/lua/ch02