當前位置:首頁 » 編程軟體 » luajit編譯

luajit編譯

發布時間: 2023-09-16 03:07:55

㈠ lua腳本被luac編譯之後,如何反編譯或者反匯

標準的lua4.01 有「CFLuaDC」工具可以反編譯。
標準的lua5 有 「DisLua」、「luadec」 兩個工具可供選用。
--------以上三個工具在網上可搜索下載。
luajit 編譯的luac 文件 尚無反編譯工具。

㈡ 為什麼用 lua 替換 luajit

1、新建一個名為1.lua的文件春笑或,裡面只有一句話print("Hello Lua"),新建一個空的out.lua腳本文件
2、開始--運行--cmd
3、luac -o out.lua 1.lua
註: luac -o [編譯後腳本名] [腳本名],必要時帶上腳本路徑,如:回車之後,再打開out.lua就可以看到編譯好的位元組碼瞭然後實驗一下,執行這個位元組碼腳本,可以看到lua原生的解釋器可以直接解析luac編譯出來的bytecode腳本,很方便!重點:
做完了以上的一系列之後,我照著這個方法編譯項目中的腳本,然後在cocos2dx環境下使用,發現不行!於是又查了一下資料,發現2dx使用的是luajit,lua原生編譯出來的bytecode和luajit是不兼容的,所以照著上面方法編譯出來的bytecode腳本無法在2dx中使用。
解決這個問題其實很簡單,就是用2dx自帶的luajit編譯lua腳本,下面附上luajit編譯bytecode的方法:
1、在cocos2d-x-2.2.3\scripting\扒伍lua\luajit\LuaJIT-2.0.1\src目錄下有個msvcbuild.bat批處理文件,需要先把luajit.exe這個東西給編譯出來。
2、打開visual studio的命令行工具,這個只要裝了vs都會有,在安裝目錄裡面可以找到。
3、用vs的命令行工具cd到luajit的src目錄
4、執行msvcbuild.bat批處理文件,編譯出luajit.exe編譯完成之後,會在src目錄下生成一系列文件,其中有一個luajit.exe接下來就可以使用luajit.exe編譯lua腳本的bytecode了:luajit -b [腳本名] [編譯後的腳本名],執行完後會在src目錄下生成一個已經編譯成bytecode的jit.lua文件
下面把編譯之後的jit.lua放在2dx中試一下,以HelloLua工程為基礎,把jit.lua放到\samples\Lua\HelloLua\Resources下升早,修改AppDelegate.cpp中的lua調用為std::string path = CCFileUtils::sharedFileUtils()->fullPathForFilename("jit.lua");

㈢ 如何閱讀luajit的代碼

