2010-10-06 16 views
6

In Python haben Sie die Möglichkeit, den kompilierten Bytecode einer benutzerdefinierten Funktion mit dis anzuzeigen.Lua entspricht Python dis()?

Gibt es für Lua ein entsprechendes Äquivalent?

Es wäre wirklich nützlich!

Antwort

5

Chunkspy könnte das sein, was Sie suchen. Zitat aus der Website:

ChunkSpy ist ein Tool zum Zerlegen eines Lua 5 Binary Chunk in eine ausführliche Auflistung, die dann untersucht werden kann. Seine Ausgabe ähnelt der Ausgabe von Assembler. Ich wollte etwas, das mir sehr detailliert erklären kann, was in einer Lua Binary Chunk-Datei passiert, nicht nur die Anweisungen. Es soll auch ein Werkzeug sein, um Lua-Interna zu lernen. mit seiner -l Option

7

Das luac-Dienstprogramm, das mit Standard-lua kommt, kann eine Assembly Auflistung von Lua Quelle erstellen. Zum Beispiel die Erstellung von Quelle auf 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:...> 
0

Sie auch luac -l können die Demontage einer lua-Datei und Ausgabe zu kompilieren.

2

Es gibt auch lbci, eine Bytecode-Inspektorbibliothek.