11

是否可以将 Python 程序转换为IEEE-694等微处理器标准汇编语言?汇编语法接近这个 或另一个:http ://www.ethicalhacker.net/content/view/152/2/

4

3 回答 3

14

将 python 编译为 C,然后使用您选择的 C 编译器将其编译为汇编。

或者,使用PyPy,将 LLVM 指定为目标,并使用LLVM 静态编译器为您的目标架构生成汇编语言。

于 2012-05-18T22:14:13.877 回答
7

与 C、FORTRAN、COBOL 等不同。支持 lambda 演算或自动内存管理的语言不能直接编译为汇编。然而,解释器可以在微码或引导程序中提供,以弥合差距并允许“编译”Python、LISP 等(某些操作,如垃圾收集,仍然在打包到编译的二进制文件。)

于 2012-05-18T23:19:40.560 回答
5

由于 Python 是一种动态类型语言,因此只有在汇编程序使用 Python 的运行时环境/库来动态获取对象时,这才有可能。

所以只有一些开销才有可能。

但是PyPy项目中有 RPython 。它是 Python 语言的一个受限子集(它不再是动态类型的,并且缺少 Python 标准库中的大多数模块)。RPython 程序可以翻译成机器代码(AFAIK 它生成 C 代码作为中间代码)。

Python 本身为其虚拟机生成中间代码。如果您想查看此代码,请使用 Python 标准库中的dis模块。这会生成 Python 函数的类似程序集的表示。请记住,“真正的”微处理器将无法使用它,并且结果可能会随着您使用的 Python 版本而改变。

于 2012-05-18T22:20:03.240 回答