python编译汇编_pyasm for python2.5中嵌汇编所需模块下载

你的位置:

问答吧

-> PHP进阶

-> 问题详情

pyasm for python2.5中嵌汇编所需模块下载

本帖最后由 极品黑公子 于 2009-4-24 14:40 编辑

/**

* 总结者:极品黑公子

* QQ:407802734

* ----------------------出来混总是要还的

*/

pyasm在官网中提供到python2.4的模块

为了能用在python2.5中需重新编译

因无人重编

浪费半天时间装环境搞定

丢在这里,以备后人用 2009-04-24

延用命名习惯打包成pyasm_python2.5.rar

解压后将pyasm放到python环境下的

Lib\site-packages中即可

嵌汇编的用法见其官网

http://members.verizon.net/~olsongt/usersGuide.html

编译过程如下:

安装mingw32 -- 即minGW(5.1.4版本号)

工具从sf下载

http://sourceforge.net/project/showfiles.php?group_id=2435

设置其环境变量

lib bin include 都放在PATH中即可

CMD中命令如下

D:\pyasm>python setup.py build -c mingw32

D:\pyasm>python setup.py build -c mingw32 install

编译成功后

将lib.win32-2.5包下的pyasm包拷至python下的Lib\site-packages即可

简单的用法 来源于网上,已保留作者版权

[php]

# -*- 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, STDCALL, PYTHON

from pyasm.x86cpToMemory import CpToMemory

def main():

a = assembler()

a.ADStr("in_fmt", "ii\0")

a.ADStr("out_fmt", "i\0")

a.AP("sum", PYTHON)

a.ARG("self")

a.ARG("args")

a.AddLocal("x")

a.AddLocal("y")

#a.AI("INT 3")

a.AI("LEA EAX, x")

a.AI("PUSH EAX")

a.AI("LEA EAX, y")

a.AI("PUSH EAX")

a.AI("PUSH in_fmt")

a.AI("PUSH args")

a.AI("CALL PyArg_ParseTuple")

a.AI("ADD ESP, 0xC")

a.AI("MOV EAX, x")

a.AI("MOV EBX, y")

a.AI("ADD EAX, EBX")

a.AI("PUSH EAX")

a.AI("PUSH out_fmt")

a.AI("CALL Py_BuildValue")

a.AI("ADD ESP, 0x8")

a.EP()

mem = CpToMemory(a.Compile())

mem.MakeMemory()

mem.BindPythonFunctions(globals())

print sum(1, 2)

print sum(2, 2)

if __name__ == "__main__":

main()

[/php]

输出结果:

Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on win32

Type "copyright", "credits" or "license()" for more information.

****************************************************************

Personal firewall software may warn about the connection IDLE

makes to its subprocess using this computer's internal loopback

interface.  This connection is not visible on any external

interface and no data is sent to or received from the Internet.

****************************************************************

IDLE 1.2.1      ==== No Subprocess ====

>>>

>>>

>>>

>>>

3

4

>>>

pyasm for python2.5模块见附见:

pyasm_python2.5.rar (40.22 KB)

下载次数:0

2009-4-24 14:28

作者: 极品黑公子

发布时间: 2009-04-24

很好!职业帮顶!

作者: longtan

发布时间: 2009-04-24

很好!职业帮顶!

longtan 发表于 2009-4-24 14:54你是专业卖广告吧!嘻嘻!!

作者: liexusong

发布时间: 2009-04-24

不错 。。。 可惜与PHP无关。。。。

作者: kakashilw

发布时间: 2009-04-24

python能不能调用win32API啊..如果可以又可以做外挂了.. = =

作者: TankMe

发布时间: 2009-04-24

啥东西没看懂。。。

作者: klaxon

发布时间: 2009-04-25

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PeachPy 是一个用于编写高性能汇编内核的 Python 框架,可在汇编中编写模块。 它自动化了一些细节,并允许使用 Python 生成重复的汇编代码序列。PeachPy 旨在简化编写优化的汇编内核,同时保留传统的汇编所有优化机会。一些特性:用于 Windows,Unix 和 Golang 程序集的通用汇编语法.PeachPy 可以直接生成 ELF,MS COFF 和 Mach-O 对象文件以及 Golang 工具链的汇编列表自动适应不同的调用约定和 ABIs用于不同平台的功能可以从汇编相同的源生成支持 Microsoft x64 ABI, System V x86-64 ABI (Linux 和 OS X), Linux x32 ABI, Native Client x86-64 SFI ABI, Golang AMD64 ABI, Golang AMD64p32 ABI自动分配寄存器PeachPy 是灵活的,而且允许在同一代码中混合自动分配寄存器和硬编码寄存器汇编编程中常规任务的自动化:函数 prolog 和 epilog 由 PeachPy 生成数据常量的重复数据删除 (e.g. Constant.float32x4(1.0))分析在函数中使用的 ISA 扩展支持 x86-64 指令,最高可达 AVX-512 和 SHA包含 3dnow! , XOP, FMA3, FMA4, TBM 和 BMI2.不包括 x87 FPU 和大多数系统指令使用自动生成的测试 auto-generated tests 进行严格测试,以生成与 binutils 相同的操作码自动生成元数据文件具有模块依赖性的Makefile (-MMD 和-MF 选项)C 头文件生成的函数JSON 格式的函数元数据基于 Python 的元编程和代码生成多个指令流的复用(有助于软件流水线)兼容 Python 2 和 Python 3,CPythonPyPy在线 DEMO: PeachPy.IO 标签:PeachPy
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值