summaryrefslogtreecommitdiff
path: root/lopcodes.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2002-08-20 17:03:05 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2002-08-20 17:03:05 -0300
commit6c283b2f4f8398322e7a9a62ec8e131852b4e015 (patch)
tree608d5b61b14dfdb91cc5cf72637e876337cffcb8 /lopcodes.c
parent576bded5137babb9c669ccff5aedf19ed65a7598 (diff)
downloadlua-github-6c283b2f4f8398322e7a9a62ec8e131852b4e015.tar.gz
new simetric format for ABC instructions, to avoid exchanging operands
for `commutative' operators
Diffstat (limited to 'lopcodes.c')
-rw-r--r--lopcodes.c82
1 files changed, 39 insertions, 43 deletions
diff --git a/lopcodes.c b/lopcodes.c
index 767c6bd5..8dd3bee3 100644
--- a/lopcodes.c
+++ b/lopcodes.c
@@ -1,5 +1,5 @@
/*
-** $Id: lopcodes.c,v 1.19 2002/05/13 13:09:00 roberto Exp roberto $
+** $Id: lopcodes.c,v 1.20 2002/06/12 14:51:31 roberto Exp roberto $
** extracted automatically from lopcodes.h by mkprint.lua
** DO NOT EDIT
** See Copyright Notice in lua.h
@@ -39,8 +39,6 @@ const char *const luaP_opnames[] = {
"EQ",
"LT",
"LE",
- "GT",
- "GE",
"TEST",
"CALL",
"TAILCALL",
@@ -56,49 +54,47 @@ const char *const luaP_opnames[] = {
#endif
-#define opmode(t,x,b,c,sa,k,m) (((t)<<OpModeT) | \
- ((b)<<OpModeBreg) | ((c)<<OpModeCreg) | \
+#define opmode(t,b,bk,ck,sa,k,m) (((t)<<OpModeT) | \
+ ((b)<<OpModeBreg) | ((bk)<<OpModeBrk) | ((ck)<<OpModeCrk) | \
((sa)<<OpModesetA) | ((k)<<OpModeK) | (m))
const lu_byte luaP_opmodes[NUM_OPCODES] = {
-/* T _ B C sA K mode opcode */
- opmode(0,0,1,0, 1,0,iABC) /* OP_MOVE */
- ,opmode(0,0,0,0, 1,1,iABx) /* OP_LOADK */
- ,opmode(0,0,0,0, 1,0,iABC) /* OP_LOADBOOL */
- ,opmode(0,0,1,0, 1,0,iABC) /* OP_LOADNIL */
- ,opmode(0,0,0,0, 1,0,iABC) /* OP_GETUPVAL */
- ,opmode(0,0,0,0, 1,1,iABx) /* OP_GETGLOBAL */
- ,opmode(0,0,1,1, 1,0,iABC) /* OP_GETTABLE */
- ,opmode(0,0,0,0, 0,1,iABx) /* OP_SETGLOBAL */
- ,opmode(0,0,0,0, 0,0,iABC) /* OP_SETUPVAL */
- ,opmode(0,0,1,1, 0,0,iABC) /* OP_SETTABLE */
- ,opmode(0,0,0,0, 1,0,iABC) /* OP_NEWTABLE */
- ,opmode(0,0,1,1, 1,0,iABC) /* OP_SELF */
- ,opmode(0,0,1,1, 1,0,iABC) /* OP_ADD */
- ,opmode(0,0,1,1, 1,0,iABC) /* OP_SUB */
- ,opmode(0,0,1,1, 1,0,iABC) /* OP_MUL */
- ,opmode(0,0,1,1, 1,0,iABC) /* OP_DIV */
- ,opmode(0,0,1,1, 1,0,iABC) /* OP_POW */
- ,opmode(0,0,1,0, 1,0,iABC) /* OP_UNM */
- ,opmode(0,0,1,0, 1,0,iABC) /* OP_NOT */
- ,opmode(0,0,1,1, 1,0,iABC) /* OP_CONCAT */
- ,opmode(0,0,0,0, 0,0,iAsBx) /* OP_JMP */
- ,opmode(1,0,0,1, 0,0,iABC) /* OP_EQ */
- ,opmode(1,0,0,1, 0,0,iABC) /* OP_LT */
- ,opmode(1,0,0,1, 0,0,iABC) /* OP_LE */
- ,opmode(1,0,0,1, 0,0,iABC) /* OP_GT */
- ,opmode(1,0,0,1, 0,0,iABC) /* OP_GE */
- ,opmode(1,0,0,1, 1,0,iABC) /* OP_TEST */
- ,opmode(0,0,0,0, 0,0,iABC) /* OP_CALL */
- ,opmode(0,0,0,0, 0,0,iABC) /* OP_TAILCALL */
- ,opmode(0,0,0,0, 0,0,iABC) /* OP_RETURN */
- ,opmode(0,0,0,0, 0,0,iAsBx) /* OP_FORLOOP */
- ,opmode(1,0,0,0, 0,0,iABC) /* OP_TFORLOOP */
- ,opmode(0,0,0,0, 0,0,iAsBx) /* OP_TFORPREP */
- ,opmode(0,0,0,0, 0,0,iABx) /* OP_SETLIST */
- ,opmode(0,0,0,0, 0,0,iABx) /* OP_SETLISTO */
- ,opmode(0,0,0,0, 0,0,iABC) /* OP_CLOSE */
- ,opmode(0,0,0,0, 1,0,iABx) /* OP_CLOSURE */
+/* T B Bk Ck sA K mode opcode */
+ opmode(0, 1, 0, 0, 1, 0, iABC) /* OP_MOVE */
+ ,opmode(0, 0, 0, 0, 1, 1, iABx) /* OP_LOADK */
+ ,opmode(0, 0, 0, 0, 1, 0, iABC) /* OP_LOADBOOL */
+ ,opmode(0, 1, 0, 0, 1, 0, iABC) /* OP_LOADNIL */
+ ,opmode(0, 0, 0, 0, 1, 0, iABC) /* OP_GETUPVAL */
+ ,opmode(0, 0, 0, 0, 1, 1, iABx) /* OP_GETGLOBAL */
+ ,opmode(0, 1, 0, 1, 1, 0, iABC) /* OP_GETTABLE */
+ ,opmode(0, 0, 0, 0, 0, 1, iABx) /* OP_SETGLOBAL */
+ ,opmode(0, 0, 0, 0, 0, 0, iABC) /* OP_SETUPVAL */
+ ,opmode(0, 0, 1, 1, 0, 0, iABC) /* OP_SETTABLE */
+ ,opmode(0, 0, 0, 0, 1, 0, iABC) /* OP_NEWTABLE */
+ ,opmode(0, 1, 0, 1, 1, 0, iABC) /* OP_SELF */
+ ,opmode(0, 0, 1, 1, 1, 0, iABC) /* OP_ADD */
+ ,opmode(0, 0, 1, 1, 1, 0, iABC) /* OP_SUB */
+ ,opmode(0, 0, 1, 1, 1, 0, iABC) /* OP_MUL */
+ ,opmode(0, 0, 1, 1, 1, 0, iABC) /* OP_DIV */
+ ,opmode(0, 0, 1, 1, 1, 0, iABC) /* OP_POW */
+ ,opmode(0, 1, 0, 0, 1, 0, iABC) /* OP_UNM */
+ ,opmode(0, 1, 0, 0, 1, 0, iABC) /* OP_NOT */
+ ,opmode(0, 1, 0, 1, 1, 0, iABC) /* OP_CONCAT */
+ ,opmode(0, 0, 0, 0, 0, 0, iAsBx) /* OP_JMP */
+ ,opmode(1, 0, 1, 1, 0, 0, iABC) /* OP_EQ */
+ ,opmode(1, 0, 1, 1, 0, 0, iABC) /* OP_LT */
+ ,opmode(1, 0, 1, 1, 0, 0, iABC) /* OP_LE */
+ ,opmode(1, 1, 0, 0, 1, 0, iABC) /* OP_TEST */
+ ,opmode(0, 0, 0, 0, 0, 0, iABC) /* OP_CALL */
+ ,opmode(0, 0, 0, 0, 0, 0, iABC) /* OP_TAILCALL */
+ ,opmode(0, 0, 0, 0, 0, 0, iABC) /* OP_RETURN */
+ ,opmode(0, 0, 0, 0, 0, 0, iAsBx) /* OP_FORLOOP */
+ ,opmode(1, 0, 0, 0, 0, 0, iABC) /* OP_TFORLOOP */
+ ,opmode(0, 0, 0, 0, 0, 0, iAsBx) /* OP_TFORPREP */
+ ,opmode(0, 0, 0, 0, 0, 0, iABx) /* OP_SETLIST */
+ ,opmode(0, 0, 0, 0, 0, 0, iABx) /* OP_SETLISTO */
+ ,opmode(0, 0, 0, 0, 0, 0, iABC) /* OP_CLOSE */
+ ,opmode(0, 0, 0, 0, 1, 0, iABx) /* OP_CLOSURE */
};