71 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			71 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
|  | /*
 | ||
|  | ** $Id: lopcodes.c,v 1.55 2015/01/05 13:48:33 roberto Exp $ | ||
|  | ** Opcodes for Lua virtual machine | ||
|  | ** See Copyright Notice in lua.h | ||
|  | */ | ||
|  | 
 | ||
|  | #define lopcodes_c
 | ||
|  | #define LUA_CORE
 | ||
|  | 
 | ||
|  | #include "lopcodes.h"
 | ||
|  | #include "lprefix.h"
 | ||
|  | 
 | ||
|  | #include <stddef.h>
 | ||
|  | 
 | ||
|  | namespace NS_SLUA { | ||
|  | 
 | ||
|  | /* ORDER OP */ | ||
|  | #define opmode(t,a,b,c,m) (((t)<<7) | ((a)<<6) | ((b)<<4) | ((c)<<2) | (m))
 | ||
|  | 
 | ||
|  | LUAI_DDEF const lu_byte luaP_opmodes[NUM_OPCODES] = { | ||
|  | /*       T  A    B       C     mode		   opcode	*/ | ||
|  |   opmode(0, 1, OpArgR, OpArgN, iABC)		/* OP_MOVE */ | ||
|  |  ,opmode(0, 1, OpArgR, OpArgK, iABC)		/* OP_SELF */ | ||
|  |  ,opmode(0, 1, OpArgK, OpArgK, iABC)		/* OP_ADD */ | ||
|  |  ,opmode(0, 1, OpArgK, OpArgK, iABC)		/* OP_SUB */ | ||
|  |  ,opmode(0, 1, OpArgK, OpArgK, iABC)		/* OP_MUL */ | ||
|  |  ,opmode(0, 1, OpArgK, OpArgK, iABC)		/* OP_MOD */ | ||
|  |  ,opmode(0, 1, OpArgK, OpArgK, iABC)		/* OP_POW */ | ||
|  |  ,opmode(0, 1, OpArgK, OpArgK, iABC)		/* OP_DIV */ | ||
|  |  ,opmode(0, 1, OpArgK, OpArgK, iABC)		/* OP_IDIV */ | ||
|  |  ,opmode(0, 1, OpArgK, OpArgK, iABC)		/* OP_BAND */ | ||
|  |  ,opmode(0, 1, OpArgK, OpArgK, iABC)		/* OP_BOR */ | ||
|  |  ,opmode(0, 1, OpArgK, OpArgK, iABC)		/* OP_BXOR */ | ||
|  |  ,opmode(0, 1, OpArgK, OpArgK, iABC)		/* OP_SHL */ | ||
|  |  ,opmode(0, 1, OpArgK, OpArgK, iABC)		/* OP_SHR */ | ||
|  |  ,opmode(0, 1, OpArgR, OpArgN, iABC)		/* OP_UNM */ | ||
|  |  ,opmode(0, 1, OpArgR, OpArgN, iABC)		/* OP_BNOT */ | ||
|  |  ,opmode(0, 1, OpArgR, OpArgN, iABC)		/* OP_NOT */ | ||
|  |  ,opmode(0, 1, OpArgR, OpArgN, iABC)		/* OP_LEN */ | ||
|  |  ,opmode(0, 1, OpArgR, OpArgR, iABC)		/* OP_CONCAT */ | ||
|  |  ,opmode(0, 0, OpArgR, OpArgN, iAsBx)		/* OP_JMP */ | ||
|  |  ,opmode(1, 0, OpArgK, OpArgK, iABC)		/* OP_EQ */ | ||
|  |  ,opmode(1, 0, OpArgK, OpArgK, iABC)		/* OP_LT */ | ||
|  |  ,opmode(1, 0, OpArgK, OpArgK, iABC)		/* OP_LE */ | ||
|  |  ,opmode(1, 0, OpArgN, OpArgU, iABC)		/* OP_TEST */ | ||
|  |  ,opmode(1, 1, OpArgR, OpArgU, iABC)		/* OP_TESTSET */ | ||
|  |  ,opmode(0, 1, OpArgU, OpArgU, iABC)		/* OP_CALL */ | ||
|  |  ,opmode(0, 1, OpArgU, OpArgU, iABC)		/* OP_TAILCALL */ | ||
|  |  ,opmode(0, 0, OpArgU, OpArgN, iABC)		/* OP_RETURN */ | ||
|  |  ,opmode(0, 1, OpArgR, OpArgN, iAsBx)		/* OP_FORLOOP */ | ||
|  |  ,opmode(0, 1, OpArgR, OpArgN, iAsBx)		/* OP_FORPREP */ | ||
|  |  ,opmode(0, 0, OpArgN, OpArgU, iABC)		/* OP_TFORCALL */ | ||
|  |  ,opmode(0, 1, OpArgR, OpArgN, iAsBx)		/* OP_TFORLOOP */ | ||
|  |  ,opmode(0, 0, OpArgU, OpArgU, iABC)		/* OP_SETLIST */ | ||
|  |  ,opmode(0, 1, OpArgU, OpArgN, iABx)		/* OP_CLOSURE */ | ||
|  |  ,opmode(0, 1, OpArgU, OpArgN, iABC)		/* OP_VARARG */ | ||
|  |  ,opmode(0, 1, OpArgK, OpArgN, iABx)		/* OP_LOADK */ | ||
|  |  ,opmode(0, 1, OpArgN, OpArgN, iABx)		/* OP_LOADKX */ | ||
|  |  ,opmode(0, 1, OpArgU, OpArgU, iABC)		/* OP_LOADBOOL */ | ||
|  |  ,opmode(0, 1, OpArgU, OpArgN, iABC)		/* OP_LOADNIL */ | ||
|  |  ,opmode(0, 1, OpArgU, OpArgN, iABC)		/* OP_GETUPVAL */ | ||
|  |  ,opmode(0, 1, OpArgU, OpArgK, iABC)		/* OP_GETTABUP */ | ||
|  |  ,opmode(0, 1, OpArgR, OpArgK, iABC)		/* OP_GETTABLE */ | ||
|  |  ,opmode(0, 0, OpArgK, OpArgK, iABC)		/* OP_SETTABUP */ | ||
|  |  ,opmode(0, 0, OpArgU, OpArgN, iABC)		/* OP_SETUPVAL */ | ||
|  |  ,opmode(0, 0, OpArgK, OpArgK, iABC)		/* OP_SETTABLE */ | ||
|  |  ,opmode(0, 1, OpArgU, OpArgU, iABC)		/* OP_NEWTABLE */ | ||
|  |  ,opmode(0, 0, OpArgU, OpArgU, iAx)		/* OP_EXTRAARG */ | ||
|  | }; | ||
|  | 
 | ||
|  | } // end NS_SLUA
 |