為什麼要看luajit的源碼
作為目前最快的腳本語言之一,luajit確實是一個傑作,但相比原生lua僅僅幾萬行的代碼而言,luajit卻可以說是巨無霸。更要命的是,luajit之所以快,是因為大量使用了機器碼相關的技術,無論是它的機器碼編譯部分,還是位元組碼執行部分,讀起來都非常麻煩。
網上這方面的資料非常少,即使是lua社區的雲風大大也主要以分析原生lua為主,跟luajit有很多不同。萬一遇到了性能坑,或者其他難以解決的問題,需要找到原因,又不能閱讀源碼的話,就只能依賴網上其他人的結論,否則完全無從下手。
調試luajit
萬事的開頭,從能夠自己調試代碼開始
一個能調試的代碼,閱讀起來會遠遠比眼看要清晰得多。
而如果能利用visual studio進行調試,那麼對讀luajit而言還是非常有幫助的,畢竟藉助visual assist的代碼查找,能夠非常快的幫你找到你想了解的東西
luajit下面提供了一個msvcbuild.bat用於編譯luajit,但如果你需要調試的話,可以進行以下幾個步驟:
1.將luajit解壓,比如解壓到LuaJIT-2.1.0-beta2_msvc目錄
2.如果要得到精確的棧,修改LuaJIT-2.1.0-beta2_msvc\src\msvcbuild.bat,搜索/O2,將/O2改為/Od
3.在win64版本的visual studio命令行,執行一次msvcbuild.bat debug,這時會生成luajit.exe,測試一下exe是否正常。
4.用visual studio建立一個命令行工程,例如工程保存在LuaJIT-2.1.0-beta2_msvc\luajitcmd
5.把LuaJIT-2.1.0-beta2_msvc\src下所有.h和.c代碼加入工程
6.把工程的調試路徑設置為
命令:$(ProjectDir)..\..\src\luajit.exe
工作目錄:$(ProjectDir)..\..\src\
7.此時你可以正常按f5下斷點調試了
至於可以調試什麼呢?
最簡單就是寫一個lua文件,require之,執行裡面的代碼,下斷點觀察luajit的行為。
這里必須說明,luajit的執行過程中有兩大部分是沒有.c對應的:
1.有一部分代碼是通過dasm工具生成的,這部分直接通過匯編生成,沒有.c,所以沒有辦法在visual studio調試(其實也可以,但是只能匯編調試)。這些主要是lua虛擬機的代碼(是的,為了快,作者hand tune匯編的方式來寫lua虛擬機)
2.luajit會通過jit模塊編譯一部分代碼變為高度優化的機器碼,這些也是臨時生成的可執行機器碼,你只能在.c看到他們是如何生成的,但執行階段當然是沒有.c對應的。
除此以外,幾乎所有東西都可以直接vs調試:所有的編譯過程、所有的lua標准庫和api、luatable等常規數據結構、profiler,等等
下一步我們會簡單說一下代碼結構,以及結果luajit一些基本原理來說說怎麼閱讀
尤其是luajit的原理,如果對此毫無了解的情況下,閱讀其源碼是十分困難的,因為luajit從編譯到執行的過程,走了很多步,跨越了多個模塊,涉及了三種不同形式的編碼(bytecode, SSA IR, 機器碼),可見其復雜程度。

㈣ 支持中文變數名的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好多了。

㈤ 怎麼用lua compile對lua腳本加密

cmd運行命令:
cocos luacompile -s src/ -d out/ -e -k testKey123456 -b testSign12345 --disable-compile
提示:
D:\zm\Test>cocos luacompile -s src/ -d out/ -e -k testKey123456 -b testSign12345 --disable-compile
通過 luacompile 命令對 lua 文件進行 XXTEA 加密以及編譯為位元組碼的處理。
編譯為位元組碼的功能基於 LuaJIT v2.0.3,所以目前編譯成位元組碼的文件不適用於 iOS 64
位設備。
正在處理 lua 文件。
編譯完成。
編譯成功:我把 out 目錄的名字換成了 src ,原 src 目錄改名叫 src_org
vs 中 加入 這一句:
stack->setXXTEAKeyAndSign("testKey123456", strlen("testKey123456"), "testSign123456", strlen("testSign123456"));

熱點內容
sql語句視圖 發布:2024-11-19 08:30:23 瀏覽:932
ftpjava上傳 發布:2024-11-19 08:30:09 瀏覽:407
蘋果攝像機為什麼比安卓清晰 發布:2024-11-19 08:20:20 瀏覽:830
為什麼安卓手機下載不了微信 發布:2024-11-19 08:19:37 瀏覽:836
android情景分析 發布:2024-11-19 08:19:36 瀏覽:190
系統存儲設備容量 發布:2024-11-19 08:05:28 瀏覽:994
向外訪問 發布:2024-11-19 07:50:21 瀏覽:555
androidbase64圖片 發布:2024-11-19 07:48:45 瀏覽:727
搭建小說網站國外伺服器 發布:2024-11-19 07:42:49 瀏覽:799
在家如何更改網路密碼 發布:2024-11-19 07:36:21 瀏覽:797