发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
了解了Lua虚拟机和栈的结构之后,在正式进入分析各种Lua的操作之前,还需要简单了解Lua Opcode的格式.
Lua的opcode格式分为三类,在lopcode.h中有定义: enum OpMode {iABC, iABx, iAsBx}; /* basic instruction format */
在lopcode.h中,枚举定义了Lua中的所有opcode以及紧跟着的注释注明了不同opcode所对应的格式.可以一边阅读一边结合着看. 还需要注意的一点是,在这里的A,B,Bx,sBx都只是表示的是操作数,但是具体到哪里去取值还需要查看注释中相关的说明,无非就是这么几种: 以R开头表示从寄存器中取,但是其实在Lua中并没有寄存器这一概念,只有前面说的Lua栈,所以其实这里的寄存器指代的是Lua栈. UpValue表示从当前函数的Upval数组中取值. Kst开头的表示从常量数组中取值,常量数组的存放在Proto结构体的成员变量k中. Gbl开头的表示从全局变量表中取值,存放在LClosure结构体的env变量中.
来自: quasiceo > 《待分类1》
0条评论
发表
请遵守用户 评论公约
编写高性能的Lua代码 | Tim's Blog
编写高性能的Lua代码 | Tim''s Blog前言。一旦你决定编写高性能的Lua代码,下文将会指出在Lua中哪些代码是可以优化的,哪些代码会是运行缓慢的,然后怎么去优化它们。最开始,Lua创建了一个空...
学习Lua源代码的一些经验和参考资料推荐 _ Linux Today
而当我现在对Lua源码有一定了解之后,我觉得如果你不是对编译特别感兴趣,只想弄明白Lua本身,实际上可以不必在这里耗费太多时间,直接按照我前面说的那样,把Lua的opcode过一遍收获可能会更大。2)Lua...
漫谈从编译器到运行时
首先,函数应该也作为一种新的类型加入语言的类型系统,函数类型由参数类型、返回值类型组成,声明的函数本身也属于函数类型。上述代码...
mpu内存保护单元寄存器种类及相关编程
mpu内存保护单元寄存器种类及相关编程。内存保护单元(MPU)是ARM中配备的有效保护系统资源硬件的一种,提供了内存区域保护功能。MPU寄...
使用 Lua 编写可嵌入式脚本
Lua 类型。Lua 语言。堆栈可以保存 Lua 的值,不过值的类型必须是调用程序和被调用者都知道的,特别是向堆栈中压入的值和从堆栈中弹出的值更是如此(例如 lua_pushnil() 和 lua_pushnumber()。第 2 行...
Lua脚本语言——Lua脚本基础语法
脚本语言又被称为扩建的语言,或者动态语言,是一种编程 语言,用来控制软件应用程序,脚本通常以文本(如ASCII)保存,只在 被调用时进...
Lua 性能剖析
通过下面的测试代码, 对比C和Lua函数调用的开销,可以看出Lua函数调用开销是C的30倍。方案1中,C不需要理解数据的描述信息,只提供解码...
C语言嵌入式系统编程修炼之内存操作篇
C语言嵌入式系统编程修炼之内存操作篇语言嵌入式系统编程修炼之内存操作篇 Post By:2006-12-5 11:26:04.函数指针。(1)C语言中函数名直接对应于函数生成的指令代码在内存中的地址,因此函数名可以...
用GDB调试程序(二)
(gdb) print x=4.因为,set width是GDB的命令,所以,出现了"Invalid syntax inexpression"的设置错误,此时,你可以使用set var命令来告诉GDB,width不是你GDB的参数,而是程序的变量名,如...
微信扫码,在手机上查看选中内容