2016-07-02 1 views
1

Hé les gars, j'ai une question à propos du faisceau du format de fichier bytecode. Que sont {label, 1} et {line, 1} pour les instructions?Beam bytecode instructions

Et quelqu'un a un bon site/feuille où je peux lire au sujet des dossiers de faisceau d'inversion?

Merci

Répondre

1

De Erlang de compile module documentation:

Notez que le format des fichiers assembleur n'est pas documenté, et peut changer entre les versions.

Cela dit, l'instruction label marque un emplacement pour branchement aux appels et, et l'instruction line fournit l'emplacement de la source et le numéro de ligne. Vous pouvez rechercher le Abstract Format documentation.

+0

Okey, merci. Une autre question: avez-vous une idée de comment je peux convertir le bytecode en un fichier .beam, ou exécuter le bytecode manipulé en quelque sorte? – QDA

+1

@QDA: demandez-vous comment compiler assembleur à faisceau? Stockez simplement le code de l'assembleur dans un fichier '.S' et utilisez' erlc' pour le compiler dans un fichier '.beam'. –

+0

oui exactement. J'ai décompilé le fichier beam avec le fichier: write_file ("/ tmp/mon_beamfile_disasm", io_lib: fwrite ("~ p. \ N", [beam_disasm: fichier (mon_beamfile)])). Après j'ai essayé ce que vous avez dit: erlc my_beamfile_disasm.S mais j'ai eu une erreur. La raison de l'accident erlc imprime est: raison de l'accident: badarg. Qu'est-ce que je fais mal? – QDA