Lua equivalente a Python dis()?
bytecode disassembly (4)
En Python tiene la capacidad de ver el código de bytes compilado de una función definida por el usuario usando dis
.
¿Hay un builtin equivalente a esto para Lua?
¡Sería realmente útil!
La utilidad luac
que viene con lua estándar puede crear una lista de ensamblaje desde la fuente Lua usando su opción -l
. Por ejemplo, compilar desde la fuente en 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:...>
También hay lbci , una biblioteca de inspectores de códigos de bytes .
También puede usar luac -l
para compilar un archivo lua y generar el desensamblaje.
Chunkspy podría ser lo que estás buscando. Citando desde el sitio:
ChunkSpy es una herramienta para desmontar un fragmento binario de Lua 5 en una lista detallada que luego se puede estudiar. Su salida se asemeja a la lista de salida de ensambladores. Quería algo que me diga con gran detalle lo que sucede dentro de un archivo binario Lua, no solo las instrucciones. Está destinado a ser una herramienta para aprender también los internos de Lua.