http://members.verizon.net/~olsongt/usersGuide.html
其实很久之前就发现了PyAsm,但是初期的尝试并不成功。官方网站并没有给太多的例子,刚开始也没有完全搞懂PyAsm的原理。昨天又突然想起
PyAsm来,终于有了发现。要用好PyAsm首先要了解PyAsm,根据我的不完全理解,PyAsm中的汇编代码应该是被编译成了Python扩展,然
后读入内存,并执行。这样,如何通过PyAsm在Python中使用汇编也就比较清晰了。其实就是将汇编代码作为Python的扩展函数来写。
初次尝试PyAsm失败就是因为没法处理传入的参数,当时没有搞清楚,只是简单的使用!ARG来获取参数,而实际上PyAsm所编译的函数应当是
Python扩展函数的原型即static PyObject * ext_func(PyObject *self, PyObject
*args),主要有两个参数self和args,其中args就是传入的参数列表,需要用Python API
PyArg_ParseTuple来解析。
同样,PyAsm中的函数返回值则需要用Py_BuildValue来创建。
好,下面给出一个简单sum函数,求两个参数之和。
# -*- coding:utf-8 -*-
# file: test.py
# by: bluebanboom 0(0
# mail: bluebanboom@gmail.com ~
# date: 2008-11-06
# note:
import pyasm.excmem
from pyasm.x86asm import assembler, CDECL