yyqng

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2021年5月3日

摘要: 6.3.1 创建表 创建一个空表,测试代码为: local p = {} --filename 使用ChunkSpy反编译出来的结果: ; function [0] definition (level 1) ; 0 upvalues, 0 params, 2 stacks .function 0 0 阅读全文
posted @ 2021-05-03 12:03 zziii 阅读(77) 评论(0) 推荐(0) 编辑

2021年4月24日

摘要: 1. GDB Tutorial (1). 编译时加 -g 选项生成gdb所需的调试信息: gcc [other flags] -g <source files> -o <output file> (2). 显示代码信息 $gdb program (gdb) list #向后显示源码信息 (gdb) 阅读全文
posted @ 2021-04-24 10:21 zziii 阅读(171) 评论(0) 推荐(0) 编辑

2021年4月14日

摘要: 6.1 Lua词法 语言的解析一般是两遍遍历的过程,第一遍生成AST,第二遍将AST翻译为字节码。 Lua使用一遍扫描代码文件的方式生成字节码,以加快解释执行的速度。但缺点是代码比较难以理解。如 dostat -> DO block END 函数 -> 终结符 语法块 终结符 6.2 赋值类指令 - 阅读全文
posted @ 2021-04-14 22:25 zziii 阅读(137) 评论(0) 推荐(0) 编辑

2021年2月28日

摘要: 第27章 C语言API总览 lua.h(前缀 lua_): 声明了 Lua 提供的基础函数,其中包括创建新 Lua 环境的函数、调用 Lua 函数的函数等等。 lauxlib.h(前缀 luaL_): 辅助库( auxiliary library) 使用 lua.h 提供的基础 API 来提供更高层 阅读全文
posted @ 2021-02-28 23:32 zziii 阅读(255) 评论(0) 推荐(0) 编辑

摘要: 第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} 阅读全文
posted @ 2021-02-28 16:35 zziii 阅读(64) 评论(0) 推荐(0) 编辑

2021年2月21日

摘要: 第9章 闭包 在Lua语言中,函数是严格遵循词法定界(可以访问包含其自身的外部函数中的变量)的第一类值(如数值和字符串)。 在 Lua 语言中,所有的函数都是匿名的。函数名实际上指的是保存该函数的变量。像函数 table.sort 这样以另一个函数为参数的函数,称为高阶函数。 local fact1 阅读全文
posted @ 2021-02-21 22:33 zziii 阅读(87) 评论(0) 推荐(0) 编辑

2021年1月31日

摘要: 前言(Programming in Lua(4th) 内容基于 Lua 5.3) 虽然在某些方面 Lua 与其他语言有着共同的特色,但下面这些特征是 Lua 特有的: 1. 可扩展;2. 简明;3. 高效;4. 可移植 Lua 使用者分为三大类: 1. 在应用中嵌入地使用;2. 单独使用 ;3. 和 阅读全文
posted @ 2021-01-31 10:07 zziii 阅读(210) 评论(0) 推荐(0) 编辑

2021年1月23日

摘要: 5.1 Lua执行过程概述 脚本语言处理代码生成字节码,让虚拟机执行。硬件平台的差异由虚拟机解决,因此相同的代码可以运行在不同的操作系统、硬件平台上。 Lua是基于寄存器虚拟机的编程语言,这里的寄存器并不是物理意义上的寄存器,而是某个物理内存地址。 相比于基于栈的虚拟机,Lua只需一条指令即可执行加 阅读全文
posted @ 2021-01-23 22:41 zziii 阅读(297) 评论(0) 推荐(0) 编辑

2021年1月19日

摘要: 使用表来统一表示Lua中的一切数据,是Lua区分其他语言的一个特色。 Lua表分为数组(索引从1开始)和散列表两个部分,可以模拟其他各种数据--数组、链表、树等。 4.1 表的数据结构 //llimits.h:27 typedef unsigned char lu_byte; //ltm.h:18 阅读全文
posted @ 2021-01-19 23:48 zziii 阅读(117) 评论(0) 推荐(0) 编辑

摘要: 3.1 概述 字符串在Lua中是不可变的数据。每当使用不存在的字符串时,就会创建一份新的数据,创建之后是不可更改的。 3.2 字符串实现 //luaconf.h:595 // 用于8字节对齐 #define LUAI_USER_ALIGNMENT_T union { double u; void * 阅读全文
posted @ 2021-01-19 07:10 zziii 阅读(97) 评论(0) 推荐(0) 编辑