You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

128 lines
3.5 KiB

  1. /*
  2. ** $Id: lopcodes.c,v 1.55 2015/01/05 13:48:33 roberto Exp $
  3. ** Opcodes for Lua virtual machine
  4. ** See Copyright Notice in lua.h
  5. */
  6. #define lopcodes_c
  7. #define LUA_CORE
  8. #include "lprefix.h"
  9. #if defined HAVE_CONFIG_H // LOL BEGIN
  10. # include "config.h"
  11. #endif // LOL END
  12. #include <stddef.h>
  13. #include "lopcodes.h"
  14. /* ORDER OP */
  15. LUAI_DDEF const char *const luaP_opnames[NUM_OPCODES+1] = {
  16. "MOVE",
  17. "LOADK",
  18. "LOADKX",
  19. "LOADBOOL",
  20. "LOADNIL",
  21. "GETUPVAL",
  22. "GETTABUP",
  23. "GETTABLE",
  24. "SETTABUP",
  25. "SETUPVAL",
  26. "SETTABLE",
  27. "NEWTABLE",
  28. "SELF",
  29. "ADD",
  30. "SUB",
  31. "MUL",
  32. "MOD",
  33. "POW",
  34. "DIV",
  35. "IDIV",
  36. "BAND",
  37. "BOR",
  38. "BXOR",
  39. "SHL",
  40. "SHR",
  41. "UNM",
  42. "BNOT",
  43. "NOT",
  44. "LEN",
  45. "CONCAT",
  46. "JMP",
  47. "EQ",
  48. "LT",
  49. "LE",
  50. "TEST",
  51. "TESTSET",
  52. "CALL",
  53. "TAILCALL",
  54. "RETURN",
  55. "FORLOOP",
  56. "FORPREP",
  57. "TFORCALL",
  58. "TFORLOOP",
  59. "SETLIST",
  60. "CLOSURE",
  61. "VARARG",
  62. "EXTRAARG",
  63. NULL
  64. };
  65. #define opmode(t,a,b,c,m) (((t)<<7) | ((a)<<6) | ((b)<<4) | ((c)<<2) | (m))
  66. LUAI_DDEF const lu_byte luaP_opmodes[NUM_OPCODES] = {
  67. /* T A B C mode opcode */
  68. opmode(0, 1, OpArgR, OpArgN, iABC) /* OP_MOVE */
  69. ,opmode(0, 1, OpArgK, OpArgN, iABx) /* OP_LOADK */
  70. ,opmode(0, 1, OpArgN, OpArgN, iABx) /* OP_LOADKX */
  71. ,opmode(0, 1, OpArgU, OpArgU, iABC) /* OP_LOADBOOL */
  72. ,opmode(0, 1, OpArgU, OpArgN, iABC) /* OP_LOADNIL */
  73. ,opmode(0, 1, OpArgU, OpArgN, iABC) /* OP_GETUPVAL */
  74. ,opmode(0, 1, OpArgU, OpArgK, iABC) /* OP_GETTABUP */
  75. ,opmode(0, 1, OpArgR, OpArgK, iABC) /* OP_GETTABLE */
  76. ,opmode(0, 0, OpArgK, OpArgK, iABC) /* OP_SETTABUP */
  77. ,opmode(0, 0, OpArgU, OpArgN, iABC) /* OP_SETUPVAL */
  78. ,opmode(0, 0, OpArgK, OpArgK, iABC) /* OP_SETTABLE */
  79. ,opmode(0, 1, OpArgU, OpArgU, iABC) /* OP_NEWTABLE */
  80. ,opmode(0, 1, OpArgR, OpArgK, iABC) /* OP_SELF */
  81. ,opmode(0, 1, OpArgK, OpArgK, iABC) /* OP_ADD */
  82. ,opmode(0, 1, OpArgK, OpArgK, iABC) /* OP_SUB */
  83. ,opmode(0, 1, OpArgK, OpArgK, iABC) /* OP_MUL */
  84. ,opmode(0, 1, OpArgK, OpArgK, iABC) /* OP_MOD */
  85. ,opmode(0, 1, OpArgK, OpArgK, iABC) /* OP_POW */
  86. ,opmode(0, 1, OpArgK, OpArgK, iABC) /* OP_DIV */
  87. ,opmode(0, 1, OpArgK, OpArgK, iABC) /* OP_IDIV */
  88. ,opmode(0, 1, OpArgK, OpArgK, iABC) /* OP_BAND */
  89. ,opmode(0, 1, OpArgK, OpArgK, iABC) /* OP_BOR */
  90. ,opmode(0, 1, OpArgK, OpArgK, iABC) /* OP_BXOR */
  91. ,opmode(0, 1, OpArgK, OpArgK, iABC) /* OP_SHL */
  92. ,opmode(0, 1, OpArgK, OpArgK, iABC) /* OP_SHR */
  93. ,opmode(0, 1, OpArgR, OpArgN, iABC) /* OP_UNM */
  94. ,opmode(0, 1, OpArgR, OpArgN, iABC) /* OP_BNOT */
  95. ,opmode(0, 1, OpArgR, OpArgN, iABC) /* OP_NOT */
  96. ,opmode(0, 1, OpArgR, OpArgN, iABC) /* OP_LEN */
  97. ,opmode(0, 1, OpArgR, OpArgR, iABC) /* OP_CONCAT */
  98. ,opmode(0, 0, OpArgR, OpArgN, iAsBx) /* OP_JMP */
  99. ,opmode(1, 0, OpArgK, OpArgK, iABC) /* OP_EQ */
  100. ,opmode(1, 0, OpArgK, OpArgK, iABC) /* OP_LT */
  101. ,opmode(1, 0, OpArgK, OpArgK, iABC) /* OP_LE */
  102. ,opmode(1, 0, OpArgN, OpArgU, iABC) /* OP_TEST */
  103. ,opmode(1, 1, OpArgR, OpArgU, iABC) /* OP_TESTSET */
  104. ,opmode(0, 1, OpArgU, OpArgU, iABC) /* OP_CALL */
  105. ,opmode(0, 1, OpArgU, OpArgU, iABC) /* OP_TAILCALL */
  106. ,opmode(0, 0, OpArgU, OpArgN, iABC) /* OP_RETURN */
  107. ,opmode(0, 1, OpArgR, OpArgN, iAsBx) /* OP_FORLOOP */
  108. ,opmode(0, 1, OpArgR, OpArgN, iAsBx) /* OP_FORPREP */
  109. ,opmode(0, 0, OpArgN, OpArgU, iABC) /* OP_TFORCALL */
  110. ,opmode(0, 1, OpArgR, OpArgN, iAsBx) /* OP_TFORLOOP */
  111. ,opmode(0, 0, OpArgU, OpArgU, iABC) /* OP_SETLIST */
  112. ,opmode(0, 1, OpArgU, OpArgN, iABx) /* OP_CLOSURE */
  113. ,opmode(0, 1, OpArgU, OpArgN, iABC) /* OP_VARARG */
  114. ,opmode(0, 0, OpArgU, OpArgU, iAx) /* OP_EXTRAARG */
  115. };