近期在企图重写pvm,分析字节码的时候看到了call_function字节码一共有三个变体(CALL_FUNCTION, CALL_FUNCTION_KW和CALL_FUNCTION_EX),手册看了半天没看懂,于是就开始dis(反编译工具)
可以看出,调用函数实际上就是先压入函数名,再压入参数,最后CALL_FUNCTION 2,
(为什么说压入,是因为虚拟机结构基础是个栈)
然后再看函数内部
可以发现这里直接load_fast加载了a和b&
近期在企图重写pvm,分析字节码的时候看到了call_function字节码一共有三个变体(CALL_FUNCTION, CALL_FUNCTION_KW和CALL_FUNCTION_EX),手册看了半天没看懂,于是就开始dis(反编译工具)
可以看出,调用函数实际上就是先压入函数名,再压入参数,最后CALL_FUNCTION 2,
(为什么说压入,是因为虚拟机结构基础是个栈)
然后再看函数内部
可以发现这里直接load_fast加载了a和b&