opcodes.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #ifdef OPCODE
  2. OPCODE(NO_OP)
  3. OPCODE(DELETED_OP)
  4. OPCODE(LOAD_CONST)
  5. OPCODE(IMPORT_NAME)
  6. OPCODE(PRINT_EXPR)
  7. OPCODE(POP_TOP)
  8. OPCODE(CALL)
  9. OPCODE(RETURN_VALUE)
  10. OPCODE(BINARY_OP)
  11. OPCODE(COMPARE_OP)
  12. OPCODE(BITWISE_OP)
  13. OPCODE(IS_OP)
  14. OPCODE(CONTAINS_OP)
  15. OPCODE(UNARY_NEGATIVE)
  16. OPCODE(UNARY_NOT)
  17. OPCODE(DUP_TOP)
  18. OPCODE(BUILD_LIST)
  19. OPCODE(BUILD_MAP)
  20. OPCODE(BUILD_SET)
  21. OPCODE(BUILD_SLICE)
  22. OPCODE(LIST_APPEND)
  23. OPCODE(GET_ITER)
  24. OPCODE(FOR_ITER)
  25. OPCODE(POP_JUMP_IF_FALSE)
  26. OPCODE(JUMP_ABSOLUTE)
  27. OPCODE(SAFE_JUMP_ABSOLUTE)
  28. OPCODE(JUMP_IF_TRUE_OR_POP)
  29. OPCODE(JUMP_IF_FALSE_OR_POP)
  30. // non-standard python opcodes
  31. OPCODE(LOAD_NONE)
  32. OPCODE(LOAD_TRUE)
  33. OPCODE(LOAD_FALSE)
  34. OPCODE(LOAD_EVAL_FN) // load eval() callable into stack
  35. OPCODE(LOAD_LAMBDA) // LOAD_CONST + set __module__ attr
  36. OPCODE(LOAD_ELLIPSIS)
  37. OPCODE(ASSERT)
  38. OPCODE(RAISE_ERROR)
  39. OPCODE(STORE_FUNCTION)
  40. OPCODE(BUILD_CLASS)
  41. OPCODE(LOAD_NAME_REF) // no arg
  42. OPCODE(BUILD_ATTR_REF) // arg for the name_ptr, [ptr, name_ptr] -> (*ptr).name_ptr
  43. OPCODE(BUILD_INDEX_REF) // no arg, [ptr, expr] -> (*ptr)[expr]
  44. OPCODE(STORE_NAME_REF) // arg for the name_ptr, [expr], directly store to the name_ptr without pushing it to the stack
  45. OPCODE(STORE_REF) // no arg, [ptr, expr] -> *ptr = expr
  46. OPCODE(DELETE_REF) // no arg, [ptr] -> [] -> delete ptr
  47. OPCODE(BUILD_SMART_TUPLE) // if all elements are pointers, build a compound pointer, otherwise build a tuple
  48. OPCODE(BUILD_STRING) // arg is the expr count, build a string from the top of the stack
  49. OPCODE(GOTO)
  50. OPCODE(WITH_ENTER)
  51. OPCODE(WITH_EXIT)
  52. OPCODE(JUMP_RELATIVE)
  53. #endif