File: int_opcodes.h

package info (click to toggle)
polyml 5.2.1-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 19,692 kB
  • ctags: 17,567
  • sloc: cpp: 37,221; sh: 9,591; asm: 4,120; ansic: 428; makefile: 203; ml: 191; awk: 91; sed: 10
file content (164 lines) | stat: -rw-r--r-- 5,644 bytes parent folder | download | duplicates (2)
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