A. 如何看懂lua的源码
你需要掌握 lua 语言,才可能看懂 lua 语言的源代码。
你需要精通 c 语言,你才可能看懂 lua 的源码。
B. 如何学习 Lua VM 的源码
2011年底开始阅读Lua代码,选择的版本是5.1.4,在那个时候是最新的版本了,不过2012年不仅有更新的5.1版本出来,还有最新的5.2.暂时管不了这么多,继续看这个版本先了。 历经近一年,中间酸甜苦辣只有自己知道,你问有什么方法,我的回答只有坚持。一边看代码,一看补一些基础(比如看龙书),到最后觉得差不多了就自己抄Lua虚拟机代码来跟踪它的实现。 我的博客上:http://www.codemp.info/?tag=lua,有我写的Lua分析文章,还没有完全写完。当然我现在也不认为我完全理解的通通透透了。 我最后希望能做到的是:把Lua某个版本的代码通透看完,在github上写一个开源的分析Lua源码的文档,最后能正确写一份英文的得到Lua社区的认可。 之 所以花这么大功夫去啃Lua代码,是因为我觉得Lua是门很好的语言,参见知乎我在其他帖子中对Lua的评价。另一方面是Lua的代码数量足够 小,5.1.4仅仅1.5W行,去掉空白行和注释估计能到1W行。Lua是世界最流行的脚本语言之一,前几年还进过top20的流行语言,另外又是 C\C++的完美伴侣。另外,我自己对如何实现一门语言也充满了好奇,Lua虽小五脏俱全而且还是正经实用的项目。就这些理由一直在支撑着我看下去。当然 现在最难的时候已经过去了。 其他人的文章,国内云风写的是最多的。不过我认为云风的文章key太高,很难follow,你如果对云风写的文章涉及的技术点没有什么涉猎就直接去看,可能很难看懂。 另外国外人写过的,最推荐的有: 《》 《The implementation of Lua 5.0》
C. lua源码分析4(lua是怎么执行的)收藏
当分析到这里,对于lua生成中间码的过程就比较熟悉了。关键是生成的中间码必须要和lua虚拟机的执行联系在一起。所以,对于这里分析的函数调用,要结合lua虚拟机的执行一起来分析。
上篇文章对生成局部函数中间码做了简单的介绍。这里知道,当lua发现一个新定义的函数的时候,会生成OP_CLOSURE指令。那么,lua虚拟机执行到OP_CLOSURE后怎么执行呢?
在此之前,先说在lua解析代码完了以后,会做那些善后之事呢?
前面说过,lua会把一个代码文件当作是一个函数解析执行。在解析期间,它会率先生成一个FuncState的结构,作为最外面的函数。但这是解析时做的事情,运行期间,是不会有FuncState这个东西出现的。在运行期间,是由一个个叫CallInfo的数据结果的,它指的是当前运行的函数。
那么,在解析代码以后,是怎么转入运行的呢?
D. lua编译器源码多少行
1万多行。
去掉注释和空白差不多一万行左右。
E. lua怎么进入源码里面去调试
调试lua现几种案: 一)luaedit : 编辑断点断点命查看些都让习惯用vs亲切纯lua环境编辑器说期望程序运行能借用调试脚本能性(至少我没试验)能用需要给lua脚本做main脚本函数并提供系列伪c api(由lua实现函数提供制定值返)由luaedit启脚本main函数进行调试 二)利用 lua debug 库 hook 记录张断点位置表设置行模式 hook 每进入 hook 都检查否断点处若停等待交互调试效消耗 cpu 每进入新代码行都需要调函数函数本身用 lua 写候效率更低 三)利用lua脚本函数实现lua脚本封装断点函数种式结合debug库实现断点栈信息利用lua环境表函数调用信息进行记录打印需要脚本使用者显式提供断点函数调用办优点自组合适合自项目断点调试案缺点相繁琐且断点命难现式融
F. 脚本精灵lua 试用次数源代码
加个试用子程序,代码如下:
线程ID = BeginThread(试用子程序)
//下面放你的脚本主程序
你的主程序
sub 试用子程序
t=now
do
if DateDiff("n",t,now)=testtime then 'testtime 表示试用时间
Plugin.Msg.Tips "测试时间结束!"
Delay 1000
ExitScript
else
Delay 1000
end if
loop
End Sub
G. 支持中文变量名的lua,在网上看到修改源码就可以让lua支持中文变量名。我学着修改了,可是改完后,
直接使用luajit就可以支持中文变量名。
--$./luajit-2.0.0-beta10
LuaJIT2.0.0-beta10--Copyright(C)2005-2012MikePall.http://luajit.org/
JIT:ONCMOVSSE2SSE3SSE4.
>你好="111"
>print(你好)
111
>
现在版本应该是支持lua5.1的。luajit的性能比lua5.1好多了。
H. 如何安装luasocket源码
第一种方法:如果你有安装了 Lua 模块的安装和部署工具 LuaRocks,那么一条指令就能安装部署好 LuaSocket:
# luarocks install luasocket
第二种方法:如果没安装有 LuaRocks,也可以源码安装。
先把 LuaRocks 下载下来,当前可用的版本是 luasocket-3.0-rc1(luasocket的源码有托管在Github.com):
# git clone https://github.com/diegonehab/luasocket.git
把源码clone下来之后就可以进行本地源码安装,直接进入到luasocket目录进行编译安装了
# cd luasocket
# make && make install
I. 用TDM-GCC编译Lua源码,如何修改官方Makefile把所有源码编译成一个exe文件,而不生成依赖的dll文件
我使用了windows下的msys做的编译,进入lua源文件的src目录下,把mingw段改成如下:
mingw:
$(MAKE) "LUA_A=lua52.a" "LUA_T=lua.exe" \
"AR=$(AR) -o" "RANLIB=strip --strip-unneeded" \
"SYSCFLAGS=-static" "SYSLIBS=" "SYSLDFLAGS=-s" lua.exe
$(MAKE) "LUAC_T=luac.exe" luac.exe
然后在上一层调用make mingw就可以了