Python用の優れたアセンブリ生成モジュールを探しています。私はこれを見つけました: PyAsm
しかし、それはうまく機能していません。add、sub、divide、multiplyなどの簡単な操作のためにアセンブリ実行可能ファイルを実行して生成したいと思います。.NETのReflection.Emitライブラリのようなもの。
Linux(Ubuntu 12.10 64ビット)とPython2.7で開発しています。
たとえば、この単純なサブコードをPyAsmでコンパイルしようとすると、「セグメンテーション違反(コアダンプ)」が発生します。
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()