lua symbexec的2个用途


原型: static Instruction symbexec (const Proto *pt, int lastpc, int reg);

symbexec 是安装vm的执行流程来模拟一段opcode的执行, 执行到lastpc, 同时返回修改reg的那条指令。

有2个用途
1. loadstring检查代码是否被篡改,是否合法
2. 用于lua_getinfo的时候 看一个first class的function是global,local,upval 还是其他东西。

总之设计还是很巧妙的。

你可能感兴趣的:(lua)