gf-3.4: src/runtime/c/teyjus/tables_gen/instrformats/instrformats_64.in
{
type intref = int ref
type aconstant = Absyn.aconstant
type akind = Absyn.akind
}
OPERAND TYPES
P /* (1 byte) padding */
WP /* (1 word) padding */
R RegInd Byte 1 int /* argument register number */
E EnvInd Byte 1 int /* environment variable number */
N NextClauseInd Byte 1 int /* next clause number in impt or impl pt */
I1 OneByteInt Byte 1 int /* 1 byte natural number */
CE ClEnvInd Byte 1 int /* closure environment variable number */
SEG ImpSegInd Byte 1 int /* import segment index */
C CstIndex TwoBytes 2 aconstant /* constant symbol table index */
K KstIndex TwoBytes 2 akind /* kind symbol table index */
L CodeLabel CSpacePtr 8 intref /* code location */
I Int int 4 int /* integer immediate value */
F Float float 4 float /* floating point immediate value */
S Str DF_StrDataPtr 2 int /* string pointer */
MT ModTab MemPtr 2 int /* module table address */
IT ImplTab MemPtr 2 int /* impl table address */
HT HashTab MemPtr 2 int /* hash table address */
BVT BranchTab MemPtr 2 int /* branch table for bound var indexing */
X /* operand list terminator */
OPCODE Byte 1
INSTR CATEGORY
MAX OPERAND 12
X [P P P P P P P X X X X X]
X_LEN 8
RX [R P P P P P P X X X X X]
RX_LEN 8; RX_R 1
EX [E P P P P P P X X X X X]
EX_LEN 8; EX_E 1
I1X [I1 P P P P P P X X X X X]
I1X_LEN 8; I1X_I1 1
CX [P C P P P P X X X X X X]
CX_LEN 8; CX_C 2
KX [P K P P P P X X X X X X]
KX_LEN 8; KX_K 2
IX [P P P P P P P I X X X X]
IX_LEN 16; IX_I 8
FX [P P P P P P P F X X X X]
FX_LEN 16; FX_F 8
SX [P P P P P P P S X X X X]
SX_LEN 16; SX_S 8
MTX [P P P P P P P MT X X X X]
MTX_LEN 16; MTX_MT 8
LX [P P P P P P P L X X X X]
LX_LEN 16; LX_L 8
RRX [R R P P P P P X X X X X]
RRX_LEN 8; RRX_R1 1; RRX_R2 2
ERX [E R P P P P P X X X X X]
ERX_LEN 8; ERX_E 1; ERX_R 2
RCX [R C P P P P X X X X X X]
RCX_LEN 8; RCX_R 1; RCX_C 2
RIX [R P P P P P P I X X X X]
RIX_LEN 16; RIX_R 1; RIX_I 8
RFX [R P P P P P P F X X X X]
RFX_LEN 16; RFX_R 1; RFX_F 8
RSX [R P P P P P P S X X X X]
RSX_LEN 16; RSX_R 1; RSX_S 8
RI1X [R I1 P P P P P X X X X X]
RI1X_LEN 8; RI1X_R 1; RI1X_I1 2
RCEX [R CE P P P P P X X X X X]
RCEX_LEN 8; RCEX_R 1; RCEX_CE 2
ECEX [E CE P P P P P X X X X X]
ECEX_LEN 8; ECEX_E 1; ECEX_CE 2
CLX [P C P P P P L X X X X X]
CLX_LEN 16; CLX_C 2; CLX_L 8
RKX [R K P P P P X X X X X X]
RKX_LEN 8; RKX_R 1; RKX_K 2
ECX [E C P P P P X X X X X X]
ECX_LEN 8; ECX_E 1; ECX_C 2
I1ITX [I1 P P P P P P IT X X X X]
I1ITX_LEN 16; I1ITX_I1 1; I1ITX_IT 8
I1LX [I1 P P P P P P L X X X X]
I1LX_LEN 16; I1LX_I1 1; I1LX_L 8
SEGLX [SEG P P P P P P L X X X X]
SEGLX_LEN 16; SEGLX_SEG 1; SEGLX_L 8
I1LWPX [I1 P P P P P P L WP X X X]
I1LWPX_LEN 24; I1LWPX_I1 1; I1LWPX_L 8
I1NX [I1 N P P P P P X X X X X]
I1NX_LEN 8; I1NX_I1 1; I1NX_N 2
I1HTX [I1 P P P P P P HT X X X X]
I1HTX_LEN 16; I1HTX_I1 1; I1HTX_HT 8
I1BVTX [I1 P P P P P P BVT X X X X]
I1BVTX_LEN 16; I1BVTX_I1 1; I1BVTX_BVT 8
CWPX [P C P P P P WP X X X X X]
CWPX_LEN 16; CWPX_C 2
I1WPX [I1 P P P P P P WP X X X X]
I1WPX_LEN 16; I1WPX_I1 1
RRI1X [R R I1 P P P P X X X X X]
RRI1X_LEN 8; RRI1X_R1 1; RRI1X_R2 2; RRI1X_I1 3
RCLX [R C P P P P L X X X X X]
RCLX_LEN 16; RCLX_R 1; RCLX_C 2; RCLX_L 8
RCI1X [R C I1 P P P X X X X X X]
RCI1X_LEN 8; RCI1X_R 1; RCI1X_C 2; RCI1X_I1 4
SEGI1LX [SEG I1 P P P P P L X X X X]
SEGI1LX_LEN 16; SEGI1LX_SEG 1; SEGI1LX_I1 2; SEGI1LX_L 8
I1LLX [I1 P P P P P P L L X X X]
I1LLX_LEN 24; I1LLX_I1 1; I1LLX_L1 8; I1LLX_L2 16
NLLX [N P P P P P P L L X X X]
NLLX_LEN 24; NLLX_N 1; NLLX_L1 8; NLLX_L2 16
LLLLX [P P P P P P P L L L L X]
LLLLX_LEN 40; LLLLX_L1 8; LLLLX_L2 16; LLLLX_L3 24; LLLLX_L4 32
I1CWPX [I1 C P P P P WP X X X X X]
I1CWPX_LEN 16; I1CWPX_I1 1; I1CWPX_C 2
I1I1WPX [I1 I1 P P P P P WP X X X X]
I1I1WPX_LEN 16; I1I1WPX_I11 1; I1I1WPX_I12 2
CALL_I1_LEN 15
INSTRUCTIONS 145
/* Instructions for term unification and creation */
0 put_variable_t RRX RRX_LEN;
1 put_variable_p ERX ERX_LEN;
2 put_value_t RRX RRX_LEN;
3 put_value_p ERX ERX_LEN;
4 put_unsafe_value ERX ERX_LEN;
5 copy_value ERX ERX_LEN;
6 put_m_const RCX RCX_LEN;
7 put_p_const RCX RCX_LEN;
8 put_nil RX RX_LEN;
9 put_integer RIX RIX_LEN;
10 put_float RFX RFX_LEN;
11 put_string RSX RSX_LEN;
12 put_index RI1X RI1X_LEN;
13 put_app RRI1X RRI1X_LEN;
14 put_list RX RX_LEN;
15 put_lambda RRI1X RRI1X_LEN;
16 set_variable_t RX RX_LEN;
17 set_variable_te RX RX_LEN;
18 set_variable_p EX EX_LEN;
19 set_value_t RX RX_LEN;
20 set_value_p EX EX_LEN;
21 globalize_pt ERX ERX_LEN;
22 globalize_t RX RX_LEN;
23 set_m_const CX CX_LEN;
24 set_p_const CX CX_LEN;
25 set_nil X X_LEN;
26 set_integer IX IX_LEN;
27 set_float FX FX_LEN;
28 set_string SX SX_LEN;
29 set_index I1X I1X_LEN;
30 set_void I1X I1X_LEN;
31 deref RX RX_LEN;
32 set_lambda RI1X RI1X_LEN;
33 get_variable_t RRX RRX_LEN;
34 get_variable_p ERX ERX_LEN;
35 init_variable_t RCEX RCEX_LEN;
36 init_variable_p ECEX ECEX_LEN;
37 get_m_constant RCX RCX_LEN;
38 get_p_constant RCLX RCLX_LEN;
39 get_integer RIX RIX_LEN;
40 get_float RFX RFX_LEN;
41 get_string RSX RSX_LEN;
42 get_nil RX RX_LEN;
43 get_m_structure RCI1X RCI1X_LEN;
44 get_p_structure RCI1X RCI1X_LEN;
45 get_list RX RX_LEN;
46 unify_variable_t RX RX_LEN;
47 unify_variable_p EX EX_LEN;
48 unify_value_t RX RX_LEN;
49 unify_value_p EX EX_LEN;
50 unify_local_value_t RX RX_LEN;
51 unify_local_value_p EX EX_LEN;
52 unify_m_constant CX CX_LEN;
53 unify_p_constant CLX CLX_LEN;
54 unify_integer IX IX_LEN;
55 unify_float FX FX_LEN;
56 unify_string SX SX_LEN;
57 unify_nil X X_LEN;
58 unify_void I1X I1X_LEN;
/* Instructions for type unification and creation */
59 put_type_variable_t RRX RRX_LEN;
60 put_type_variable_p ERX ERX_LEN;
61 put_type_value_t RRX RRX_LEN;
62 put_type_value_p ERX ERX_LEN;
63 put_type_unsafe_value ERX ERX_LEN;
64 put_type_const RKX RKX_LEN;
65 put_type_structure RKX RKX_LEN;
66 put_type_arrow RX RX_LEN;
67 set_type_variable_t RX RX_LEN;
68 set_type_variable_p EX EX_LEN;
69 set_type_value_t RX RX_LEN;
70 set_type_value_p EX EX_LEN;
71 set_type_local_value_t RX RX_LEN;
72 set_type_local_value_p EX EX_LEN;
73 set_type_constant KX KX_LEN;
74 get_type_variable_t RRX RRX_LEN;
75 get_type_variable_p ERX ERX_LEN;
76 init_type_variable_t RCEX RCEX_LEN;
77 init_type_variable_p ECEX ECEX_LEN;
78 get_type_value_t RRX RRX_LEN;
79 get_type_value_p ERX ERX_LEN;
80 get_type_constant RKX RKX_LEN;
81 get_type_structure RKX RKX_LEN;
82 get_type_arrow RX RX_LEN;
83 unify_type_variable_t RX RX_LEN;
84 unify_type_variable_p EX EX_LEN;
85 unify_type_value_t RX RX_LEN;
86 unify_type_value_p EX EX_LEN;
87 unify_envty_value_t RX RX_LEN;
88 unify_envty_value_p EX EX_LEN;
89 unify_type_local_value_t RX RX_LEN;
90 unify_type_local_value_p EX EX_LEN;
91 unify_envty_local_value_t RX RX_LEN;
92 unify_envty_local_value_p EX EX_LEN;
93 unify_type_constant KX KX_LEN;
/* Instructions for handling higher-order aspects */
94 pattern_unify_t RRX RRX_LEN;
95 pattern_unify_p ERX ERX_LEN;
96 finish_unify X X_LEN;
97 head_normalize_t RX RX_LEN;
98 head_normalize_p EX EX_LEN;
/* Instructions for handling logical aspects */
99 incr_universe X X_LEN;
100 decr_universe X X_LEN;
101 set_univ_tag ECX ECX_LEN;
102 tag_exists_t RX RX_LEN;
103 tag_exists_p EX EX_LEN;
104 tag_variable EX EX_LEN;
105 push_impl_point I1ITX I1ITX_LEN;
106 pop_impl_point X X_LEN;
107 add_imports SEGI1LX SEGI1LX_LEN;
108 remove_imports SEGLX SEGLX_LEN;
109 push_import MTX MTX_LEN;
110 pop_imports I1X I1X_LEN;
/* Control Instructions */
111 allocate I1X I1X_LEN;
112 deallocate X X_LEN;
113 call I1LX I1LX_LEN;
114 call_name I1CWPX I1CWPX_LEN;
115 execute LX LX_LEN;
116 execute_name CWPX CWPX_LEN;
117 proceed X X_LEN;
/* Choice Instructions */
118 try_me_else I1LX I1LX_LEN;
119 retry_me_else I1LX I1LX_LEN;
120 trust_me I1WPX I1WPX_LEN;
121 try I1LX I1LX_LEN;
122 retry I1LX I1LX_LEN;
123 trust I1LWPX I1LWPX_LEN;
124 trust_ext I1NX I1NX_LEN;
125 try_else I1LLX I1LLX_LEN;
126 retry_else I1LLX I1LLX_LEN;
127 branch LX LX_LEN;
/* Indexing Instructions */
128 switch_on_term LLLLX LLLLX_LEN;
129 switch_on_constant I1HTX I1HTX_LEN;
130 switch_on_bvar I1BVTX I1BVTX_LEN;
131 switch_on_reg NLLX NLLX_LEN;
/* Cut Instructions */
132 neck_cut X X_LEN;
133 get_level EX EX_LEN;
134 put_level EX EX_LEN;
135 cut EX EX_LEN;
/* Miscellaneous Instructions */
136 call_builtin I1I1WPX I1I1WPX_LEN;
137 builtin I1X I1X_LEN;
138 stop X X_LEN;
139 halt X X_LEN;
140 fail X X_LEN;
/* new added */
141 create_type_variable EX EX_LEN;
/* resolved by the linker */
142 execute_link_only CWPX CWPX_LEN;
143 call_link_only I1CWPX I1CWPX_LEN;
144 put_variable_te RRX RRX_LEN