luaJIT指令集介绍
----------------目录---------------
(a)相关ByteCode定义介绍
(b)lj_bc.h和lj_bc.c
(1)字节码format简介
(2)操作数的相关范围定义,和部分定义常量
(3)通过掩码镜像,来获取相对应区域的值
(4)通过掩码镜像,来设置相对应区域的值
(5)合成实现操作符
(6)关于字节码指令的定义
(7)BCMode定义
(8)参数类型校验
-------------------------------------
(a)相关ByteCode定义介绍
在luaJIT中定义了BCIns、BCReg、BCLine这4中类型,都是int32类型,也就是32位,关于为什么BC line number是有符号32位,这个在之后讨论
/* -- Common type definitions --------------------------------------------- */
/* Types for handling bytecodes. Need this here, details in lj_bc.h. */
typedef uint32_t BCIns; //BC指令
typedef uint32_t BCPos; //BC位置
typedef uint32_t BCReg; //BC参数
typedef int32_t BCLine; //BC行数
在之后的luaJIT字节码实现过程中,这4个类型是经常用到的
(b)lj_bc.h和lj_bc.c
(1)字节码format简介
/* Bytecode instruction format, 32 bit wide, fields of 8 or 16 bit:
** +----+----+----+----+
** | B | C | A | OP | For

这篇博客主要介绍了luaJIT的指令集,包括BCIns、BCReg、BCLine等类型的定义,以及字节码格式和操作数的处理。在lj_bc.h和lj_bc.c文件中详细阐述了字节码的格式,如Format ABC和AD,以及如何通过掩码镜像获取和设置操作数的值。内容深入探讨了luaJIT字节码的结构和实现。
最低0.47元/天 解锁文章
2698

被折叠的 条评论
为什么被折叠?



