lopcodes.c 3.8 KB

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