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就可以了