文件名称:字节码的运行-从0到1抖音运营变现手册大全
文件大小:2.13MB
文件格式:PDF
更新时间:2024-06-27 10:40:17
lua
7.2 字节码的运行 在第六章,我们讨论了 畃 函数在 界畵畡 中的运行过程。在这一章,我们来看看 界畵畡 函数是如何工作的。 如果仅看 界畵畡 虚拟机配备的操作码,实现这个虚拟机是非常容易的。界畵畡 支持的数据类很简单,所以虚 拟机指令也只有简单的四则运算、字符串连接、生成闭包、分支比较、对表结构的读写、畆畯畲 循环的处理、 函数调用及返回,等等。 如果熟悉 界畵畡 语言,可以把 界畵畡 有限的语言特性一一对应到字节码的操作中。元表和协程这两个由 界畵畡 第 电 版引入的特性,在操作码中找不到对应物,它们以 畃 库的形式提供融入到虚拟机的实现中。假设我们重 新实现一个削减版的 界畵畡 ,去掉协程甚至元表这两个特性,也不考虑自动垃圾收集的话10,仅需要用一个简 单的循环依次解析字节码的操作类型,做出相应的操作就够了。 7.2.1 luaV execute 畬畵畡畖 略畸略畣畵畴略 是 界畵畡 虚拟机执行一段字节码的入口。如果把 界畵畡 虚拟机看成一个状态机11,它就是从当 前调用栈上次运行点开始解释字节码指令,直到下一个 畃 边界跳出点。所谓 畃 边界跳出点,可以是函数执 行完毕,也可以是一次协程 畹畩略畬畤 操作。 8当 R(A+2) 为负数时,这个比较关系应该颠倒过来。 9有的软件不想让别人分析内嵌的 Lua 字节码,会打乱这些操作码的次序,使得标准的 Lua 反编译工具难以解析出正确的结果。 10用其它语言实现 Lua 的需求,一般出现在希望把 Lua 嵌入到 Java ,C# 这样的环境中。这些环境大多原生支持自动垃圾收集,不必特别去实 现。 11lua State 这个结构名暗示了“状态机”这个含义。