LuaJIT源码分析(一)搭建调试环境 众所周知,LuaJIT是一个针对lua编程语言的即时编译器(JIT,Just-In-Time Compiler),它执行lua代码的速度相当的快。而网络上关于LuaJIT源码的资料相当地少,只能自己开一个坑,从头开始阅读了。万事开头难。想要分析源码,第一步肯定是要先搭建一个可以调试源码的环境出来。然而,就连这个第一步,网络上可参考的内容也很有限,大概是Lu
1.全局环境_GLua将所有的全局变量保存在一个常规的table中,这个table被称为全局环境,并且将这个table保存在一个全局变量_G中,也就是说在脚本中可以用_G获取这个全局table,并且_G._G 和 _G是等价的,在默认情况,Lua在全局环境_G中添加了标准库比如math、函数比如pairs、print等2.局部环境_ENV编译器在编译所有代码段(chunk)前,在外层创建局部变量_
转载
2024-09-20 15:13:27
109阅读
lua源码学习笔记1. lua1) 基本数据类型2)lua是动态语言,提供了虚拟机;最终代码是以字节码的形式由解释器执行3)闭包4) lua和C的相互调用5) 协程6) 元表2. lua数据类型分析1) string2) userdata3) table4) 总结 1. lua1) 基本数据类型nil,number,string,userdata,function,thread,boolean,
转载
2024-09-29 20:07:13
482阅读
目录一、Lua注册表 - 实现机制l_registry二、Lua注册表 - 初始化init_registry三、Lua注册表 - 设置值lua_setfield四、Lua注册表 - 获取值lua_getfieldLua通过实现全局的注册表,来管理全局变量、C API扩展库的加载等信息。注册表主要通过Table的数据结构进行管理,所以注册表是一个多维数组的结构。本章我们主要讲解Lua的注册表的整体操
转载
2024-03-28 21:46:41
153阅读
这里只是列举了lua当中用到的c 语言的知识1. lua_KFunction这个类似c#中的委托 类型是lua_KFunction ,参数是后面三个比如 定义一个 lua_KFunction func1,就等于 声明了一个函数 int *func1 (lua_State,int,lua_KContext)2. char**ag
转载
2024-03-22 15:49:22
157阅读
好久没有在网上留言了。。。 背景介绍因为工作的需要,后台svr要能够动态修改更新,使用C当然没有问题,问题就在于修改源码后,需要重启服务。所以就想到在C里能够嵌入一种脚本,最好是和C无缝结合的。因此就想到使用到LUA,LUA的大名圈内人士应该早有耳闻,只不过一直没有机会接触。机缘巧合,有幸一见。 俗话说得好,耳闻不如一见。LUA使用起来还是很简单的,语法和普通的脚
转载
2024-03-31 12:07:14
73阅读
版本整理日期: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阅读
【zz】http://mobile.51cto.com/iphone-286254.htm 关于LUA源代码分析学习教程是本文要介绍的内容,主要是来学习lua中关于源码的内容,具体内容来看本文详解。 原文是英文版的,利用一点时间翻译成中文的。希望bina大虾指点一二。 1. ldebug.c - 调试接口:包含访问调试钩子的函数(lua_sethook/lua_gethook/lua_g
转载
2024-05-08 15:12:41
122阅读
一步步调试,在lparser.c文件中luaY_parser函数是语法分析的重点函数,词法分析也是在这个过程中调用的。在这个过程中,用到一些数据结构,下面会详细说。 Proto *luaY_parser (lua_State *L, ZIO *z, Mbuffer *buff, const char *name) {
struct LexState lexstate;
str
转载
2024-04-10 20:17:31
54阅读
从1.5版本开始,jQuery加入了Deferred功能,让事件处理队列更加的完善。并用 这个机制重写了Ajax模块。虽然还没轮到Ajax,但是接下来的事件处理函数中牵扯到了 这个机制,所以提前看这段代码。Deferred把回调函数注册到一个队列中,统一管理,并且可以同步或者异步地调用 这些函数。jQuery.Deferred()用来构造一个Deferred对象。该对象有状态值,共有三种: Rej
转载
2024-09-10 15:05:33
10阅读
Python获取命令实时输出-原样彩色输出并返回输出结果的示例经试验显示效果不错。#!/usr/bin/python3
# -*- coding: utf-8 -*-
import os
import subprocess# 与在命令窗口执行显示效果相同,如有彩色输出可保留,但不能返回结果
def run(command):
subprocess.call(command, shell=True)
转载
2023-09-05 11:45:58
156阅读
lua中可以这样赋值:
local a = 0;
local b = 1;
转载
2024-04-24 16:27:25
28阅读
我们在使用lua的时候一定觉得这门语言很高级,什么都不用去处理而且速度很快,超过了一般的脚本语言,这是因为其实lua内部是由c来管理内存的分配和释放的,用起来有点像java的垃圾回收器一样,但完全不是一个东西,看过lua源码的人都知道,它是自己建立了一套lua内存管理机制的,由
转载
2024-03-25 08:21:21
36阅读
先来看lua中值的表示方式。
Java代码
#define TValuefields Value value; int tt
typedef struct lua_TValue {
TValuefields;
} TValue; 其中tt表示类型,value也就是lua中对象的表示。
Java代码
typedef union {
GCObjec
转载
2024-08-20 13:38:53
18阅读
随着 .NET 全平台战略的推进,微软正在让以 C# 为先锋的 .NET 拥有跨平台特性。这个过程中一直有人想知道其它 .NET 语言对跨平台的支持有什么改进,熟悉 C# 但是喜欢用 VB 的我也不例外。经过一番摸索,我找到了在 Unity3D 程序开发过程中用 VB 取代大部分情况下的 C# 脚本的方法。本文以用 VB 2017 编写基于 Unity3D 的计算器为例展示如何在 Unity3D
转载
2024-09-03 19:59:09
30阅读
从github上下载源码之后(至于如何下载源码,请浏览系列教程前面的部分),浏览目录结构可以看到,skynet的源码结构是这样的有些源码是c语言写的,主要是底层的实现,为了性能考虑的。而有些是lua写的,比较偏向于游戏业务方面。3rd:存放第三方的代码,有lua和jemalloc等,其中jemalloc是一个内存分配的库,用来提高malloc的性能,但是如果你打开jemalloc目录的话会发现里面
Visual Studio 2017编译Lua源代码准备工作需要带有C++开发组件的Visual Studio需要Lua源代码(下载页面)下载得到的Lua源代码是一个tar.gz格式的压缩包,提取出其中的 src 文件夹,这个文件夹中包含了 Lua解释器 、 Lua编译器 和 Lua链接库 的源代码。 编译Lua链接库(lua.dll或lua.lib) 打开Visual Stud
转载
2022-11-29 20:07:27
353阅读
魔兽争霸自动地图元件的绘制原理序:本文主要介绍一种简单高效的自动地图元件的绘制方法,基本的原理是基于CodeProject的作者为Colin Vella的一篇文章:http://www.codeproject.com/KB/game/Autotiles_Algorithm.aspx#_comments 该文章介绍的方法非常简单,而且很高效。本文会先讲述此方法,然后在此方法的基础
转载
2024-08-04 18:01:42
124阅读
开发工具与关键技术:VS, ASP.NET MVC 作者:谭威 撰写时间:2019年5月1日 在我讲解修改代码之前,我得先声明我自定义的ReturnJsonVo和AESEncryptHelper这两个类,ReturnJsonVo这个类中有State(状态)、Code(状态码)、Text(文本)、Object(附加数据)这四个字段;AESEncryptHelper这个类就是一个用来加密的方法,了解一
凡是尝试做过内核分析的人都知道,Linux的内核组织结构虽然非常有条理,但是,它毕竟是众人合作的结果,在阅读代码的时候要将各个部分结合起来,确实是件非常困难的事情。因为在内核中的代码层次结构肯定分多个层次,那么对一个函数的分析,肯定会涉及到多个函数,而每一个函数可能又有多层的调用,一层层下来,直接在代码文件中查找那些函数肯定会让你失去耐心和兴趣。 俗话说:“工欲善其事,必先利其器”。
转载
2024-10-24 19:46:39
56阅读