Lua эквивалентно Python dis ()? - PullRequest
       14

Lua эквивалентно Python dis ()?

6 голосов
/ 06 октября 2010

В Python у вас есть возможность просматривать скомпилированный байт-код пользовательской функции, используя dis.

Есть ли встроенный эквивалент этого для Lua?

Это было бы действительно полезно!

Ответы [ 4 ]

7 голосов
/ 07 октября 2010

Утилита luac, поставляемая со стандартным lua, может создать список сборок из источника Lua, используя опцию -l. Например, компиляция из источника на stdin:

C:...> echo a=b | luac -l -

main  (3 instructions, 12 bytes at 00334C30)
0+ params, 2 slots, 0 upvalues, 0 locals, 2 constants, 0 functions
        1       [1]     GETGLOBAL       0 -2    ; b
        2       [1]     SETGLOBAL       0 -1    ; a
        3       [1]     RETURN          0 1
C:...> 
5 голосов
/ 06 октября 2010

Chunkspy может быть то, что вы ищете.Цитата с сайта:

ChunkSpy - это инструмент для разборки двоичного фрагмента Lua 5 в подробный список, который затем можно изучить.Его вывод имеет сходство с выходным списком ассемблеров.Я хотел кое-что, что могло бы рассказать мне в мельчайших подробностях, что происходит в бинарном файле Lua, а не только в инструкциях.Он также предназначен для изучения внутренних предметов Lua.

2 голосов
/ 07 октября 2010

Существует также lbci , библиотека инспектора байт-кода.

0 голосов
/ 07 октября 2010

Вы также можете использовать luac -l для компиляции файла lua и вывода разборки.

...