2010-10-06 34 views
6

En Python, vous avez la possibilité d'afficher le bytecode compilé d'une fonction définie par l'utilisateur à l'aide de dis.Lua équivalent à Python dis()?

Y a-t-il un équivalent intégré à cela pour Lua?

Ce serait vraiment utile!

Répondre

5

Chunkspy peut être ce que vous cherchez. Citant du site:

ChunkSpy est un outil permettant de désassembler un bloc binaire Lua 5 en une liste détaillée qui peut ensuite être étudiée. Sa sortie ressemble à la liste de sortie des assembleurs. Je voulais quelque chose qui puisse me dire en détail ce qui se passe à l'intérieur d'un fichier Lua binaire, pas seulement les instructions. Il est destiné à être un outil pour apprendre les internes Lua ainsi.

7

L'utilitaire luac qui vient avec lua standard peut créer une liste de montage de la source Lua en utilisant son option -l. Par exemple, la compilation de la source sur 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

Vous pouvez également utiliser luac -l pour compiler un fichier lua et la sortie du démontage.

2

Il existe également lbci, une bibliothèque d'inspecteurs de code-bytecode.