lopcodes.c 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. /*
  2. ** $Id: lopcodes.c $
  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. #include "lopcodes.h"
  10. /* ORDER OP */
  11. LUAI_DDEF const lu_byte luaP_opmodes[NUM_OPCODES] = {
  12. /* MM OT IT T A mode opcode */
  13. opmode(0, 0, 0, 0, 1, iABC) /* OP_MOVE */
  14. ,opmode(0, 0, 0, 0, 1, iAsBx) /* OP_LOADI */
  15. ,opmode(0, 0, 0, 0, 1, iAsBx) /* OP_LOADF */
  16. ,opmode(0, 0, 0, 0, 1, iABx) /* OP_LOADK */
  17. ,opmode(0, 0, 0, 0, 1, iABx) /* OP_LOADKX */
  18. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_LOADFALSE */
  19. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_LFALSESKIP */
  20. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_LOADTRUE */
  21. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_LOADNIL */
  22. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_GETUPVAL */
  23. ,opmode(0, 0, 0, 0, 0, iABC) /* OP_SETUPVAL */
  24. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_GETTABUP */
  25. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_GETTABLE */
  26. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_GETI */
  27. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_GETFIELD */
  28. ,opmode(0, 0, 0, 0, 0, iABC) /* OP_SETTABUP */
  29. ,opmode(0, 0, 0, 0, 0, iABC) /* OP_SETTABLE */
  30. ,opmode(0, 0, 0, 0, 0, iABC) /* OP_SETI */
  31. ,opmode(0, 0, 0, 0, 0, iABC) /* OP_SETFIELD */
  32. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_NEWTABLE */
  33. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_SELF */
  34. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_ADDI */
  35. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_ADDK */
  36. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_SUBK */
  37. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_MULK */
  38. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_MODK */
  39. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_POWK */
  40. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_DIVK */
  41. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_IDIVK */
  42. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_BANDK */
  43. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_BORK */
  44. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_BXORK */
  45. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_SHRI */
  46. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_SHLI */
  47. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_ADD */
  48. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_SUB */
  49. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_MUL */
  50. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_MOD */
  51. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_POW */
  52. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_DIV */
  53. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_IDIV */
  54. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_BAND */
  55. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_BOR */
  56. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_BXOR */
  57. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_SHL */
  58. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_SHR */
  59. ,opmode(1, 0, 0, 0, 0, iABC) /* OP_MMBIN */
  60. ,opmode(1, 0, 0, 0, 0, iABC) /* OP_MMBINI*/
  61. ,opmode(1, 0, 0, 0, 0, iABC) /* OP_MMBINK*/
  62. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_UNM */
  63. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_BNOT */
  64. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_NOT */
  65. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_LEN */
  66. ,opmode(0, 0, 0, 0, 1, iABC) /* OP_CONCAT */
  67. ,opmode(0, 0, 0, 0, 0, iABC) /* OP_CLOSE */
  68. ,opmode(0, 0, 0, 0, 0, iABC) /* OP_TBC */
  69. ,opmode(0, 0, 0, 0, 0, isJ) /* OP_JMP */
  70. ,opmode(0, 0, 0, 1, 0, iABC) /* OP_EQ */
  71. ,opmode(0, 0, 0, 1, 0, iABC) /* OP_LT */
  72. ,opmode(0, 0, 0, 1, 0, iABC) /* OP_LE */
  73. ,opmode(0, 0, 0, 1, 0, iABC) /* OP_EQK */
  74. ,opmode(0, 0, 0, 1, 0, iABC) /* OP_EQI */
  75. ,opmode(0, 0, 0, 1, 0, iABC) /* OP_LTI */
  76. ,opmode(0, 0, 0, 1, 0, iABC) /* OP_LEI */
  77. ,opmode(0, 0, 0, 1, 0, iABC) /* OP_GTI */
  78. ,opmode(0, 0, 0, 1, 0, iABC) /* OP_GEI */
  79. ,opmode(0, 0, 0, 1, 0, iABC) /* OP_TEST */
  80. ,opmode(0, 0, 0, 1, 1, iABC) /* OP_TESTSET */
  81. ,opmode(0, 1, 1, 0, 1, iABC) /* OP_CALL */
  82. ,opmode(0, 1, 1, 0, 1, iABC) /* OP_TAILCALL */
  83. ,opmode(0, 0, 1, 0, 0, iABC) /* OP_RETURN */
  84. ,opmode(0, 0, 0, 0, 0, iABC) /* OP_RETURN0 */
  85. ,opmode(0, 0, 0, 0, 0, iABC) /* OP_RETURN1 */
  86. ,opmode(0, 0, 0, 0, 1, iABx) /* OP_FORLOOP */
  87. ,opmode(0, 0, 0, 0, 1, iABx) /* OP_FORPREP */
  88. ,opmode(0, 0, 0, 0, 0, iABx) /* OP_TFORPREP */
  89. ,opmode(0, 0, 0, 0, 0, iABC) /* OP_TFORCALL */
  90. ,opmode(0, 0, 0, 0, 1, iABx) /* OP_TFORLOOP */
  91. ,opmode(0, 0, 1, 0, 0, iABC) /* OP_SETLIST */
  92. ,opmode(0, 0, 0, 0, 1, iABx) /* OP_CLOSURE */
  93. ,opmode(0, 1, 0, 0, 1, iABC) /* OP_VARARG */
  94. ,opmode(0, 0, 1, 0, 1, iABC) /* OP_VARARGPREP */
  95. ,opmode(0, 0, 0, 0, 0, iAx) /* OP_EXTRAARG */
  96. };