原文:从lua的c源码了解lua栈结构和函数调用流程

因为实习需要用到lua所以最近在学习lua,在学习过程中我使用C 与lua做交互。正常来说,如果lua要调用C 的函数,C 需要返回一个整数,这个整数的值是这个C 函数需要返回给lua调用的值的个数。这样的做法才是正确的,只是我突然间想了下,如果我返回一个不正确的值会怎样呢 于是我这么做了,然后数据如预料之中变得很不正常。然后我又在想,为什么我返回不正确的值lua会得到这样的数据呢。于是我开始了l ...

2019-05-03 23:14 0 559 推荐指数:

查看详情

lua函数调用

一、问题 和C相比,Lua是一种限制比较松散的语言,这个在函数相关的处理中更加明显。函数可以有多个参数,函数返回值可以被赋值给变量列表(Lua manual中的varlist),函数可以return表达式列表(Lua manual中的explist),这些其实也不是很混乱,问题在于 ...

Thu Mar 07 18:31:00 CST 2019 0 1646
Lua函数调用和协程中,的变化情况

Lua函数调用和协程中,的变化情况 1. lua_call / lua_pcall 对于这两个函数,对栈底是没有影响的——调用的时候,参数会被从中移除,当函数返 回的时候,其返回值会从函数处开始压入,可以通过新的顶减去旧的顶得到返回值数 量 ...

Sat Oct 28 04:56:00 CST 2017 0 1622
lua调用C函数

Lua所用,这样就不愁功能缺失了。 关于C调用Lua,前段时间已经写过一篇短文了:《多语言协作与 ...

Mon May 27 02:11:00 CST 2013 3 7576
C调用Lua函数

我们先来看一个简单的例子: functest.lua:   这其中最关键的是调用函数的使用,在C调用Lua函数的API主要由以下几个: (1)void lua_call (lua_State *L, int nargs, int nresults);  函数调用 ...

Tue Jul 29 01:59:00 CST 2014 0 14173
Lua调用C函数

  Lua利用一个虚拟的堆栈来给C传递值或从C获取值。每当Lua调用C函数,都会获得一个新的堆栈,该堆栈初始包含所有的调用C函数所需要的参数值(Lua传给C函数调用实参),并且C函数执行完毕后,会把返回值压入这个Lua从中拿到C函数调用结果)。   于此相关的C API有几个比较重要的定义 ...

Wed Jul 30 07:25:00 CST 2014 1 37585
还原Lua调用

Lua数据类型 类型 大类型 类型细分 _tt(类型) nil #define LUA_TNIL 0 空 0 布尔 #define LUA ...

Mon Jan 11 07:04:00 CST 2021 0 342
C语言函数调用(二)

5 函数调用约定 创建一个帧的最重要步骤是主调函数如何向中传递函数参数。主调函数必须精确存储这些参数,以便被调函数能够访问到它们。函数通过选择特定的调用约定,来表明其希望以特定方式接收参数。此外,当被调函数完成任务后,调用约定规定先前入的参数由主调函数还是被调函数负责清除 ...

Thu May 29 00:02:00 CST 2014 10 9333
C语言函数调用(一)

程序的执行过程可看作连续的函数调用。当一个函数执行完毕时,程序要回到调用指令的下一条指令(紧接call指令)处继续执行。函数调用过程通常使用堆栈实现,每个用户态进程对应一个调用结构(call stack)。编译器使用堆栈传递函数参数、保存返回地址、临时保存寄存器原有值(即函数调用 ...

Wed May 28 01:01:00 CST 2014 9 31887
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM