當前位置:首頁 » 編程軟體 » lua編譯位元組碼

lua編譯位元組碼

發布時間: 2023-03-29 01:47:31

Ⅰ lua 怎麼生成bytecode

用luac 命令編譯你的腳本文件 ,就可以生成編譯後的位元組碼。

Ⅱ lua腳本怎麼編譯成luac

luac xxx.lua

luac產生單個輸出文件,它包含所有給定的源代碼文件的位元組碼。預設時,輸出文件命名為luac.out,但你能通過選項-o改變。

Ⅲ luac文件和lua文件有什麼區別

lua文件是源代碼,是文本文件,它不利於代碼的保護。
luac文件是經lua編譯器翻譯後的位元組碼文件,是二進制碼文件,可直接分享它以利於源碼的保護。

Ⅳ lua虛擬機位元組碼怎麼改變

Lua的位元組碼在意義上等價於cpu的指令碼,但lua本身並沒有慶枯謹那麼多強大復雜的指令,只用了6個位來表示操作碼,這表示lua最多隻有64個操作碼(敗轎實際使用到的還沒有這么多),一個位元組碼由四位元組組成,這些個opcode又可進一步分成四大類,分別是iABC,iABx,iAsBx,iAx,這里i代表opcode,A,B,C分別代表參數,s代表有符號參數。譽基

Ⅳ 編譯的位元組碼比直接發布Lua腳本有多大的性能優勢

1、下載luajit
傳送門:http://luajit.org/download.html
2、安凳手裝luajit
官方:http://luajit.org/install.html
cd LuaJIT-2.0.3
make
sudo make install

3、將lua腳棗塌嫌本編譯成位元組碼

先要cd到src裡面
cd src/
然後輸入命令(文件必須帶上路徑)
./luajit -b 源文衫型件 目標文件

Ⅵ Lua 是怎樣一門語言

Lua是一個簡潔、輕量、可擴展的腳本語言。Lua有著相對簡單的CAPI而很容易嵌入應用中。很多應用程序使用Lua作為自己的嵌入式腳本語言,以此來實現可配置性、可擴展性。

Lua是一種輕量語言,它的官方版本只包括一個精簡的核心和最基本的庫。這使得Lua體積小、啟動速度快。

它用ANSI C語言編寫,並以源代碼形式開放,編譯後的完整參考解釋器只有大約247kB,到5.4.3版本,該體積變成283kB(Linux,amd64),依然非常小巧,可以很方便的嵌入別的程序里。和許多「大而全」的語言不一樣,網路通信、圖形界面等都沒有默認提供。

但是Lua可以很容易地被擴展:由宿主語言(通常是C或C++)提供這些功能,Lua可以使用它們,就像是本來就內置的功能一樣。事實上,現在已經有很多成熟的擴展模塊可供選用。

Lua是一個動態類型語言,支持增量式垃圾收集策略。有內建的,與操作系統無關的協作式多線程支持。Lua原生支持的數據類型很少,只提供了數值(默認是雙精度浮點數,可配置)、布爾量、字元串、表格、函數、線程以及用戶自定義數據這幾種。

但是其處理表和字元串的效率非常之高,加上元表的支持,開發者可以高效的模擬出需要的復雜數據類型(比如集合、數組等)。

Lua是一種多重編程范型的程序設計語言:它只提供了很小的一個特性集合來滿足不同編程范型的需要,而不是為某種特定的編程范型提供繁雜的特性支持。

例如,Lua並不提供繼承這個特性,但是你可以用元表格來模擬它。諸如名字空間、類這些概念都沒有在語言基本特性中實現,但是我們可以用表格結構(Lua唯一提供的復雜數據結構)輕易模擬。正是提供了這些基本的元特性,我們可以任意的對語言進行自需的改造。

Lua實現了少量的高級特徵比如頭等函數、垃圾回收、閉包、正當尾調用、強制(於運行時間在字元串和數值之間自動轉換)、協程(協作多任務)和動態模塊裝載。


實現

