Team Fortress 2 Source Code as on 22/4/2020
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.

152 lines
4.2 KiB

  1. #ifndef Py_OPCODE_H
  2. #define Py_OPCODE_H
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. /* Instruction opcodes for compiled code */
  7. #define STOP_CODE 0
  8. #define POP_TOP 1
  9. #define ROT_TWO 2
  10. #define ROT_THREE 3
  11. #define DUP_TOP 4
  12. #define ROT_FOUR 5
  13. #define NOP 9
  14. #define UNARY_POSITIVE 10
  15. #define UNARY_NEGATIVE 11
  16. #define UNARY_NOT 12
  17. #define UNARY_CONVERT 13
  18. #define UNARY_INVERT 15
  19. #define LIST_APPEND 18
  20. #define BINARY_POWER 19
  21. #define BINARY_MULTIPLY 20
  22. #define BINARY_DIVIDE 21
  23. #define BINARY_MODULO 22
  24. #define BINARY_ADD 23
  25. #define BINARY_SUBTRACT 24
  26. #define BINARY_SUBSCR 25
  27. #define BINARY_FLOOR_DIVIDE 26
  28. #define BINARY_TRUE_DIVIDE 27
  29. #define INPLACE_FLOOR_DIVIDE 28
  30. #define INPLACE_TRUE_DIVIDE 29
  31. #define SLICE 30
  32. /* Also uses 31-33 */
  33. #define STORE_SLICE 40
  34. /* Also uses 41-43 */
  35. #define DELETE_SLICE 50
  36. /* Also uses 51-53 */
  37. #define INPLACE_ADD 55
  38. #define INPLACE_SUBTRACT 56
  39. #define INPLACE_MULTIPLY 57
  40. #define INPLACE_DIVIDE 58
  41. #define INPLACE_MODULO 59
  42. #define STORE_SUBSCR 60
  43. #define DELETE_SUBSCR 61
  44. #define BINARY_LSHIFT 62
  45. #define BINARY_RSHIFT 63
  46. #define BINARY_AND 64
  47. #define BINARY_XOR 65
  48. #define BINARY_OR 66
  49. #define INPLACE_POWER 67
  50. #define GET_ITER 68
  51. #define PRINT_EXPR 70
  52. #define PRINT_ITEM 71
  53. #define PRINT_NEWLINE 72
  54. #define PRINT_ITEM_TO 73
  55. #define PRINT_NEWLINE_TO 74
  56. #define INPLACE_LSHIFT 75
  57. #define INPLACE_RSHIFT 76
  58. #define INPLACE_AND 77
  59. #define INPLACE_XOR 78
  60. #define INPLACE_OR 79
  61. #define BREAK_LOOP 80
  62. #define WITH_CLEANUP 81
  63. #define LOAD_LOCALS 82
  64. #define RETURN_VALUE 83
  65. #define IMPORT_STAR 84
  66. #define EXEC_STMT 85
  67. #define YIELD_VALUE 86
  68. #define POP_BLOCK 87
  69. #define END_FINALLY 88
  70. #define BUILD_CLASS 89
  71. #define HAVE_ARGUMENT 90 /* Opcodes from here have an argument: */
  72. #define STORE_NAME 90 /* Index in name list */
  73. #define DELETE_NAME 91 /* "" */
  74. #define UNPACK_SEQUENCE 92 /* Number of sequence items */
  75. #define FOR_ITER 93
  76. #define STORE_ATTR 95 /* Index in name list */
  77. #define DELETE_ATTR 96 /* "" */
  78. #define STORE_GLOBAL 97 /* "" */
  79. #define DELETE_GLOBAL 98 /* "" */
  80. #define DUP_TOPX 99 /* number of items to duplicate */
  81. #define LOAD_CONST 100 /* Index in const list */
  82. #define LOAD_NAME 101 /* Index in name list */
  83. #define BUILD_TUPLE 102 /* Number of tuple items */
  84. #define BUILD_LIST 103 /* Number of list items */
  85. #define BUILD_MAP 104 /* Always zero for now */
  86. #define LOAD_ATTR 105 /* Index in name list */
  87. #define COMPARE_OP 106 /* Comparison operator */
  88. #define IMPORT_NAME 107 /* Index in name list */
  89. #define IMPORT_FROM 108 /* Index in name list */
  90. #define JUMP_FORWARD 110 /* Number of bytes to skip */
  91. #define JUMP_IF_FALSE 111 /* "" */
  92. #define JUMP_IF_TRUE 112 /* "" */
  93. #define JUMP_ABSOLUTE 113 /* Target byte offset from beginning of code */
  94. #define LOAD_GLOBAL 116 /* Index in name list */
  95. #define CONTINUE_LOOP 119 /* Start of loop (absolute) */
  96. #define SETUP_LOOP 120 /* Target address (absolute) */
  97. #define SETUP_EXCEPT 121 /* "" */
  98. #define SETUP_FINALLY 122 /* "" */
  99. #define LOAD_FAST 124 /* Local variable number */
  100. #define STORE_FAST 125 /* Local variable number */
  101. #define DELETE_FAST 126 /* Local variable number */
  102. #define RAISE_VARARGS 130 /* Number of raise arguments (1, 2 or 3) */
  103. /* CALL_FUNCTION_XXX opcodes defined below depend on this definition */
  104. #define CALL_FUNCTION 131 /* #args + (#kwargs<<8) */
  105. #define MAKE_FUNCTION 132 /* #defaults */
  106. #define BUILD_SLICE 133 /* Number of items */
  107. #define MAKE_CLOSURE 134 /* #free vars */
  108. #define LOAD_CLOSURE 135 /* Load free variable from closure */
  109. #define LOAD_DEREF 136 /* Load and dereference from closure cell */
  110. #define STORE_DEREF 137 /* Store into cell */
  111. /* The next 3 opcodes must be contiguous and satisfy
  112. (CALL_FUNCTION_VAR - CALL_FUNCTION) & 3 == 1 */
  113. #define CALL_FUNCTION_VAR 140 /* #args + (#kwargs<<8) */
  114. #define CALL_FUNCTION_KW 141 /* #args + (#kwargs<<8) */
  115. #define CALL_FUNCTION_VAR_KW 142 /* #args + (#kwargs<<8) */
  116. /* Support for opargs more than 16 bits long */
  117. #define EXTENDED_ARG 143
  118. enum cmp_op {PyCmp_LT=Py_LT, PyCmp_LE=Py_LE, PyCmp_EQ=Py_EQ, PyCmp_NE=Py_NE, PyCmp_GT=Py_GT, PyCmp_GE=Py_GE,
  119. PyCmp_IN, PyCmp_NOT_IN, PyCmp_IS, PyCmp_IS_NOT, PyCmp_EXC_MATCH, PyCmp_BAD};
  120. #define HAS_ARG(op) ((op) >= HAVE_ARGUMENT)
  121. #ifdef __cplusplus
  122. }
  123. #endif
  124. #endif /* !Py_OPCODE_H */