📄 sparc.c
字号:
/* 95 */ "reg: CVUU4(INDIRU1(addr))",
/* 96 */ "reg: CVUU4(INDIRU2(addr))",
/* 97 */ "reg: CVUI4(INDIRU1(addr))",
/* 98 */ "reg: CVUI4(INDIRU2(addr))",
/* 99 */ "reg: LOADI1(reg)",
/* 100 */ "reg: LOADI2(reg)",
/* 101 */ "reg: LOADI4(reg)",
/* 102 */ "reg: LOADP4(reg)",
/* 103 */ "reg: LOADU1(reg)",
/* 104 */ "reg: LOADU2(reg)",
/* 105 */ "reg: LOADU4(reg)",
/* 106 */ "reg: CNSTI1",
/* 107 */ "reg: CNSTI2",
/* 108 */ "reg: CNSTI4",
/* 109 */ "reg: CNSTP4",
/* 110 */ "reg: CNSTU1",
/* 111 */ "reg: CNSTU2",
/* 112 */ "reg: CNSTU4",
/* 113 */ "reg: con",
/* 114 */ "rc: con13",
/* 115 */ "rc: reg",
/* 116 */ "reg: ADDI4(reg,rc)",
/* 117 */ "reg: ADDP4(reg,rc)",
/* 118 */ "reg: ADDU4(reg,rc)",
/* 119 */ "reg: BANDI4(reg,rc)",
/* 120 */ "reg: BORI4(reg,rc)",
/* 121 */ "reg: BXORI4(reg,rc)",
/* 122 */ "reg: BANDU4(reg,rc)",
/* 123 */ "reg: BORU4(reg,rc)",
/* 124 */ "reg: BXORU4(reg,rc)",
/* 125 */ "reg: SUBI4(reg,rc)",
/* 126 */ "reg: SUBP4(reg,rc)",
/* 127 */ "reg: SUBU4(reg,rc)",
/* 128 */ "rc5: CNSTI4",
/* 129 */ "rc5: reg",
/* 130 */ "reg: LSHI4(reg,rc5)",
/* 131 */ "reg: LSHU4(reg,rc5)",
/* 132 */ "reg: RSHI4(reg,rc5)",
/* 133 */ "reg: RSHU4(reg,rc5)",
/* 134 */ "reg: BANDI4(reg,BCOMI4(rc))",
/* 135 */ "reg: BORI4(reg,BCOMI4(rc))",
/* 136 */ "reg: BXORI4(reg,BCOMI4(rc))",
/* 137 */ "reg: BANDU4(reg,BCOMU4(rc))",
/* 138 */ "reg: BORU4(reg,BCOMU4(rc))",
/* 139 */ "reg: BXORU4(reg,BCOMU4(rc))",
/* 140 */ "reg: NEGI4(reg)",
/* 141 */ "reg: BCOMI4(reg)",
/* 142 */ "reg: BCOMU4(reg)",
/* 143 */ "reg: CVII4(reg)",
/* 144 */ "reg: CVUU4(reg)",
/* 145 */ "reg: CVUU4(reg)",
/* 146 */ "reg: CVUU4(reg)",
/* 147 */ "reg: CVUI4(reg)",
/* 148 */ "reg: CVUI4(reg)",
/* 149 */ "addrg: ADDRGP4",
/* 150 */ "stmt: JUMPV(addrg)",
/* 151 */ "stmt: JUMPV(addr)",
/* 152 */ "stmt: LABELV",
/* 153 */ "stmt: EQI4(reg,rc)",
/* 154 */ "stmt: EQU4(reg,rc)",
/* 155 */ "stmt: GEI4(reg,rc)",
/* 156 */ "stmt: GEU4(reg,rc)",
/* 157 */ "stmt: GTI4(reg,rc)",
/* 158 */ "stmt: GTU4(reg,rc)",
/* 159 */ "stmt: LEI4(reg,rc)",
/* 160 */ "stmt: LEU4(reg,rc)",
/* 161 */ "stmt: LTI4(reg,rc)",
/* 162 */ "stmt: LTU4(reg,rc)",
/* 163 */ "stmt: NEI4(reg,rc)",
/* 164 */ "stmt: NEU4(reg,rc)",
/* 165 */ "call: ADDRGP4",
/* 166 */ "call: addr",
/* 167 */ "reg: CALLF8(call)",
/* 168 */ "reg: CALLF4(call)",
/* 169 */ "reg: CALLI4(call)",
/* 170 */ "reg: CALLP4(call)",
/* 171 */ "reg: CALLU4(call)",
/* 172 */ "stmt: CALLV(call)",
/* 173 */ "stmt: CALLB(call,reg)",
/* 174 */ "stmt: RETF8(reg)",
/* 175 */ "stmt: RETF4(reg)",
/* 176 */ "stmt: RETI4(reg)",
/* 177 */ "stmt: RETU4(reg)",
/* 178 */ "stmt: RETP4(reg)",
/* 179 */ "stmt: ARGI4(reg)",
/* 180 */ "stmt: ARGU4(reg)",
/* 181 */ "stmt: ARGP4(reg)",
/* 182 */ "stmt: ARGF4(reg)",
/* 183 */ "stmt: ARGF8(reg)",
/* 184 */ "reg: DIVI4(reg,rc)",
/* 185 */ "reg: DIVU4(reg,rc)",
/* 186 */ "reg: MODI4(reg,rc)",
/* 187 */ "reg: MODU4(reg,rc)",
/* 188 */ "reg: MULI4(rc,reg)",
/* 189 */ "reg: MULU4(rc,reg)",
/* 190 */ "reg: ADDF8(reg,reg)",
/* 191 */ "reg: ADDF4(reg,reg)",
/* 192 */ "reg: DIVF8(reg,reg)",
/* 193 */ "reg: DIVF4(reg,reg)",
/* 194 */ "reg: MULF8(reg,reg)",
/* 195 */ "reg: MULF4(reg,reg)",
/* 196 */ "reg: SUBF8(reg,reg)",
/* 197 */ "reg: SUBF4(reg,reg)",
/* 198 */ "reg: NEGF4(reg)",
/* 199 */ "reg: LOADF4(reg)",
/* 200 */ "reg: CVFF4(reg)",
/* 201 */ "reg: CVFF8(reg)",
/* 202 */ "reg: CVFI4(reg)",
/* 203 */ "reg: CVFI4(reg)",
/* 204 */ "reg: CVIF4(reg)",
/* 205 */ "reg: CVIF8(reg)",
/* 206 */ "rel: EQF8(reg,reg)",
/* 207 */ "rel: EQF4(reg,reg)",
/* 208 */ "rel: GEF8(reg,reg)",
/* 209 */ "rel: GEF4(reg,reg)",
/* 210 */ "rel: GTF8(reg,reg)",
/* 211 */ "rel: GTF4(reg,reg)",
/* 212 */ "rel: LEF8(reg,reg)",
/* 213 */ "rel: LEF4(reg,reg)",
/* 214 */ "rel: LTF8(reg,reg)",
/* 215 */ "rel: LTF4(reg,reg)",
/* 216 */ "rel: NEF8(reg,reg)",
/* 217 */ "rel: NEF4(reg,reg)",
/* 218 */ "stmt: rel",
/* 219 */ "reg: LOADF8(reg)",
/* 220 */ "reg: NEGF8(reg)",
/* 221 */ "stmt: ASGNB(reg,INDIRB(reg))",
};
static short _decode_stmt[] = {
0,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
35,
70,
71,
72,
73,
74,
75,
76,
77,
80,
82,
84,
85,
86,
87,
88,
89,
90,
91,
92,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
218,
221,
};
static short _decode_reg[] = {
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
36,
39,
42,
43,
62,
63,
64,
65,
66,
67,
68,
69,
79,
81,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
167,
168,
169,
170,
171,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
219,
220,
};
static short _decode_con[] = {
0,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
};
static short _decode_stk13[] = {
0,
37,
38,
};
static short _decode_stk[] = {
0,
40,
41,
};
static short _decode_con13[] = {
0,
44,
45,
46,
47,
48,
49,
50,
};
static short _decode_base[] = {
0,
51,
52,
53,
54,
55,
56,
};
static short _decode_addr[] = {
0,
57,
58,
59,
60,
61,
};
static short _decode_addrl[] = {
0,
78,
};
static short _decode_spill[] = {
0,
83,
};
static short _decode_rc[] = {
0,
114,
115,
};
static short _decode_rc5[] = {
0,
128,
129,
};
static short _decode_addrg[] = {
0,
149,
};
static short _decode_call[] = {
0,
165,
166,
};
static short _decode_rel[] = {
0,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
};
static int _rule(void *state, int goalnt) {
if (goalnt < 1 || goalnt > 15)
fatal("_rule", "Bad goal nonterminal %d\n", goalnt);
if (!state)
return 0;
switch (goalnt) {
case _stmt_NT: return _decode_stmt[((struct _state *)state)->rule._stmt];
case _reg_NT: return _decode_reg[((struct _state *)state)->rule._reg];
case _con_NT: return _decode_con[((struct _state *)state)->rule._con];
case _stk13_NT: return _decode_stk13[((struct _state *)state)->rule._stk13];
case _stk_NT: return _decode_stk[((struct _state *)state)->rule._stk];
case _con13_NT: return _decode_con13[((struct _state *)state)->rule._con13];
case _base_NT: return _decode_base[((struct _state *)state)->rule._base];
case _addr_NT: return _decode_addr[((struct _state *)state)->rule._addr];
case _addrl_NT: return _decode_addrl[((struct _state *)state)->rule._addrl];
case _spill_NT: return _decode_spill[((struct _state *)state)->rule._spill];
case _rc_NT: return _decode_rc[((struct _state *)state)->rule._rc];
case _rc5_NT: return _decode_rc5[((struct _state *)state)->rule._rc5];
case _addrg_NT: return _decode_addrg[((struct _state *)state)->rule._addrg];
case _call_NT: return _decode_call[((struct _state *)state)->rule._call];
case _rel_NT: return _decode_rel[((struct _state *)state)->rule._rel];
default:
fatal("_rule", "Bad goal nonterminal %d\n", goalnt);
return 0;
}
}
static void _closure_reg(NODEPTR_TYPE, int);
static void _closure_con(NODEPTR_TYPE, int);
static void _closure_stk13(NODEPTR_TYPE, int);
static void _closure_stk(NODEPTR_TYPE, int);
static void _closure_con13(NODEPTR_TYPE, int);
static void _closure_base(NODEPTR_TYPE, int);
static void _closure_addr(NODEPTR_TYPE, int);
static void _closure_rel(NODEPTR_TYPE, int);
static void _closure_reg(NODEPTR_TYPE a, int c) {
struct _state *p = STATE_LABEL(a);
if (c + 0 < p->cost[_rc5_NT]) {
p->cost[_rc5_NT] = c + 0;
p->rule._rc5 = 2;
}
if (c + 0 < p->cost[_rc_NT]) {
p->cost[_rc_NT] = c + 0;
p->rule._rc = 2;
}
if (c + 0 < p->cost[_base_NT]) {
p->cost[_base_NT] = c + 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -