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