2013-03-02 4 views
4

Je suis à la recherche d'un bon module de génération d'assemblage pour Python. J'ai trouvé celui-ci: PyAsmExiste-t-il un bon module de génération d'assembly pour Python?

Mais ça ne fonctionne pas bien. Je veux exécuter et générer un fichier exécutable d'assemblage pour des opérations simples comme ajouter, sous, diviser et multiplier. Quelque chose comme la bibliothèque Reflection.Emit dans .NET. Je développe sous Linux (Ubuntu 12.10 64bit) et Python2.7.

Par exemple, lorsque je tente de compiler ce simple code sous avec PyAsm il me donne un "Segmentation fault (core dumped)":

from ctypes import c_int 
from pyasm import Program 
from pyasm.instructions import push, mov, ret, pop, sub 
from pyasm.registers import eax, esp, ebp 

def test(): 
    prog = Program(
     push(ebp), 
     mov(ebp, esp), 
     mov(eax, ebp.addr+8), 
     sub(eax, 10), 
     pop(ebp), 
     ret(), 
    ) 
    fun = prog.compile(c_int, [c_int]) 
    assert fun(1234) == 1224 

if __name__ == '__main__': 
    test() 
+0

'Reflection.Emit' dans .NET ne génère pas d'assembly, il génère ILCode. ILCode est exécuté dans la machine virtuelle .net. – Femaref

+1

Plutôt que de demander des recommandations (qui ne sont généralement pas sur le sujet ici), pourquoi ne pas montrer le problème exact que vous avez avec PyASM - les chances sont que quelqu'un peut vous aider à le résoudre et/ou suggérer des alternatives. – Mat

+0

@Femaref, je sais parfaitement ce que fait Reflection.Emit dans .NET. Je voulais dire quelque chose comme ça, mais pour l'assemblage x86. – Seishin

Répondre