自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TTc 's share

focus

  • 博客(18)
  • 资源 (8)
  • 收藏
  • 关注

原创 Lua5.3 虚拟机指令分析(十)表相关指令

Lua5.3 虚拟机指令分析(十)表相关指令OP_NEWTABLEOP_NEWTABLE,/* A B C R(A) := {} (size = B,C) */创建一个新表,结果存放在A所在的栈位置,表的数组大小为B,表的Hash大小为C. TTcs-Mac-mini:OpCode ttc$ cat tOP_NEWTABLE.lua local a = {}a[

2017-08-20 01:58:37 607

原创 Lua5.3 虚拟机指令分析(八)循环

Lua5.3 虚拟机指令分析(八)循环whileLua 处了 for 循环之外的其它各种循环(while)都使用关系和逻辑指令,配合JMP 指令来完成。TTcs-Mac-mini:OpCode ttc$ cat tOP_WHILE.lualocal a = 0; while(a < 10) do a = a + 1; end print(a)TTcs-Mac-mini:OpC

2017-08-20 01:57:54 662

原创 Lua5.3 虚拟机指令分析(六)不定参数

Lua5.3 虚拟机指令分析(六)不定参数OP_VARARGOP_VARARG,/* A B R(A), R(A+1), ..., R(A+B-2) = vararg */TTcs-Mac-mini:OpCode ttc$ cat tOP_VARARG.luaf1 = function(...) endf1(10,20,...)TTcs-Mac-mini:OpCode ttc

2017-08-20 01:57:12 1020

原创 Lua5.3 虚拟机指令分析(五)函数调用

Lua5.3 虚拟机指令分析(五)函数调用OP_CLOSUREOP_CLOSURE,/* A Bx R(A) := closure(KPROTO[Bx]) */TTcs-Mac-mini:OpCode ttc$ cat tOP_CLOSURE.luafunction f1() endTTcs-Mac-mini:OpCode ttc$ ./luac -l -l tOP_CL

2017-08-20 01:56:30 719

原创 Lua5.3 虚拟机指令分析(四)分支与跳转

Lua5.3 虚拟机指令分析(四)分支与跳转EQ 、LT、LE、TEST、TESTEST 五个分支指令必须与后面的紧挨的 JMP 指令看做一体。当条件成立时,继续运行;条件不成立时,跳转到指定位置。OP_JMP,/* A sBx pc+=sBx; if (A) close all upvalues >= R(A - 1) */OP_EQ,/* A B C if ((RK(B) =

2017-08-19 09:10:25 884

原创 Lua5.3 虚拟机指令分析(三)表达式运算

Lua5.3 虚拟机指令分析(三)表达式运算二元运算TTcs-Mac-mini:OpCode ttc$ cat tOP_Arith.lua local t = 1t = t + 1t = t - 1t = t * 1t = t / 1t = t % 1t = t ^ 1t = t // 1t = t & 1t = t | 1t = t ~ 1t = t << 1t = t

2017-08-19 09:08:03 454

原创 Lua5.3 虚拟机指令分析(二)赋值指令

Lua5.3 虚拟机指令分析(二)赋值指令Lua VM 是基于寄存器结构实现的,也就是说,每段 Lua  chunk 代码都被翻译为一组对256 个寄存器的操作指令。这有点类似于我们为Lua编写 C 扩展。 C 函数通常是从 lua_State 中取出参数逐个记录在 C 的局部变量中,然后利用C 代码直接对这些值进行操作。可以类比 把寄存器类比于 Lua 的寄存器。它们的确有相似之处, C 中的局

2017-08-19 09:06:25 1130

原创 Lua5.3 虚拟机指令分析(一)概述

Lua5.3 虚拟机指令分析(一)概述概述Lua VM 使用的是 Register based VM。 指令都是在已经分配好的寄存器中存取操作数。 add a b c 将 寄存器 b 与 寄存器 c 中的值相加,结果存在 寄存器 a 中。 标准的三地址指令,每条指令的表达能力很强,并有效的减少了内存赋值操作。#if LUAI_BITSINT >= 32typedef unsigne

2017-08-19 09:03:32 2575

原创 Lua5.3 VM 分析(八)For 循环

Lua5.3 VM 分析(八)For 循环Lua 支持两种 for 循环,一种是 C 语言系 的 数字循环,另外一种支持 迭代器。 stat ::= for Name ‘=’ exp ‘,’ exp [‘,’ exp] do block end for v = e1, e2, e3 do block endLua 手册中使用下列操作模拟。 do local var, l

2017-08-19 07:45:21 1093

原创 Lua5.3 VM 分析(七)生成闭包

Lua5.3 VM 分析(七)生成闭包在Lua 中,函数是一等公民。一切代码都是函数,准确的说是闭包。当我们执行一段程序时,其实就是调用一个函数。加载一个库,也是调用一个函数。加载一个Lua 源文件,里面即使定义了很多 Lua 函数,但是 它整体依旧是单个函数。所以,每段完整的字节码都是一个Lua 函数。而每个函数里可以附有很多个函数原型 Proto。函数原型 Proto 没有放在常量表中,而是单

2017-08-19 07:44:24 486

原创 Lua5.3 VM 分析(四)分支和跳转

Lua5.3 VM 分析(四)分支和跳转Lua VM 定义了 OP_EQ、OP_LT、OP_LE、OP_TEST、OP_TESTSET 五种分支操作。这五个分支指令必须与 之后的 跳转指令 JMP 看做一个整体解释。也就是说:当条件成立时,继续运行;条件不成立时,跳转到指定位置。如果条件成立跳转到L1, 否则跳转到L2: L1: success() jmp exit L2:

2017-08-19 07:43:09 984

原创 Lua5.3 VM 分析(三)表达式运算

Lua5.3 VM 分析(三)表达式运算二元运算+、-、*、%、^、/、//、&、 |、\~、\<\<、>> 这 12 种二元运算 OP_ADD、OP_SUB、OP_MUL、OP_DIV、OP_POW、OP_MOD、OP_IDIV、OP_BAND、OP_BOR、OP_BXOR、OP_SHL、OP_SHR ### vmcase(OP_ADD) { TValu

2017-08-19 07:40:44 1155

原创 Lua5.3 VM 分析(一)字节码运行

Lua5.3 VM 分析(一)字节码运行luaV_execute 是Lua VM 执行一段字节码的入口。Lua VM 就是一个状态机,从当前调用栈上次运行点开始解释字节码指令,直到下一个 C 边界跳出点(可以是函数执行完毕,也可以是一次协程 yield 操作)。Lua 函数部分typedef struct CallInfo { StkId func; /* function index in

2017-08-19 07:27:41 2484

原创 Lua 5.3 源码分析 (七) 闭包 Closure

Lua 5.3 源码分析 (七) 闭包 Closure概述闭包(Closure)在函数式编程中是一个重要概念,如果说 C+ + 的面向对象编程是把一组函数绑定到特定的数据类型上的话,那么闭包就是把一组数据绑定到特定的函数上。当调用 counter 后,会得到一个函数。这个函数每调用一次,返回值会加一。 我们把这个返回的你们函数记作一个计数器。counter 可以产生多个计数器,每个都独立计算

2017-08-18 11:46:21 1767

原创 Lua 5.3 源码分析(六) 字符串 Table

Lua 5.3 源码分析 (六) 表 Tabletypedef union TKey { struct { TValuefields; int next; /* for chaining (offset for next node) */ } nk; TValue tvk;} TKey;/* copy a value into a key without messi

2017-08-18 11:31:26 649

原创 Lua 5.3 源码分析(四)线程 lua_State

Lua 5.3 源码分析(四)线程 lua_StateLua 的THREAD 类型定义如下图: /* ** ‘per thread’ state */ struct lua_State { //1 Lua 类型公共头部 CommonHeader; //2 global_State *l_G

2017-08-18 11:16:51 2381

原创 Lua 5.3 源码分析(一)类型系统

Lua 5.3 源码分析(一)类型系统数据类型/*** basic types*/#define LUA_TNONE (-1)#define LUA_TNIL 0#define LUA_TBOOLEAN 1#define LUA_TLIGHTUSERDATA 2#define LUA_TNUMBER 3#define LUA_TSTRI

2017-08-18 10:31:17 2901 1

原创 Lua 5.3 源码分析(十)线程的执行与中断

Lua 5.3 源码分析(十)线程的执行与中断Lua 的程序运行时以线程为单位的。每个Lua 线程可以独立运行直到自行中断,把中断的信息留在状态机中。每条线程的执行互不干扰,可以独立延续之前中断的执行过程。Lua 线程和系统线程无关,所以不会为每条 Lua 线程创建独立的系统堆栈,而是利用自己维护的线程栈,内存开销也就远小于系统线程。Lua 是一门嵌入式语言,和 C 语言混合编程是一种常态。 一旦L

2017-08-18 09:56:57 2567

pthread源代码

posix linux环境下的pthread source 通过查看源代码可以对线程的认识更加深刻 你知道吗?线程的底层实现也是调用clone[创建进程] 故有线程是轻量级的进程

2015-05-15

西蒙教程13章

西蒙教程全部13章中文教程下载,全部13章哦,opengles入门从这开始哦

2012-09-16

西蒙教程源代码(全部17章)

西蒙教程的17章全部源代码,全部的17章阿

2012-09-16

cocos2d _切水果

COCOS2D_IPHONE 切水果实例, 游戏

2012-09-06

ios翻页特效demo

一种IOS 翻页特效demo,折页效果,3d翻页效果

2012-08-14

fbreader 电子阅读

android系统下的一款开源阅读器代码,支持EPUB,TXT,UMD,FB2文件格式

2012-08-14

EPUB 解析 (java)

java实现的EPUB 解析模块,从开源项目FBreader中优化出来的模块代码

2012-08-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除