1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
|
/*
Title: Definitions for the code-tree instructions.
Author: Dave Matthews, Cambridge University Computer Laboratory
Copyright (c) 2000
Cambridge University Technical Services Limited
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#define INSTR_enter_int 0x00
#if 0
/* for the mips version, we have the following relocations: */
INSTR_enter_int1 0x0d /* mips -> int at start of mips closure */
INSTR_enter_int2 0x91 /* used after int call instruction */
INSTR_return_w 0x92 /* int */
0x90 same as INSTR_local_w /* why? */
#endif
/* For use by the interpreter (only) SPF 26/6/95) */
#define INSTR_tail_0_0 0x01
#define INSTR_jump 0x02
#define INSTR_jump_false 0x03
#define INSTR_container 0x04 /* Added DCJM 5/10/05. */
#define INSTR_del_handler 0x05
#define INSTR_jump_i 0x06
#define INSTR_jump_i_false 0x07
#define INSTR_set_container 0x08 /* Added DCJM 5/10/05. */
#define INSTR_del_handler_i 0x09
#define INSTR_case 0x0a
#define INSTR_call_sl 0x0b
#define INSTR_call_closure 0x0c
#define INSTR_return_w 0x0d /* relocated on mips! */
#define INSTR_pad 0x0e
#define INSTR_raise_ex 0x10
#define INSTR_get_store_w 0x11
#define INSTR_non_local 0x12
#define INSTR_local_w 0x13
#define INSTR_indirect_w 0x14
#define INSTR_move_to_vec_w 0x15
#define INSTR_call_sl_X 0x16 /* Added DCJM 25/9/00. */
#define INSTR_set_stack_val_w 0x17
#define INSTR_reset_w 0x18
#define INSTR_reset_r_w 0x19
#define INSTR_const_addr 0x1a
#define INSTR_const_int_w 0x1b
#define INSTR_io_vec_entry 0x1c
#define INSTR_const_nil 0x1d
#define INSTR_jump_back 0x1e
#define INSTR_return_b 0x1f
#define INSTR_get_store_b 0x21
#define INSTR_local_b 0x22
#define INSTR_indirect_b 0x23
#define INSTR_move_to_vec_b 0x24
#define INSTR_set_stack_val_b 0x25
#define INSTR_reset_b 0x26
#define INSTR_reset_r_b 0x27
#define INSTR_const_int_b 0x28
#define INSTR_local_0 0x29
#define INSTR_local_1 0x2a
#define INSTR_local_2 0x2b
#define INSTR_local_3 0x2c
#define INSTR_local_4 0x2d
#define INSTR_local_5 0x2e
#define INSTR_local_6 0x2f
#define INSTR_local_7 0x30
#define INSTR_local_8 0x31
#define INSTR_local_9 0x32
#define INSTR_local_10 0x33
#define INSTR_local_11 0x34
#define INSTR_indirect_0 0x35
#define INSTR_indirect_1 0x36
#define INSTR_indirect_2 0x37
#define INSTR_indirect_3 0x38
#define INSTR_indirect_4 0x39
#define INSTR_indirect_5 0x3a
#define INSTR_const_0 0x3b
#define INSTR_const_1 0x3c
#define INSTR_const_2 0x3d
#define INSTR_const_3 0x3e
#define INSTR_const_4 0x3f
#define INSTR_const_10 0x40
#define INSTR_return_0 0x41
#define INSTR_return_1 0x42
#define INSTR_return_2 0x43
#define INSTR_return_3 0x44
#define INSTR_move_to_vec_0 0x45
#define INSTR_move_to_vec_1 0x46
#define INSTR_move_to_vec_2 0x47
#define INSTR_move_to_vec_3 0x48
#define INSTR_move_to_vec_4 0x49
#define INSTR_move_to_vec_5 0x4a
#define INSTR_move_to_vec_6 0x4b
#define INSTR_move_to_vec_7 0x4c
#define INSTR_const_addr_Xb 0x4d /* Added DCJM 25/9/00. */
#define INSTR_const_addr_Xw 0x4e /* Added DCJM 25/9/00. */
#define INSTR_call_sl_cX 0x4f /* Added DCJM 25/9/00. */
#define INSTR_reset_1 0x50
#define INSTR_reset_2 0x51
#define INSTR_get_store_2 0x52
#define INSTR_get_store_3 0x53
#define INSTR_get_store_4 0x54
#define INSTR_tuple_container 0x55 /* Added DCJM 5/10/05. */
#define INSTR_non_local_l_1 0x56
#define INSTR_non_local_l_2 0x57
#define INSTR_non_local_l_3 0x58
#define INSTR_call_sl_c 0x59
#define INSTR_io_vec_5 0x5a
#define INSTR_io_vec_6 0x5b
#define INSTR_integer_add 0x5c
#define INSTR_integer_minus 0x5d
#define INSTR_integer_equal 0x5e
#define INSTR_integer_leq 0x5f
#define INSTR_integer_greater 0x60
#define INSTR_boolean_or 0x61
#define INSTR_word_equal 0x62
#define INSTR_assign_word 0x63
#define INSTR_reset_r_1 0x64
#define INSTR_reset_r_2 0x65
#define INSTR_reset_r_3 0x66
#define INSTR_tuple_w 0x67
#define INSTR_tuple_b 0x68
#define INSTR_tuple_2 0x69
#define INSTR_tuple_3 0x6a
#define INSTR_tuple_4 0x6b
#define INSTR_lock 0x6c
#define INSTR_ldexc 0x6d
#define INSTR_io_vec_225 0x6e
#define INSTR_io_vec_226 0x6f
#define INSTR_io_vec_229 0x70
#define INSTR_io_vec_233 0x71
#define INSTR_io_vec_236 0x72
#define INSTR_io_vec_251 0x73
#define INSTR_io_vec_253 0x74
#define INSTR_io_vec_255 0x75
#define INSTR_set_handler 0x76
#define INSTR_push_handler 0x78
#define INSTR_set_handler_i 0x7a
#define INSTR_tail_b_b 0x7b
#define INSTR_tail 0x7c
#define INSTR_tail_3_b 0x7d
#define INSTR_tail_4_b 0x7e
#define INSTR_tail_3_2 0x7f
#define INSTR_tail_3_3 0x80
|