文档章节

Lua1.0 代码分析 库

晓寒
 晓寒
发布于 2014/09/01 00:36
字数 226
阅读 260
收藏 5

Lua1.0 代码分析 库
库的代码相对比较简单。这里以数学库为例进行说明。
比如看下这个取绝对值的数学函数

static void math_abs (void)
{
 double d;
 lua_Object o = lua_getparam (1);
 if (o == NULL)
 { lua_error ("too few arguments to function `abs'"); return; }
 if (!lua_isnumber(o))
 { lua_error ("incorrect arguments to function `abs'"); return; }
 d = lua_getnumber(o);
 if (d < 0) d = -d;
 lua_pushnumber (d);
}

函数开始的时候,从栈中取得一个对象(lua_getparam),操作(lua_getnumber 及其它)后结果再压栈(lua_pushnumber)。
基本上库的操作都是这样的一个模式。

strlib iolib 除了实现不同功能上的差异,其它和没有什么新东西。

到此, Lua1.0 已经过了一遍,虽然有的地方比较粗糙。

到 Lua1.1 这个官方第一个公开发行版的时候,再进行比较详细的分析,因为 Lua1.1 有文档可做参考。代码相对来说也完整些。


© 著作权归作者所有

晓寒
粉丝 35
博文 119
码字总数 133745
作品 0
海淀
私信 提问
Lua1.1 公开发布的第一版

Lua1.1 是官方公开发布的第一版,是事实上的第一版 ,也是最早发布的一版。 代码从这里 www.lua.org/ftp/lua-1.1.tar.gz 下载,事实上在 www.lua.org/versions.html 页面,有所有的可以下下载...

晓寒
2014/09/02
333
1
Lua1.0 代码分析 opcode.c

opcode.c 代码分析 Lua1.0 虚拟机的实现,语法分析中生成的字节码交给它 luaexecute 来执行。 这个文件的主要部分就是 luaexecute 函数,而它就是很大的 switch case,Lua1.0 中定义的字节码...

晓寒
2014/08/31
473
0
Lua1.0 代码分析 table.c

table.c 代码分析 全局符号,常量,字符串,关联数组,文件列表的定义。 全局符号: 初始有 5 个基本的符号,Lua 预设的函数和库函数都注册在里面。 常量: 初始的几个常量是 Lua 中 type 的...

晓寒
2014/08/29
262
0
Lua1.0 代码分析 inout.c

inout.c 代码分析 主要看下对于文件的处理 /*** Function to open a file to be input unit.** Return 0 on success or 1 on error.*/int lua_openfile (char *fn){ lua_linenumber = 1; lu......

晓寒
2014/08/28
198
0
Lua1.0 代码分析 hash.c

hash.c 代码分析 Lua 中最重要的一个数据结构及相关操作。 主要看下几个对外的接口。 /*** Create a new hash. Return the hash pointer or NULL on error.*/Hash *lua_hashcreate (unsigne...

晓寒
2014/08/30
693
0

没有更多内容

加载失败,请刷新页面

加载更多

重新开始学Java——反射

概念 reflection:自省 反射:镜子可以反射阳光一个java类 或 对象 通过照"镜子"来认知自己 Java语言中是怎么实现照镜子? java.lang.reflect 包 提供了"照镜子"API(应用程序接口) 如果要...

大家都是低调来的
8分钟前
1
0
爬取720万条城市历史天气数据

内容爬虫完毕,校验完毕,缺失信息暂未统计。总数据720万,地区3200个,年份从2011-2019,大小950Mb,原始数据已丢失,需要的朋友可以自己运行脚本挂一晚上。中间遇到了很多坑,有机会我再写...

八音弦
12分钟前
4
0
python的字典类型

1、新建字典 通过键值对 dict_1 = {'a':1,'b':2,'c':3} 通过dict()函数 list_1 = ['adam', 'bob', 'cathy', 'david', 'emma'] list_2 = [1,2,3,4,5] dict_2 = dict(zip(list_1,list_2)) 2、字......

davidwbnu
14分钟前
1
0
springcloud vue.js 前后分离 activiti工作流

本商品为 :springcloud + Springboot 微服务\分布式 工作流 前后分离 + 跨域 版本 (权限控制到菜单和按钮) 后台框架 :springcloud Greenwich.SR1 + springboot 2.1.4 + activiti6.0.0 + ...

java框架开发者
20分钟前
6
0
【jQuery基础学习】07 jQuery表单插件-Form

本文转载于:专业的前端网站➦【jQuery基础学习】07 jQuery表单插件-Form 作用:jQuery Form插件的作用是为了让我们可以很方便地用ajax的方式提交表单,从而使我们提交表单的时候页面不用进行...

前端老手
29分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部