AW: [Python-de] Bytecode von Python

Gerson Kurz Gerson.Kurz at t-online.de
Sat Oct 19 22:36:11 EDT 2002


Markus Burrer wirft in die Runde:

> gibt es eigentlich eine Doku zu dem compilierten Code von Python
> Programmen?

http://www.python.org/doc/current/lib/bytecodes.html

fängt schon mal gut an, und dann natürlich das dis modul, das die
entsprechenden #defines (c-speak) enthält. Ansonsten gibts ja auch noch den
Python-Source, der ist relativ lesbar.

> Ich möchten, wenn das überhaupt geht was ich vorhab, einen Interpreter
> (keinen Conpiler) schreiben, der die *.pyc Dateien ausführen kann.
> Gibt es hier Dokus? Hat da jemand Erfahrungen?

Ich habe mal ein kleines Projekt angefangen, Bytecode in lambda-Definitionen
umzuwandeln; wenn ich alles noch zusammenbringe, ist es eine Stackmachine,
sollte also lambdadisierbar sein. Triviales Beispiel:

result = [0,1,2]

entspricht dem Bytecode

          6 LOAD_CONST               1 (0) <--- lambda (1)
          9 LOAD_CONST               2 (1)
         12 LOAD_CONST               3 (2)
         15 BUILD_LIST               3
         18 STORE_FAST               1 (result)

wird zu

lambda: locals.__setitem__(0,( lambda: [(lambda: 0)(), (lambda: 1)(),
(lambda: 2)()])())

(das habe ich jetzt nicht ausprobiert, aber das prinzip ist klar), und schon
ist der Job sicher.

Mit registern = "globalen Variablen" täte ich mich ein bisserl schwerer.
Natürlich rein und ausschliesslich zu dem Zweck, unlesbaren und vermutlich
hoffnungslos ineffizienten Code zu erzeugen. Theoretisch liese sich die
Lambdakodierung des Bytecodes auch wieder auf den Bytecode der Lambdas
anwenden, ad infinitum. Lang leben sinnvolle Projekte!








More information about the Python-de mailing list