这次简单的补充一下前面类型部分剩下的东西。 首先我们要知道当我们想为lua来编写扩展的时候,有时候可能需要一些全局变量。可是这样会有问题,这是因为这样的话,我们就无法用于多个lua状态(也就是new 多个state). 于是lua提供了三种可以代替全局变量的方法。分别是注册表,环境变量和upvalue。 其中注册表和环境变量都是table。而upva
转载 2024-05-09 16:25:49
111阅读
这次紧接着上次的,将gc类型的数据分析完毕。 谢谢[url=http://www.zhuzhaoyuan.com]老朱[/url]同学的指正,这里CClosure和LClosure理解有误. 先来看闭包: 可以看到闭包也是会有两种类型,这是因为在lua中,函数不过是一种特殊的闭包而已。 [color=red]更新:这里CClosure表示是c函数,
转载 2024-06-28 07:46:45
61阅读
由于没学习和使用过Cocos2D,但出于工作需要,后面将要学习与使用Cocos2D。 第一次使用修改过的Cocos的时候遇到一些Lua文件是加过密的,不能看到源码,但是又可以正常的被Cocos读取执行,通过对Lua的调试可以看到读取到内存中的源码,由于调试工具的限制,无法直接将这些源码保存到磁盘,当然有一个笨办法,就是将能看到源码的文件一个一个地保存到磁盘,在没有更好的办法之前,也只能这样了。这样
转载 2024-04-18 16:06:55
134阅读
工作后,整个人已经比較松懈了。尽管一直在看lua的源代码。可是一直是比較零碎的时间,没有系统的整理,所以还是收获不多。由于近期工作也不是非常忙了,就想整理下lua的源代码学习的笔记。加深下印象,并分享给大家。先说下这系列bolg我会每周更新2-3篇,没有顺序的这些文章都是自己的浅薄的理解。有什么错误,还请各位拍砖赐教。1.关于c语言函数的声明相信大家都知道接口的重要,在lu
转载 2024-04-21 08:43:44
40阅读
1. 栈定义简单的图2.栈元素TValue定义说明3.GC对象定义说明4.gc链表定义5.栈和gc链表的关系答疑解惑总结 这是这个gc系列的第二篇,这一篇主要讲GC用到的数据结构,有助于理解gc的,所以放在前面1. 栈栈就是我们平时写代码接到的lua_State。在实现上是用一个数组实现的。每个成员类型是TValue,看下文详细介绍。这里不打算详细介绍栈的结构和内容,只会介绍和gc相关的一些内容
转载 2024-04-17 10:22:32
84阅读
 目录一、实战篇 - Lua的安装和Makefile二、实战篇 - Lua的API使用三、实战篇 - C语言中实现动态调用Lua一、实战篇 - Lua的安装和Makefile前面的篇章,我们详细的介绍了整个Lua语言的架构和实现原理。Lua是一门C语言编写的脚本语言,非常的轻巧,大部分情况下Lua的使用场景是作为宿主语言存在。web脚本、游戏脚本、物联网等场景。通俗点讲,你可以将Lua
转载 2024-03-02 11:07:35
166阅读
  研究生即将毕业,答辩完成后,这几天有些时间。开始写一些自己的东西,记录自己的学习历程。                                            --前言本着学习和交流的原则,本文的内容仅供参考,而不是权威版本,如有任何问题,欢迎指出。                                            --声明  跨专业考计算机研究生,至今三年已
转载 2024-08-03 16:09:26
32阅读
对于开发来说需要有好的生态开发库来辅助我们快速开发,而 Lua 中也有大多数我们需要的第三方开发库如 Redis、Memcached、Mysql、Http 客户端、JSON、模板引擎等。一些常见的 Lua 库可以在 github 上搜索,https://github.com/search?utf8=%E2%9C%93&q=lua+resty。Redis 客户端lua-resty-redis
转载 2024-04-17 20:50:16
52阅读
#lua table 源码分析 lua使用table的单一结构,既可以做array,又可以成为hash,链表,树等结构,是一种简洁高效的使用形式。即使是对虚拟机来说,访问表项也是由底层自动统一操作的,因而用户不必考虑这种区别。表会根据其自身的内容自动动态地使用这两个部分:数组部分试图保存所有那些键介于1 和某个上限n之间的值。非整数键和超过数组范围n 的整数键对应的值将被存入散列表部分。首先看下t
转载 2024-07-23 08:41:41
72阅读
lua垃圾回收(Garbage Collect)是lua中一个比较重要的部分。由于lua源码版本变迁,目前大多数有关这个方面的文章都还是基于lua5.1版本,有一定的滞后性。因此本文通过参考当前的5.3.4版本的Lua源码,希望对Lua的GC算法有一个较为详尽的探讨。1.Lua垃圾回收算法原理简述lua采用了标记清除式(Mark and Sweep)GC算法,算法简述:标记:每次执行GC时,先以若
关于Lua源码的基础型别、内存分配、字符串存储、垃圾回收机制、table原理等部分,我发现有位仁兄写得相当之好,强烈推荐大家认真阅读下面这篇文章,链接如下: http://simohayha.iteye.com/blog/517748 本文将只对Lua的字节码和虚拟机的运行相关内容做重点分析 .本文将只对Lua的字节码和虚拟机的运行相关内容做重点分析&n
转载 2024-04-01 17:02:39
17阅读
万事开头难,在开始研究lucene就如猫吃乌龟,不知从何下手。承蒙高手点化,有所心得,记之。   对于java一样面向对象的语言来说,几乎每一个java源文件都是有一个个类组成的,即使在知道lucene的工作流程之后,也不好下手,尤其对于对象之间的调用,很是迷茫。   最开始试想寻找lucene的入口点可以从main函数开始,但是,在执行main函数时,并没
转载 10月前
70阅读
/* ** $Id: lua.h,v 1.329 2015/11/13 17:18:42 roberto Exp $ ** Lua - A Scripting Language ** Lua.org, PUC-Rio, Brazil (http://www.lua.org) ** See Copyright Notice at the end of this file */ #ifnde
转载 10月前
24阅读
上一节我们主要关注了tolua自身的初始化流程。本节我们来深入理解tolua是如何实现C#调用lua函数的。先看一个具体的例子,来自tolua自带的工程Examples 03,核心代码如下:public class CallLuaFunction : MonoBehaviour { private string script = @" function luaFunc(
这个文章是导航类,暂时先写个开头,后续慢慢补充Tips:LUA调用C语言接口需求:C语言编写接口,导出给LUA调用C接口形式:typedef int (lua_CFunction)(lua_State L)举例:int add(lua_State* L),即返回值需为int类型,参数只有一个且为lua_State指针类型lua_State:L为LUA调用C接口时提供的指针,通过L的类接口/成员变量
转载 2024-03-19 00:18:27
71阅读
C#源代码->dll->安装包 Lua源代码->安装包Lua源代码可以在客户端直接下载没有编译的过程1.直接用Lua调用C#的方法 使用XLua输出HelloWorld 引入命名空间XLua,声明一个LuaEnv的类的对象,这个类提供了一些方法using System.Collections; using System.Collections.Generic; using Uni
转载 2024-04-23 14:54:52
39阅读
目录一、Lua注册表 - 实现机制l_registry二、Lua注册表 - 初始化init_registry三、Lua注册表 - 设置值lua_setfield四、Lua注册表 - 获取值lua_getfieldLua通过实现全局的注册表,来管理全局变量、C API扩展库的加载等信息。注册表主要通过Table的数据结构进行管理,所以注册表是一个多维数组的结构。本章我们主要讲解Lua的注册表的整体操
转载 2024-03-28 21:46:41
153阅读
0、该模块是Lua数学库math模块的实现,读该模块源码是为了学习Lua与C的API以及注册方法。 1、当在Lua程序中,调用require("math")时,就会调用下面的luaopen_math函数,来注册函数库:    static const luaL_Reg mathlib[] = { {"abs", math_abs},
目录 一、什么是lua二、lua源代码结构三、阅读lua源代码顺序 一、什么是lua1、lua是用C编写的脚本语言,可以在web、游戏、物联网等场景下使用,源代码共1万多行;可以独立编程,可以嵌入到其他语言里面作为一个库使用,从而为应用程序提供灵活的扩展和定制功能。2、lua官方源码下载网址:http://www.lua.org/二、lua源代码结构1、lua语言结构图2、lua源代码都放在src
转载 2023-08-10 18:01:03
202阅读
版本整理日期:2011/3/27对lmathlib.c文件中的函数进行跟调。函数是那个不重要,这里选取math_abs/* lmathlib.c 取出一个TValue,转成整型,然后fabs处理。TValue可能是字符串,也可能就是数字。 luaL_checknumber的行为是必返回一个number值 lua_pushnumber的行为是把结果进行压栈处理,具体怎么处理还不知道 ret
转载 2024-04-09 15:05:15
45阅读
  • 1
  • 2
  • 3
  • 4
  • 5