Lua5.3 虚拟机指令分析(五)函数调用

本文分析Lua5.3虚拟机中的OP_CLOSURE, OP_CALL, OP_TAILCALL及OP_RETURN指令,探讨Lua中函数调用的过程和特性,包括函数作为一等公民的实现以及不同调用方式的区别。" 102395893,6777677,Mol2vec:无监督学习分子亚结构向量表示,"['化学信息学', '机器学习', 'Python', '分子向量表示', '无监督学习']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Lua5.3 虚拟机指令分析(五)函数调用

OP_CLOSURE

OP_CLOSURE,/*   A Bx    R(A) := closure(KPROTO[Bx])         */

TTcs-Mac-mini:OpCode ttc$ cat tOP_CLOSURE.lua
function f1() end

TTcs-Mac-mini:OpCode ttc$ ./luac -l -l tOP_CLOSURE.lua

main <tOP_CLOSURE.lua:0,0> (3 instructions at 0x7fdcfcc039d0)
0+ params, 2 slots, 1 upvalue, 0 locals, 1 constant, 1 function
    1   [1] CLOSURE     (iABx) [A]0 [U]0    ; 0x7fdcfcc03b80
    2   [1] SETTABUP    (iABC) [A]0 [ISK]256[B]-1[ISK]0[C]0 ; _ENV "f1"
    3   [1] RETURN      (iABC) [A]0 [ISK]0[B]1[ISK]0
constants (1) for 0x7fdcfcc039d0:
    1(idx)  "f1"
locals (0) for 0x7fdcfcc039d0:
upvalues (1) for 0x7fdcfcc039d0:
    0    _ENV(name)      1(instack)      0(idx)

function <tOP_CLOSURE.lua:1,1> (1 instruction at 0x7fdcfcc03b80)
0 params, 2 slots, 0 upvalues, 0 locals, 0 constants, 0 functions
    1   [1] RETURN      (iABC) [A]0 [ISK]0[B]1[ISK]0
constants (0) for 0x7fdcfcc03b80:
locals
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值