Lua
文章平均质量分 51
zry963
GitHub:https://github.com/zry963
展开
-
Lua中的字符串--读《Lua设计与实现》笔记
概述表示字符串的最主要的两个数据: 1.字符串的长度 2.指向存放字符串内存数据的指针Lua中的字符串1.在Lua虚拟机中存在一个全局的数据区,用来存放当前系统中的所有字符串2.同一个字符串数据,在Lua虚拟机中只可能有一份副本,一个字符串一旦创建,将是不可变更的3.变量存放的仅是字符串的引用,而不是其实际的内容lua字符串的有点在于:1、空间优化,...原创 2018-06-13 16:01:20 · 272 阅读 · 0 评论 -
Lua虚拟机执行流程--读《lua设计与实现》笔记
Lua虚拟机解释性脚本语言与编译型语言区别:由于每个脚本语言都有自己的一套字节码,与具体的硬件平台无关,所以不用修改脚本代码,就能运行在各个平台上。硬件、软件平台的差异都由语言自身的虚拟机解决由于脚本语言的字节码需要由虚拟机执行,而不像机器代码这样能够直接执行,所以运行速度比编译型语言差不少虚拟机需要完成如下工作:将源代码编译成虚拟机可以识别执行的字节码为函数调用准备调用栈内部维持一个IP(指令指...原创 2018-06-27 12:07:06 · 492 阅读 · 0 评论 -
Lua中的表--读《Lua设计与实现》笔记
概述1.Lua语言用表来表示一切数据结构。2.Lua表分为数组和散列表部分。 数组部分索引从1开始。 散列表部分可以存储任何不能存储在数组部分的数据,唯一的要求是键值不能为nil数据结构(lobject.h)typedef struct Table { CommonHeader; lu_byte flags; /* 1<<p means tagmethod(p)...原创 2018-06-20 17:08:43 · 757 阅读 · 0 评论 -
浅析Lua中table的遍历
转自:http://blog.51cto.com/rangercyh/1032925当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是:for key, value in pairs(tbtest) do XXX end for key, value in ipairs(tbtest) do ...转载 2018-06-20 17:22:59 · 190 阅读 · 0 评论 -
Lua虚拟机中的数据结构与栈--读《lua设计与实现》笔记
由上一篇文章可知解释器分析Lua文件之后生成Proto结构体,最后到luaV_execute函数中依次取出指令来执行。每个lua虚拟机对应一个lua_State结构体,它使用TValue数组来模拟栈,主要包括与栈相关的成员:stack:栈数组的起始位置base:当前函数栈的基地址top:当前栈的下一个可用位置这些成员的初始化操作在stack_init函数中完成。lua_State里面存放的是一个L...原创 2018-06-27 14:54:05 · 723 阅读 · 0 评论 -
ChunkSpy的使用,解析luac编译后的二进制文件
使用的lua5.1,可在https://github.com/zry963/lua5.1 下载ChunkSpy就是一个lua文件,https://github.com/zry963/LuaAssemblyTools 在etc文件夹下的ChunkSpy.lua文件Mac上编译Lua源文件: 终端进入lua所在的文件夹下,输入make,如下图: 输入 make macosx,如下图:...原创 2018-06-28 14:19:57 · 4068 阅读 · 1 评论