Operation.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #ifndef OPERATION_H
  2. #define OPERATION_H
  3. #define NUMBER_OPERATION(name) OP_##name##_INT, OP_##name##_FLOAT
  4. #define TYPE_OPERATION(name) \
  5. OP_##name##_INT, OP_##name##_FLOAT, OP_##name##_BOOL
  6. typedef enum Operation {
  7. OP_NOTHING,
  8. NUMBER_OPERATION(PUSH),
  9. OP_PUSH_TRUE,
  10. OP_PUSH_FALSE,
  11. NUMBER_OPERATION(ADD),
  12. NUMBER_OPERATION(SUB),
  13. NUMBER_OPERATION(MUL),
  14. NUMBER_OPERATION(DIV),
  15. OP_MOD_INT,
  16. NUMBER_OPERATION(INVERT_SIGN),
  17. NUMBER_OPERATION(LESS),
  18. NUMBER_OPERATION(GREATER),
  19. NUMBER_OPERATION(EQUAL),
  20. OP_EQUAL_BOOL,
  21. OP_EQUAL_POINTER,
  22. OP_NOT,
  23. OP_AND,
  24. OP_OR,
  25. OP_BIT_NOT,
  26. OP_BIT_AND,
  27. OP_BIT_OR,
  28. OP_BIT_XOR,
  29. OP_LEFT_SHIFT,
  30. OP_RIGHT_SHIFT,
  31. TYPE_OPERATION(PRINT),
  32. OP_PRINT_POINTER,
  33. OP_LINE,
  34. OP_GOTO,
  35. OP_IF_GOTO,
  36. OP_PEEK_FALSE_GOTO,
  37. OP_PEEK_TRUE_GOTO,
  38. OP_GOSUB,
  39. OP_RETURN,
  40. TYPE_OPERATION(RETURN),
  41. OP_RESERVE,
  42. OP_LOAD,
  43. TYPE_OPERATION(LOAD),
  44. TYPE_OPERATION(STORE),
  45. OP_DEREFERENCE_VAR,
  46. OP_REFERENCE,
  47. OP_DUPLICATE_REFERENCE,
  48. OP_ADD_REFERENCE,
  49. OP_NEW,
  50. OP_DELETE,
  51. OP_LENGTH,
  52. OP_LOAD_POINTER,
  53. OP_STORE_POINTER,
  54. OP_PUSH_PRE_INT_CHANGE,
  55. OP_PUSH_POST_INT_CHANGE,
  56. OP_INT_CHANGE
  57. } Operation;
  58. #endif