python中frame是什么意思_Python VM Frame 基本解析
此文诠释基本的 Python 虚拟机结构,以及主要的栈操作和帧调用。
并使用 Go 语言进行代码逻辑复验。
基于栈的虚拟机(Virtual Machine)
Python 是一门解释型语言,也是一门编译型语言,通过编译器把语法树分析成独有的字节码,从而再链接虚拟机执行字节码,而虚拟机整体架构和运行机制仅仅使用栈结构,非常简单理解的数据结构,但是怎么根据栈,字节码,实现变量、函数调用、类调用,是一个非常难以解释的问题。
栈可以理解成一个集合或一个列表,结构如下:Stack
FIFO:First in, First out(先进后出原则)
FILO:First in, Then out(先进先出原则)
其两种栈结构的区别在于:
// FIFOfor (int i = list.length; i > 0; i --) {} // 3 9 2 5// FILOfor (int i = 0; i < list.length; i ++) {} // 5 2 9 3
化简编译流程Process
首先源代码通过编译器(此处省略数个步骤)分析成帧对象,而帧对象内又包括代码对象。
主要结构是代码对象,代码对象内包含字节码列表,常量列表,变量列表,偏移量列表。
字节码偏移量
每个字节码只占用 1 byte,不包括后带的参数,如果有参数,其也占用 1 byte。名称参数作用
CONST1载入常量
LOAD1加载变量
STORE1赋
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
