任意のバイトコードの実行
ctypesでのアセンブラは全く相手にされないのでpythonバイトコードを実行する方も書いておく。
pythonバイトコードを実行してみる。
from types import CodeType, FunctionType """ 2 0 LOAD_CONST 1 ('Hello!') 3 PRINT_ITEM 4 PRINT_NEWLINE 5 LOAD_CONST 0 (None) 8 RETURN_VALUE """ b = 'd\x01\x00GHd\x00\x00S' code = CodeType(0, 0, 1, 0x01|0x02|0x40, b, (None, "Hello!"), (), (), __file__, '', 1, '\x00\x01') exec code f = FunctionType(code, globals()) f()
まあpythonistaは出来て当たり前だよな。
追記:
引数付きのケースも書いておく
from types import CodeType, FunctionType b = '|\x00\x00GHd\x00\x00S' code = CodeType(1, 1, 1, 0x01|0x02|0x40, b, (None, ), (), ('text',), __file__, '', 1, '\x00\x01') f = FunctionType(code, globals()) f("Hello!")