摘要:
6.3.1 创建表 创建一个空表,测试代码为: local p = {} --filename 使用ChunkSpy反编译出来的结果: ; function [0] definition (level 1) ; 0 upvalues, 0 params, 2 stacks .function 0 0 阅读全文
摘要:
6.3.1 创建表 创建一个空表,测试代码为: local p = {} --filename 使用ChunkSpy反编译出来的结果: ; function [0] definition (level 1) ; 0 upvalues, 0 params, 2 stacks .function 0 0 阅读全文
摘要:
1. GDB Tutorial (1). 编译时加 -g 选项生成gdb所需的调试信息: gcc [other flags] -g <source files> -o <output file> (2). 显示代码信息 $gdb program (gdb) list #向后显示源码信息 (gdb) 阅读全文
摘要:
6.1 Lua词法 语言的解析一般是两遍遍历的过程,第一遍生成AST,第二遍将AST翻译为字节码。 Lua使用一遍扫描代码文件的方式生成字节码,以加快解释执行的速度。但缺点是代码比较难以理解。如 dostat -> DO block END 函数 -> 终结符 语法块 终结符 6.2 赋值类指令 - 阅读全文
摘要:
第27章 C语言API总览 lua.h(前缀 lua_): 声明了 Lua 提供的基础函数,其中包括创建新 Lua 环境的函数、调用 Lua 函数的函数等等。 lauxlib.h(前缀 luaL_): 辅助库( auxiliary library) 使用 lua.h 提供的基础 API 来提供更高层 阅读全文
摘要:
第18章 迭代器和泛型for 18.1 迭代器和闭包 首先编写一个简单的迭代器 -- 工厂 local values = function(t) local i = 0 return function() i = i + 1; return t[i] end end t = {10, 20, 30} 阅读全文
摘要:
第9章 闭包 在Lua语言中,函数是严格遵循词法定界(可以访问包含其自身的外部函数中的变量)的第一类值(如数值和字符串)。 在 Lua 语言中,所有的函数都是匿名的。函数名实际上指的是保存该函数的变量。像函数 table.sort 这样以另一个函数为参数的函数,称为高阶函数。 local fact1 阅读全文
摘要:
前言(Programming in Lua(4th) 内容基于 Lua 5.3) 虽然在某些方面 Lua 与其他语言有着共同的特色,但下面这些特征是 Lua 特有的: 1. 可扩展;2. 简明;3. 高效;4. 可移植 Lua 使用者分为三大类: 1. 在应用中嵌入地使用;2. 单独使用 ;3. 和 阅读全文
摘要:
5.1 Lua执行过程概述 脚本语言处理代码生成字节码,让虚拟机执行。硬件平台的差异由虚拟机解决,因此相同的代码可以运行在不同的操作系统、硬件平台上。 Lua是基于寄存器虚拟机的编程语言,这里的寄存器并不是物理意义上的寄存器,而是某个物理内存地址。 相比于基于栈的虚拟机,Lua只需一条指令即可执行加 阅读全文
摘要:
使用表来统一表示Lua中的一切数据,是Lua区分其他语言的一个特色。 Lua表分为数组(索引从1开始)和散列表两个部分,可以模拟其他各种数据--数组、链表、树等。 4.1 表的数据结构 //llimits.h:27 typedef unsigned char lu_byte; //ltm.h:18 阅读全文
摘要:
3.1 概述 字符串在Lua中是不可变的数据。每当使用不存在的字符串时,就会创建一份新的数据,创建之后是不可更改的。 3.2 字符串实现 //luaconf.h:595 // 用于8字节对齐 #define LUAI_USER_ALIGNMENT_T union { double u; void * 阅读全文
|