home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / pyth_os2.zip / python-1.0.2 / Include / opcode.h < prev    next >
C/C++ Source or Header  |  1994-04-14  |  4KB  |  144 lines

  1. #ifndef Py_OPCODE_H
  2. #define Py_OPCODE_H
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6.  
  7. /***********************************************************
  8. Copyright 1991, 1992, 1993, 1994 by Stichting Mathematisch Centrum,
  9. Amsterdam, The Netherlands.
  10.  
  11.                         All Rights Reserved
  12.  
  13. Permission to use, copy, modify, and distribute this software and its 
  14. documentation for any purpose and without fee is hereby granted, 
  15. provided that the above copyright notice appear in all copies and that
  16. both that copyright notice and this permission notice appear in 
  17. supporting documentation, and that the names of Stichting Mathematisch
  18. Centrum or CWI not be used in advertising or publicity pertaining to
  19. distribution of the software without specific, written prior permission.
  20.  
  21. STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
  22. THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
  23. FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
  24. FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  25. WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  26. ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
  27. OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  28.  
  29. ******************************************************************/
  30.  
  31. /* Instruction opcodes for compiled code */
  32.  
  33. #define STOP_CODE    0
  34. #define POP_TOP        1
  35. #define ROT_TWO        2
  36. #define ROT_THREE    3
  37. #define DUP_TOP        4
  38.  
  39. #define UNARY_POSITIVE    10
  40. #define UNARY_NEGATIVE    11
  41. #define UNARY_NOT    12
  42. #define UNARY_CONVERT    13
  43. #define UNARY_CALL    14
  44. #define UNARY_INVERT    15
  45.  
  46. #define BINARY_MULTIPLY    20
  47. #define BINARY_DIVIDE    21
  48. #define BINARY_MODULO    22
  49. #define BINARY_ADD    23
  50. #define BINARY_SUBTRACT    24
  51. #define BINARY_SUBSCR    25
  52. #define BINARY_CALL    26
  53.  
  54. #define SLICE        30
  55. /* Also uses 31-33 */
  56.  
  57. #define STORE_SLICE    40
  58. /* Also uses 41-43 */
  59.  
  60. #define DELETE_SLICE    50
  61. /* Also uses 51-53 */
  62.  
  63. #define STORE_SUBSCR    60
  64. #define DELETE_SUBSCR    61
  65.  
  66. #define BINARY_LSHIFT    62
  67. #define BINARY_RSHIFT    63
  68. #define BINARY_AND    64
  69. #define BINARY_XOR    65
  70. #define BINARY_OR    66
  71.  
  72.  
  73. #define PRINT_EXPR    70
  74. #define PRINT_ITEM    71
  75. #define PRINT_NEWLINE    72
  76.  
  77. #define BREAK_LOOP    80
  78. #define RAISE_EXCEPTION    81
  79. #define LOAD_LOCALS    82
  80. #define RETURN_VALUE    83
  81. #define LOAD_GLOBALS    84
  82. #define EXEC_STMT    85
  83.  
  84. #define BUILD_FUNCTION    86
  85. #define POP_BLOCK    87
  86. #define END_FINALLY    88
  87. #define BUILD_CLASS    89
  88.  
  89. #define HAVE_ARGUMENT    90    /* Opcodes from here have an argument: */
  90.  
  91. #define STORE_NAME    90    /* Index in name list */
  92. #define DELETE_NAME    91    /* "" */
  93. #define UNPACK_TUPLE    92    /* Number of tuple items */
  94. #define UNPACK_LIST    93    /* Number of list items */
  95. #define UNPACK_ARG    94    /* Number of arguments */
  96. #define STORE_ATTR    95    /* Index in name list */
  97. #define DELETE_ATTR    96    /* "" */
  98. #define STORE_GLOBAL    97    /* "" */
  99. #define DELETE_GLOBAL    98    /* "" */
  100. #define UNPACK_VARARG    99    /* Minimal number of arguments */
  101.  
  102. #define LOAD_CONST    100    /* Index in const list */
  103. #define LOAD_NAME    101    /* Index in name list */
  104. #define BUILD_TUPLE    102    /* Number of tuple items */
  105. #define BUILD_LIST    103    /* Number of list items */
  106. #define BUILD_MAP    104    /* Always zero for now */
  107. #define LOAD_ATTR    105    /* Index in name list */
  108. #define COMPARE_OP    106    /* Comparison operator */
  109. #define IMPORT_NAME    107    /* Index in name list */
  110. #define IMPORT_FROM    108    /* Index in name list */
  111. #define ACCESS_MODE    109    /* Name (mode is int on top of stack) */
  112.  
  113. #define JUMP_FORWARD    110    /* Number of bytes to skip */
  114. #define JUMP_IF_FALSE    111    /* "" */
  115. #define JUMP_IF_TRUE    112    /* "" */
  116. #define JUMP_ABSOLUTE    113    /* Target byte offset from beginning of code */
  117. #define FOR_LOOP    114    /* Number of bytes to skip */
  118.  
  119. #define LOAD_LOCAL    115    /* Index in name list */
  120. #define LOAD_GLOBAL    116    /* Index in name list */
  121.  
  122. #define SET_FUNC_ARGS    117    /* Argcount */
  123.  
  124. #define SETUP_LOOP    120    /* Target address (absolute) */
  125. #define SETUP_EXCEPT    121    /* "" */
  126. #define SETUP_FINALLY    122    /* "" */
  127.  
  128. #define RESERVE_FAST    123    /* Number of local variables */
  129. #define LOAD_FAST    124    /* Local variable number */
  130. #define STORE_FAST    125    /* Local variable number */
  131. #define DELETE_FAST    126    /* Local variable number */
  132.  
  133. #define SET_LINENO    127    /* Current line number */
  134.  
  135. /* Comparison operator codes (argument to COMPARE_OP) */
  136. enum cmp_op {LT, LE, EQ, NE, GT, GE, IN, NOT_IN, IS, IS_NOT, EXC_MATCH, BAD};
  137.  
  138. #define HAS_ARG(op) ((op) >= HAVE_ARGUMENT)
  139.  
  140. #ifdef __cplusplus
  141. }
  142. #endif
  143. #endif /* !Py_OPCODE_H */
  144.