2015-04-04 53 views
3

所以,我一直在問,以便爲simpliest代碼的字節碼:的Lua - 使字節碼

print("Hello, world!") 

但我不知道,我似乎怎麼也無法找到如何使任何信息一個......有人可以幫忙嗎?我使用Lua for Windows作爲編譯器。非常感謝

回答

2

你可以從Lua做沒有luac。例如嘗試使用

f=assert(io.open("luac.out","wb")) 
assert(f:write(string.dump(assert(loadfile("foo.lua"))))) 
assert(f:close()) 

如果要編譯的代碼位於字符串中,請使用load(s)

您也可以在下面將文件保存爲luac.lua和命令行運行它:

-- bare-bones luac in Lua 
-- usage: lua luac.lua file.lua 

assert(arg[1]~=nil and arg[2]==nil,"usage: lua luac.lua file.lua") 
f=assert(io.open("luac.out","wb")) 
assert(f:write(string.dump(assert(loadfile(arg[1]))))) 
assert(f:close()) 
+0

這生成了一個luac.out文件。它是否正確? – 2015-04-04 11:20:36

+0

是的,但您可以在腳本中更改名稱。或者使其適應接收輸出文件的名稱爲'arg [2]'。你必須改變第一個'斷言' 。 – lhf 2015-04-04 11:32:34

+0

謝謝你,這幫了我最大的忙。那麼,我只是給他們luac.out文件? – 2015-04-04 11:35:24

4

您可以使用Lua compiler(見luac手動):使用string.dump

# the default output is "luac.out" 
echo 'print("Hello, world!")' | luac - 

# you can execute this bytecode with the Lua interpreter 
lua luac.out 
# -> Hello, world! 
+0

我在哪裏可以下載luac? – 2015-04-04 10:10:11

+0

它正式提供了[Lua源代碼](http://www.lua.org/source/5.3/)。另請參閱包含Windows說明(例如LuaDist)的[安裝部分](http://www.lua.org/start.html)。 – deltheil 2015-04-04 10:37:19