Cobra —— 可视化Python虚拟机

http://blog.csdn.net/balabalamerobert

http://blog.csdn.net/efeics/article/category/1486515  图解python

《Python源码剖析》与Cobra开源项目

2008-07-28 15:52 来自 Hailie

Robert:

为了让这本书的阅读变得更有趣,也为了帮助读者更好地利用这本书,我在Google 
Code上发起了一个旨在可视化Python虚拟机的开源项目——Cobra(http://code.google.com/p/python-cobra/ 
),其目的在于将Python虚拟机在执行一条条字节码指令时的运行时环境,以及虚拟机的状态变化,以可视的形式展现出来,以更加生动形象的方式加深读者对Python虚拟机的理解。

同时,也希望这个项目能成为有兴趣的读者锻炼自己改造Python虚拟机的能力的平台。目前该项目还处于发展初期,目前仅仅实现了一般表达式的可视化,希望感兴趣的朋友能一起加入到这个有趣的项目中来。附件中图片是目前Cobra对简单的一般表达式的可视化效果。

另外,可以通过我的blog(http://blog.csdn.net/balabalamerobert)查看一下这个项目之前的一些信息。

想要运行的朋友可以用svn checkout 
*http*://python-cobra.googlecode.com/svn/trunk/python-cobra-read-only检出代码 
其中包含两个部分: 
1、cobraserver :这个是修改后的Python虚拟机 
2、cobraweb :这个是基于Django和Ajax的前台可视化界面

编译cobraserver后,会得到一个cobra-vm-server.exe,这是服务器端,启动,然后在cobraweb中执行manage.py 
runserver,即可通过web界面与虚拟机端通信,可视化Python虚拟机。

需要注意的是,目前cobraserver只有Windows平台的网络代码,所以目前只能在Windows平台运行。同时,Web前端浏览器最好采用FF2,IE也没问题,但是美观可能不够,FF3改变了 
上载文件的input的value值,所以目前FF3无法正常运作。 
-- 
Robert 
关注Python 关注搜索 
Dynamic Life——http://blog.csdn.net/balabalamerobert

时间: 2024-07-28 15:59:38

Cobra —— 可视化Python虚拟机的相关文章

python虚拟机

翻译自<Python Virtual Machine> Python 虚拟机 每个函数对象都和以下的三个结构: 1.包含参数的局部变量名称(in .__code__.varnames) 2.全局变量名称(in .__code__.co_names) 3.常数(in .__code__.co_consts) 在python定义函数的时候创建这些结构,它们被定义在函数对应的__code__对象. 如果我们定义如下: Def minimum(alist): m=None if let(alist)

《python源码剖析》笔记 Python虚拟机框架

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1. Python虚拟机会从编译得到的PyCodeObject对象中依次读入每一条字节码指令, 并在当前的上下文环境中执行这条字节码指令. Python虚拟机实际上是在模拟操作中执行文件的过程 PyCodeObject对象中包含了字节码指令以及程序的所有静态信息,但没有包含 程序运行时的动态信息--执行环境(PyFrameObject) 2.Python源码中的PyFrameObject

《python源码剖析》笔记 python虚拟机中的一般表达式

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.字节码指令 LOAD_CONST:从consts表中读取序号为i的元素并压入到运行时栈中 STORE_NAME:改变local名字空间.从符号表names取序号为i的元素作为变量名, 取运行时栈的栈顶元素作为变量值,完成从变量名到变量值的映射关系的创建. BUILD_MAP:创建一个空的PyDictObject对象,并压入运行时栈 DUP_TOP:将栈顶元素的引用计数增加1,并将它再次

《python源码剖析》笔记 python虚拟机中的函数机制

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.Python虚拟机在执行函数调用时会动态地创建新的 PyFrameObject对象, 这些PyFrameObject对象之间会形成PyFrameObject对象链,模拟x86平台上运行时栈 2.PyFuctionObject对象 typedef struct { PyObject_HEAD PyObject *func_code: //对应函数编译后的PyCodeObject对象 Py

虚拟机:Python虚拟机的基本了解

探索某个东西,我们需要知道这个东西是用来干什么的,能给我们带来什么,解决了什么样的问题,有什么优缺点等等:简要了解了一下Python虚拟机的特征: 目前有几个疑问: 1.对象 · Python通过对象内存分配的确定性解决了对象与对象之间的内存变化所导致的数据覆盖问题 · 对象的统一性,空间分配性问题 · 类型系统与对象体系 · 变长对象与定长对象的设计(容器) 2.线程,模块,异常 3.垃圾收集机制 PS: 后续补充......

Python虚拟机框架(一)

Python虚拟机中的执行环境 Python的虚拟机实际上是在模拟操作系统运行可执行文件的过程,首先,我们先来讲一下普通的x86的机器上,可执行文件是以一种什么方式运行的. 图1-1 图1-1所展示的运行时栈的情形可以看作是如下的C代码运行时情形: #include <stdio.h> void f(int a, int b) { printf("a=%d, b=%d\n", a, b); } void g() { f(1, 2); } main(int argc, cha

Python虚拟机中的一般表达式(二)

复杂内建对象的创建 在上一章Python虚拟机中的一般表达式(一)中,我们看到了Python是如何创建一个空的字典对象和列表对象,那么如果创建一个非空的字典对象和列表对象,Python的行为又是如何呢?demo2.py里面包含一个字典对象和列表对象,这两个对象都是在初始化时就包含元素,首先,我们看一下对应PyCodeObject中的符号表和常量表 # cat demo2.py i = 1 s = "Python" d = {"1": 1, "2"

Python虚拟机之函数机制(一)

PyFunctionObject对象 在Python中,任何一个东西都是对象,函数也不例外.函数这种抽象机制,是通过一个Python对象--PyFunctionObject来实现的 typedef struct { PyObject_HEAD PyObject *func_code; //编译后的PyCodeObject对象 PyObject *func_globals; //函数运行时的global名字空间 PyObject *func_defaults; //默认参数(tupple或NULL

Python虚拟机之函数机制(二)

函数执行时的名字空间 在Python虚拟机之函数机制(一)这一章中,我们对Python中的函数调用机制有个大概的了解,在此基础上,我们再来看一些细节上的问题.在执行MAKE_FUNCTION指令时,调用了PyFunction_New方法,这个方法有一个参数是globals,这个globals最终将称为与函数f对应的PyFrameObject中的global名字空间--f_globals ceval.c case MAKE_FUNCTION: v = POP(); /* code object *