这里首先判断g是不是table,然后第7行取得g的hash部分,通过第8行luaH_set里的luaH_get得到table中key对应的old value。最后第11行,函数setobj2t将val("bar")存放在了全局变量foo的位置处,即foo = “bar”。
1 #define setobj(L,obj1,obj2) \ 2 { const TValue *o2=(obj2); TValue *o1=(obj1); \ 3 o1->value = o2->value; o1->tt=o2->tt; \ 4 checkliveness(G(L),o1); }
好了到了这里语句foo = “bar”对应的两条字节码的解释过程已经全部介绍完了,下面的三条字节码就不再详细解释了,大家可以按照上面的路线自己过一遍~
CentOS 编译安装 Lua LuaSocket