Vm Merge |
|
luac 生成 Lua VM 代码,并将两者合并。例如:使用以下代码:
a = {}
b = a.x
print(b)
luac 生成:main <0:@a.lua> (9 instructions/36 bytes at 002F29E8)
0 params, 2 stacks, 0 locals, 4 strings, 0 numbers, 0 functions, 5 lines
1 [2] CREATETABLE 0
2 [2] SETGLOBAL 0 ; a
3 [3] GETGLOBAL 0 ; a
4 [3] GETDOTTED 2 ; x
5 [3] SETGLOBAL 1 ; b
6 [4] GETGLOBAL 3 ; print
7 [4] GETGLOBAL 1 ; b
8 [4] CALL 0 0
9 [4] END
a = {}
CREATETABLE 0
SETGLOBAL 0 ; a
b = a.x
GETGLOBAL 0 ; a
GETDOTTED 2 ; x
SETGLOBAL 1 ; b
print(b)
GETGLOBAL 3 ; print
GETGLOBAL 1 ; b
CALL 0 0
END
<html><pre>
<b>a = {}</b>
CREATETABLE 0
SETGLOBAL 0 ; a
<b>b = a.x</b>
GETGLOBAL 0 ; a
GETDOTTED 2 ; x
SETGLOBAL 1 ; b
<b>print(b)</b>
GETGLOBAL 3 ; print
GETGLOBAL 1 ; b
CALL 0 0
END</pre></html>
注意,以上示例没有行号。您可以在 OptimisationTips 页面找到更多示例。
lua -f vmmerge.lua ...options...lua 和 luac 可执行文件。luac -p -l 用于生成 VM 代码。--fmt merge|html 选择输出格式(见上文)。--nol 移除行号... > file.txt”lua -f vmmerge.lua --file my.lua --fmt html > my.html