Lua程序不是從文本式的Lua文件直接解釋的,而是編譯成位元組碼,接著把它運行在Lua虛擬機上。編譯過程典型的對於用戶是不可見並且是在運行時間進行的,但是它可以離線完成用來增加裝載性能或通過排除編譯器來減少對宿主環境的內存佔用。

Lua位元組碼還可以在Lua之內產生和執行,使用來自字元串庫的mp函數和load/loadstring/loadfile函數。Lua版本5.3.4是用大約24,000行C代碼實現的。

像大多數CPU,而不像多數虛擬機(它們是基於堆棧的),Lua VM是基於寄存器的,因此更加類似真實的硬體設計。寄存器架構既避免了過多的值復制又減少了每函數的指令的總數。Lua 5的虛擬機是第一個廣泛使用的基於寄存器的純VM。

Parrot和Android的Dalvik是另外兩個周知的基於寄存器的VM。PCScheme的VM也是基於寄存器的。

Ⅶ 為什麼用 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");

Ⅷ lua加密腳本需要電腦嗎

lua加密腳本仿雹需要電腦嗎:電腦手機都可笑碧以。lua本身可以使用碰大舉luac將腳本編譯為位元組碼(bytecode)從而實現加密。

Ⅸ cocos2dx-3.6的luajit怎麼了

cocos2d-x中luajit的使用

新版本的cocos2d-x使用了luajit來替代原始的lua,好處一是可以極大的提高運行速度(android下可以開jit,運行速度提高10~60倍,ios下不可以開jit,運行速度也可以提高2~3倍)。 二是luajit編譯的位元組碼現階段來說無法反編譯,也就是說無法破解。 這里對luajit進行詳細的說明。

1、基本使用。這個很簡單,不用修改任何代碼,與lua5.1完全兼容。 對應的頭文件和庫要替換成luajit的(與lua命名相同)

2、發布時編譯成位元組碼。

這個需要luajit.exe的執行文件。 編譯方法(windows): 在(http://luajit.org/download.html)下載源代碼,使用vs的命令行工具,執行msvc.bat進行編譯。 我最開始使用cygwin直接執行make結果出了很多編譯錯誤和詭異的問題。 其實直接使用批處理才是正確的方式。

編譯完成後,要注意luajit.exe和源代碼src/jit文件夾要同時並且匹配使用。否則運行時會出現 "unknown luaJIT command or jit.* moles not installed"的錯誤。

編譯成位元組碼的命令如下: luajit -b 原始文件 輸出文件

更多詳細說明可以直接執行 luajit -b來獲取。 這里還要注意,輸出文件最好保持.lua的擴展名,否則require文件的時候會提示找不到文件。除非require裡面使用的完整名字。

我在編譯位元組碼時還碰到了一個問題,就是無論編譯什麼文件都提示這個 "luajit '=' expected near '<eof>'" ,後來換了luajit的版本後就沒有出現了。可能跟我一開始手欠改了luajit源代碼有關。

3、編譯luajit的靜態庫文件(for android)

編譯位元組碼所用的執行文件和我們開發程序時使用的靜態庫文件要保持版本一致。 windows版本所需要的文件在編譯執行文件時就已經生成。

Ⅹ 怎麼用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"));

熱點內容
鍵盤按f9鍵不可以編譯怎麼調 發布:2025-07-18 00:11:34 瀏覽:311
安卓手機的廣告如何刪除 發布:2025-07-18 00:10:50 瀏覽:105
linux安裝composer 發布:2025-07-18 00:04:52 瀏覽:241
地址存儲器的容量 發布:2025-07-17 23:42:56 瀏覽:167
win7電腦用戶名和密碼在哪裡查詢 發布:2025-07-17 23:39:44 瀏覽:476
安卓手機顏色怎麼變色 發布:2025-07-17 23:26:43 瀏覽:375
java離線安裝 發布:2025-07-17 23:23:31 瀏覽:377
位置伺服器地址是什麼 發布:2025-07-17 23:18:00 瀏覽:841
phpif一行 發布:2025-07-17 23:12:27 瀏覽:730
安裝腳本精靈 發布:2025-07-17 23:11:35 瀏覽:127