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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
|
static void (*const tms32051_opcode_table[256])(void) =
{
/* 0x00 - 0x0f */
op_lar_mem, op_lar_mem, op_lar_mem, op_lar_mem,
op_lar_mem, op_lar_mem, op_lar_mem, op_lar_mem,
op_lamm, op_smmr, op_subc, op_rpt_mem,
op_out, op_ldp_mem, op_lst_st0, op_lst_st1,
/* 0x10 - 0x1f */
op_lacc_mem, op_lacc_mem, op_lacc_mem, op_lacc_mem,
op_lacc_mem, op_lacc_mem, op_lacc_mem, op_lacc_mem,
op_lacc_mem, op_lacc_mem, op_lacc_mem, op_lacc_mem,
op_lacc_mem, op_lacc_mem, op_lacc_mem, op_lacc_mem,
/* 0x20 - 0x2f */
op_add_mem, op_add_mem, op_add_mem, op_add_mem,
op_add_mem, op_add_mem, op_add_mem, op_add_mem,
op_add_mem, op_add_mem, op_add_mem, op_add_mem,
op_add_mem, op_add_mem, op_add_mem, op_add_mem,
/* 0x30 - 0x3f */
op_sub_mem, op_sub_mem, op_sub_mem, op_sub_mem,
op_sub_mem, op_sub_mem, op_sub_mem, op_sub_mem,
op_sub_mem, op_sub_mem, op_sub_mem, op_sub_mem,
op_sub_mem, op_sub_mem, op_sub_mem, op_sub_mem,
/* 0x40 - 0x4f */
op_bit, op_bit, op_bit, op_bit,
op_bit, op_bit, op_bit, op_bit,
op_bit, op_bit, op_bit, op_bit,
op_bit, op_bit, op_bit, op_bit,
/* 0x50 - 0x5f */
op_mpya, op_mpys, op_sqra, op_sqrs,
op_mpy_mem, op_mpyu, op_invalid, op_bldp,
op_xpl_dbmr, op_opl_dbmr, op_apl_dbmr, op_cpl_dbmr,
op_xpl_imm, op_opl_imm, op_apl_imm, op_cpl_imm,
/* 0x60 - 0x6f */
op_addc, op_add_s16_mem, op_adds, op_addt,
op_subb, op_sub_s16_mem, op_subs, op_subt,
op_zalr, op_lacl_mem, op_lacc_s16_mem,op_lact,
op_xor_mem, op_or_mem, op_and_mem, op_bitt,
/* 0x70 - 0x7f */
op_lta, op_ltp, op_ltd, op_lt,
op_lts, op_lph, op_pshd, op_dmov,
op_adrk, op_b, op_call, op_banz,
op_sbrk, op_bd, op_calld, op_banzd,
/* 0x80 - 0x8f */
op_sar, op_sar, op_sar, op_sar,
op_sar, op_sar, op_sar, op_sar,
op_samm, op_lmmr, op_popd, op_mar,
op_spl, op_sph, op_sst_st0, op_sst_st1,
/* 0x90 - 0x9f */
op_sacl, op_sacl, op_sacl, op_sacl,
op_sacl, op_sacl, op_sacl, op_sacl,
op_sach, op_sach, op_sach, op_sach,
op_sach, op_sach, op_sach, op_sach,
/* 0xa0 - 0xaf */
op_norm, op_invalid, op_mac, op_macd,
op_blpd_bmar, op_blpd_imm, op_tblr, op_tblw,
op_bldd_slimm, op_bldd_dlimm, op_mads, op_madd,
op_bldd_sbmar, op_bldd_dbmar, op_splk, op_in,
/* 0xb0 - 0xbf */
op_lar_simm, op_lar_simm, op_lar_simm, op_lar_simm,
op_lar_simm, op_lar_simm, op_lar_simm, op_lar_simm,
op_add_simm, op_lacl_simm, op_sub_simm, op_rpt_simm,
op_ldp_imm, op_ldp_imm, op_group_be, op_group_bf,
/* 0xc0 - 0xcf */
op_mpy_simm, op_mpy_simm, op_mpy_simm, op_mpy_simm,
op_mpy_simm, op_mpy_simm, op_mpy_simm, op_mpy_simm,
op_mpy_simm, op_mpy_simm, op_mpy_simm, op_mpy_simm,
op_mpy_simm, op_mpy_simm, op_mpy_simm, op_mpy_simm,
/* 0xd0 - 0xdf */
op_mpy_simm, op_mpy_simm, op_mpy_simm, op_mpy_simm,
op_mpy_simm, op_mpy_simm, op_mpy_simm, op_mpy_simm,
op_mpy_simm, op_mpy_simm, op_mpy_simm, op_mpy_simm,
op_mpy_simm, op_mpy_simm, op_mpy_simm, op_mpy_simm,
/* 0xe0 - 0xef */
op_bcnd, op_bcnd, op_bcnd, op_bcnd,
op_xc, op_xc, op_xc, op_xc,
op_cc, op_cc, op_cc, op_cc,
op_retc, op_retc, op_retc, op_retc,
/* 0xf0 - 0xff */
op_bcndd, op_bcndd, op_bcndd, op_bcndd,
op_xc, op_xc, op_xc, op_xc,
op_ccd, op_ccd, op_ccd, op_ccd,
op_retcd, op_retcd, op_retcd, op_retcd
};
static void (*const tms32051_opcode_table_be[256])(void) =
{
/* 0x00 - 0x0f */
op_abs, op_cmpl, op_neg, op_pac,
op_apac, op_spac, op_invalid, op_invalid,
op_invalid, op_sfl, op_sfr, op_invalid,
op_rol, op_ror, op_invalid, op_invalid,
/* 0x10 - 0x1f */
op_addb, op_adcb, op_andb, op_orb,
op_rolb, op_rorb, op_sflb, op_sfrb,
op_sbb, op_sbbb, op_xorb, op_crgt,
op_crlt, op_exar, op_sacb, op_lacb,
/* 0x20 - 0x2f */
op_bacc, op_baccd, op_idle, op_idle2,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
/* 0x30 - 0x3f */
op_cala, op_invalid, op_pop, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_reti, op_invalid, op_rete, op_invalid,
op_push, op_calad, op_invalid, op_invalid,
/* 0x40 - 0x4f */
op_clrc_intm, op_setc_intm, op_clrc_ov, op_setc_ov,
op_clrc_cnf, op_setc_cnf, op_clrc_ext, op_setc_ext,
op_clrc_hold, op_setc_hold, op_clrc_tc, op_setc_tc,
op_clrc_xf, op_setc_xf, op_clrc_carry, op_setc_carry,
/* 0x50 - 0x5f */
op_invalid, op_trap, op_nmi, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_zpr, op_zap, op_sath, op_satl,
op_invalid, op_invalid, op_invalid, op_invalid,
/* 0x60 - 0x6f */
op_intr, op_intr, op_intr, op_intr,
op_intr, op_intr, op_intr, op_intr,
op_intr, op_intr, op_intr, op_intr,
op_intr, op_intr, op_intr, op_intr,
/* 0x70 - 0x7f */
op_intr, op_intr, op_intr, op_intr,
op_intr, op_intr, op_intr, op_intr,
op_intr, op_intr, op_intr, op_intr,
op_intr, op_intr, op_intr, op_intr,
/* 0x80 - 0x8f */
op_mpy_limm, op_and_s16_limm,op_or_s16_limm, op_xor_s16_limm,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
/* 0x90 - 0x9f */
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
/* 0xa0 - 0xaf */
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
/* 0xb0 - 0xbf */
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
/* 0xc0 - 0xcf */
op_invalid, op_invalid, op_invalid, op_invalid,
op_rpt_limm, op_rptz, op_rptb, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
/* 0xd0 - 0xdf */
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
/* 0xe0 - 0xef */
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
/* 0xf0 - 0xff */
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
};
static void (*const tms32051_opcode_table_bf[256])(void) =
{
/* 0x00 - 0x0f */
op_spm, op_spm, op_spm, op_spm,
op_invalid, op_invalid, op_invalid, op_invalid,
op_lar_limm, op_lar_limm, op_lar_limm, op_lar_limm,
op_lar_limm, op_lar_limm, op_lar_limm, op_lar_limm,
/* 0x10 - 0x1f */
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
/* 0x20 - 0x2f */
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
/* 0x30 - 0x3f */
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
/* 0x40 - 0x4f */
op_invalid, op_invalid, op_invalid, op_invalid,
op_cmpr, op_cmpr, op_cmpr, op_cmpr,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
/* 0x50 - 0x5f */
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
/* 0x60 - 0x6f */
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
/* 0x70 - 0x7f */
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
/* 0x80 - 0x8f */
op_lacc_limm, op_lacc_limm, op_lacc_limm, op_lacc_limm,
op_lacc_limm, op_lacc_limm, op_lacc_limm, op_lacc_limm,
op_lacc_limm, op_lacc_limm, op_lacc_limm, op_lacc_limm,
op_lacc_limm, op_lacc_limm, op_lacc_limm, op_lacc_limm,
/* 0x90 - 0x9f */
op_add_limm, op_add_limm, op_add_limm, op_add_limm,
op_add_limm, op_add_limm, op_add_limm, op_add_limm,
op_add_limm, op_add_limm, op_add_limm, op_add_limm,
op_add_limm, op_add_limm, op_add_limm, op_add_limm,
/* 0xa0 - 0xaf */
op_sub_limm, op_sub_limm, op_sub_limm, op_sub_limm,
op_sub_limm, op_sub_limm, op_sub_limm, op_sub_limm,
op_sub_limm, op_sub_limm, op_sub_limm, op_sub_limm,
op_sub_limm, op_sub_limm, op_sub_limm, op_sub_limm,
/* 0xb0 - 0xbf */
op_and_limm, op_and_limm, op_and_limm, op_and_limm,
op_and_limm, op_and_limm, op_and_limm, op_and_limm,
op_and_limm, op_and_limm, op_and_limm, op_and_limm,
op_and_limm, op_and_limm, op_and_limm, op_and_limm,
/* 0xc0 - 0xcf */
op_or_limm, op_or_limm, op_or_limm, op_or_limm,
op_or_limm, op_or_limm, op_or_limm, op_or_limm,
op_or_limm, op_or_limm, op_or_limm, op_or_limm,
op_or_limm, op_or_limm, op_or_limm, op_or_limm,
/* 0xd0 - 0xdf */
op_xor_limm, op_xor_limm, op_xor_limm, op_xor_limm,
op_xor_limm, op_xor_limm, op_xor_limm, op_xor_limm,
op_xor_limm, op_xor_limm, op_xor_limm, op_xor_limm,
op_xor_limm, op_xor_limm, op_xor_limm, op_xor_limm,
/* 0xe0 - 0xef */
op_bsar, op_bsar, op_bsar, op_bsar,
op_bsar, op_bsar, op_bsar, op_bsar,
op_bsar, op_bsar, op_bsar, op_bsar,
op_bsar, op_bsar, op_bsar, op_bsar,
/* 0xf0 - 0xff */
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
op_invalid, op_invalid, op_invalid, op_invalid,
};
|