打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
codedump ? Blog Archive ? Lua5.1.4代码分析(六)Opcode格式

Lua5.1.4代码分析(六)Opcode格式

Posted on 2012年07月21日, 19:09, by 那谁, under Lua.

了解了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变量中.

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
编写高性能的Lua代码 | Tim's Blog
学习Lua源代码的一些经验和参考资料推荐 _ Linux Today
漫谈从编译器到运行时
mpu内存保护单元寄存器种类及相关编程
使用 Lua 编写可嵌入式脚本
Lua脚本语言——Lua脚本基础语法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服