/****************************************************************** * MISC * ******************************************************************/ #define M_INT_KIND 0 #define M_REAL_KIND 1 /****************************************************************** * DATA SIZES * ****************************************************************** * See machinetypes.h for a description of the following. * ******************************************************************/ #define M_SIZE_INTEGER 1 #define M_SIZE_LONG 1 #define M_SIZE_REAL 2 #define M_SIZE_ARRAY 1 #define M_MAX_SIZE 2 /****************************************************************** * INSTRUCTION CONSTANTS * ******************************************************************/ #define MS_INTEGER_CONSTANT 1 #define MS_REAL_CONSTANT 2 #define MS_FUNCTION 3 #define MS_INTEGER_GLOBAL 4 #define MS_REAL_GLOBAL 5 #define MS_INTEGER_ARRAY_GLOBAL 6 #define MS_REAL_ARRAY_GLOBAL 7 #define MS_START 8 #define MS_END 9 #define M_FIRST_EXECUTABLE_INSTRUCTION M_POP_INTEGER #define M_POP_INTEGER 10 #define M_POP_REAL 11 #define M_POP_ARRAY 12 #define M_DUP_INTEGER 13 #define M_DUP_REAL 14 #define M_DUP_ARRAY 15 #define M_INTEGER_ADD 16 #define M_INTEGER_SUBTRACT 17 #define M_INTEGER_MULTIPLY 18 #define M_INTEGER_DIVIDE 19 #define M_INTEGER_MOD 20 #define M_REAL_ADD 21 #define M_REAL_SUBTRACT 22 #define M_REAL_MULTIPLY 23 #define M_REAL_DIVIDE 24 #define M_COMPARE_INTEGERS 25 #define M_COMPARE_REALS 26 #define M_MAKE_INTEGER_ARRAY 27 #define M_MAKE_REAL_ARRAY 28 #define M_DELETE_ARRAY 29 #define M_INDEX 30 #define M_STORE_INTEGER_INDEXED 31 #define M_STORE_REAL_INDEXED 32 #define M_STORE_LEAVE_INTEGER_INDEXED 33 #define M_STORE_LEAVE_REAL_INDEXED 34 #define M_RETURN_INTEGER 35 #define M_RETURN_REAL 36 #define M_RETURN 37 #define M_READ_INTEGER 38 #define M_READ_REAL 39 #define M_READ_CHAR 40 #define M_WRITE_INTEGER 41 #define M_WRITE_REAL 42 #define M_WRITE_CHAR 43 #define M_PUSH_INTEGER 44 #define M_PUSH_INTEGER_CONSTANT 45 #define M_PUSH_REAL_CONSTANT 46 #define M_ALLOC 47 #define M_DEALLOC 48 #define M_FETCH_LOCAL_INTEGER 49 #define M_FETCH_LOCAL_REAL 50 #define M_FETCH_LOCAL_ARRAY 51 #define M_STORE_LOCAL_INTEGER 52 #define M_STORE_LOCAL_REAL 53 #define M_STORE_LOCAL_ARRAY 54 #define M_FETCH_PARAM_INTEGER 55 #define M_FETCH_PARAM_REAL 56 #define M_FETCH_PARAM_ARRAY 57 #define M_STORE_PARAM_INTEGER 58 #define M_STORE_PARAM_REAL 59 #define M_STORE_PARAM_ARRAY 60 #define M_FETCH_GLOBAL_INTEGER 61 #define M_FETCH_GLOBAL_REAL 62 #define M_FETCH_GLOBAL_ARRAY 63 #define M_STORE_GLOBAL_INTEGER 64 #define M_STORE_GLOBAL_REAL 65 #define M_STORE_GLOBAL_ARRAY 66 #define M_LABEL 67 #define M_GOTO 68 #define M_GOTO_IF_ZERO 69 #define M_GOTO_IF_NOT_ZERO 70 #define M_GOTO_IF_POSITIVE 71 #define M_GOTO_IF_NOT_POSITIVE 72 #define M_GOTO_IF_NEGATIVE 73 #define M_GOTO_IF_NOT_NEGATIVE 74 #define M_GOTO_IF_FAILED 75 #define M_GOTO_IF_EOF 76 #define M_CALL 77 #define M_LAST_INSTRUCTION M_CALL