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 | Format ABC