在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
由上一篇文章可知解释器分析Lua文件之后生成Proto结构体,最后到luaV_execute函数中依次取出指令来执行。 每个lua虚拟机对应一个lua_State结构体,它使用TValue数组来模拟栈,主要包括与栈相关的成员:
这些成员的初始化操作在stack_init函数中完成。 lua_State里面存放的是一个Lua虚拟机的全局状态,当执行到一个函数时,需要有对应的数据结构来表示函数相关的信息,这个数据结构就是CallInfo,这个结构中同样有top、base这两个与栈相关的成员。 在lua_State 中,有一个base_ci的CallInfo数组,存储的就是CallInfo的信息。而另一个ci成员指向的就是当前函数的CallInfo指针。 在函数调用前会先调用luaD_precall函数,主要完成如下操作:
|
请发表评论