Optimize some boolean conditions.
[marekmrva_bc.git] / ResourcesClass.pas
blob3144725ee8902bcea18589c20f2a4047b5ecad7c
1 unit ResourcesClass;
3 interface
5 uses
6 ConstantsClass, FunctionsClass, TypesClass;
8 const
10 // ************************************************************************** //
11 // * GUI Resources * //
12 // ************************************************************************** //
14 { Fonts used }
16 FONT_DEFAULT_NAME = 'Lucida Console';
17 FONT_DEFAULT_SIZE = 10;
18 FONT_DEFAULT_HEIGHT = 15;
20 { Error Messages }
22 GRID_INST_ERROR = 'Error creating instruction';
24 { Dialog box texts }
26 TEXT_RESET = 'Source has been modified. Reset?';
28 { Popup menu texts }
30 POP_ASM_CHANGE = 'Change';
31 POP_ASM_INSERT = 'Insert';
32 POP_ASM_REMOVE = 'Remove';
33 POP_ASM_STEP = 'Single Step';
34 POP_ASM_GET_ORIGIN = 'Go to Origin';
35 POP_ASM_SET_ORIGIN = 'New Origin here';
36 POP_ASM_RESET = 'Reset Program';
38 { Misc. Captions, Texts, Buttons, etc. }
40 EXC_VIEW_TYPE = 'Type';
41 EXC_VIEW_EXC = 'Exc';
42 EXC_VIEW_MASK = 'Msk';
43 EXC_VIEW_TOGGLE = 'Toggle';
44 EXC_VIEW_TRUE = '1';
45 EXC_VIEW_FALSE = '0';
47 FL_EDIT_OK = 'OK';
48 FL_EDIT_CANCEL = 'Cancel';
49 FL_EDIT_MODIFY = 'Modify ';
50 FL_EDIT_FLOAT = 'Float';
51 FL_EDIT_HEX = 'Hex';
52 FL_EDIT_TAG = ' tag';
53 FL_EDIT_MODIFY_TAG = FL_EDIT_MODIFY + 'associated' + FL_EDIT_TAG;
55 ASM_INPUT_BUTTON_ASSEMBLE = 'Assemble';
56 ASM_INPUT_BUTTON_CANCEL = 'Cancel';
57 ASM_INPUT_CAPTION_INSERT = 'Insert instruction at address';
58 ASM_INPUT_CAPTION_CHANGE = 'Change instruction at address';
60 { Preprogrammed Color Themes }
62 THEME_GRID_DEFAULT: TGridTheme = (
63 Address: (None: (FG: $404040; BG: $FFFFFF);
64 Selected: (FG: $202020; BG: $E0E0E0));
65 Assembly: (None: (FG: $202020; BG: $FFFFFF);
66 Selected: (FG: $000000; BG: $E0E0E0));
67 Highlight: (FG: $000000; BG: $00FFFF);
68 Step: (FG: $000000; BG: $FFA080);
71 THEME_GRID_DARK: TGridTheme = (
72 Address: (None: (FG: $C0C0C0; BG: $000000);
73 Selected: (FG: $E0E0E0; BG: $505050));
74 Assembly: (None: (FG: $FFFFFF; BG: $000000);
75 Selected: (FG: $FFFFFF; BG: $505050));
76 Highlight: (FG: $000000; BG: $00FFFF);
77 Step: (FG: $FFFFFF; BG: $A01010);
80 THEME_VIEW_DEFAULT: TViewTheme = (
81 Line: (None: (FG: $404040; BG: $FFFFFF);
82 Selected: (FG: $202020; BG: $E0E0E0));
83 Change: $0000FF;
86 THEME_VIEW_DARK: TViewTheme = (
87 Line: (None: (FG: $FFFFFF; BG: $000000);
88 Selected: (FG: $FFFFFF; BG: $505050));
89 Change: $0000FF;
92 // ************************************************************************** //
93 // * API Resources * //
94 // ************************************************************************** //
96 { Error Messages }
98 GLOB_NO_ERROR = '';
100 INST_CHAR_INVALID = 'Invalid character';
101 INST_NONE = 'No instruction specified';
102 INST_INST_UNKNOWN = 'Unrecognized instruction';
103 INST_INST_UNSUPPORTED = 'Instruction not supported on physical CPU';
104 INST_OPER_INVALID = 'Command does not support given operands';
105 INST_OPER_NOT_ENOUGH = 'Not enough operands';
106 INST_OPER_TOO_MANY = 'Too many operands';
107 INST_OPER_UNKNOWN = 'Unrecognized operand';
109 STEP_BRANCH_OUT_OF_RANGE = 'Branch address out of range';
110 STEP_NO_CALL_FUNCTION = 'Call function not specified';
111 STEP_POSITION_OUT_OF_RANGE = 'Position out of range';
113 { Instructions Descriptions }
115 DESC_CO = ', ';
116 DESC_COA = ', and ';
117 DESC_DO = '. ';
118 DESC_AF = ' after ';
119 DESC_AN = ' and ';
120 DESC_BY = ' by ';
121 DESC_FO = ' for ';
122 DESC_FR = ' from ';
123 DESC_IF = ' if ';
124 DESC_IN = ' in ';
125 DESC_INT = ' into ';
126 DESC_IT = 'its ';
127 DESC_OF = ' of ';
128 DESC_ONT = ' onto ';
129 DESC_OR = ' or ';
130 DESC_TH = 'the ';
131 DESC_TO = ' to ';
132 DESC_WI = ' with ';
133 DESC_WO = ' without ';
135 DESC_ADD = 'Add ';
136 DESC_CHK = 'Check ';
137 DESC_CLA = 'Classify ';
138 DESC_CLR = 'Clear ';
139 DESC_CMP = 'Compare ';
140 DESC_CNV = 'Convert ';
141 DESC_COM = 'Complements ';
142 DESC_COP = 'Copy ';
143 DESC_CPT = 'Compute ';
144 DESC_DEC = 'Decrement ';
145 DESC_DIV = 'Divide ';
146 DESC_INC = 'Increment ';
147 DESC_INI = 'Initialize ';
148 DESC_JM = 'Jump';
149 DESC_LOA = 'Load ';
150 DESC_MOV = 'Move ';
151 DESC_MUL = 'Multiply ';
152 DESC_PSH = 'Push ';
153 DESC_REP = 'Replace ';
154 DESC_RND = 'Round ';
155 DESC_SCA = 'Scale ';
156 DESC_SET = 'Sets' + FL_EDIT_TAG;
157 DESC_SPR = 'Separate ';
158 DESC_STR = 'Store ';
159 DESC_SUB = 'Subtract ';
160 DESC_XCH = 'Exchange ';
162 DESC_TAG: array [0..3] of String = (
163 'Valid',
164 'Zero',
165 'Invalid',
166 'Empty'
168 DESC_TAG_LONGEST = 2;
170 DESC_FLAG: array [0..7] of String = (
171 'Error summ.',
172 'Stack fault',
173 'Precision ',
174 'Underflow ',
175 'Overflow ',
176 'Zero divide',
177 'Denormaliz.',
178 'Invalid op.'
180 DESC_FLAG_LONGEST = 0;
182 DESC_STACK = 'ST';
183 DESC_STACKS: array [0..7] of String = (
184 DESC_STACK + '(0)', DESC_STACK + '(1)',
185 DESC_STACK + '(2)', DESC_STACK + '(3)',
186 DESC_STACK + '(4)', DESC_STACK + '(5)',
187 DESC_STACK + '(6)', DESC_STACK + '(7)'
190 DESC_ST_0 = DESC_STACK + '(0)';
191 DESC_ST_1 = DESC_STACK + '(1)';
192 DESC_ST_I = DESC_STACK + '(i)';
193 DESC_AX = 'AX';
194 DESC_WORD = 'WORD';
195 DESC_DWORD = 'DWORD';
196 DESC_QWORD = 'QWORD';
197 DESC_ADDR = 'ADDRESS';
198 DESC_BCD = 'BCD';
199 DESC_SINGLE = 'SINGLE';
200 DESC_DOUBLE = 'DOUBLE';
201 DESC_EXTEND = 'EXTENDED';
202 DESC_CW = 'CONTROL_WORD';
203 DESC_SW = 'STATUS_WORD';
204 DESC_ENV_14 = 'ENVIRONMENT_14B';
205 DESC_ENV_28 = 'ENVIRONMENT_28B';
206 DESC_STAT_94 = 'STATE_94B';
207 DESC_STAT_108 = 'STATE_108B';
209 DESC_EFL = 'EFLAGS';
210 DESC_FPU = 'FPU';
211 DESC_FPU_S = 'the ' + DESC_FPU + ' stack';
212 DESC_FSW = DESC_FPU + ' status word';
213 DESC_FCW = DESC_FPU + ' control word';
214 DESC_FEN = DESC_FPU + ' environment';
215 DESC_STA = DESC_FPU + ' state';
216 DESC_SIN = 'sine';
217 DESC_COS = 'cosine';
218 DESC_SQRT = 'square root';
219 DESC_I_SIN = DESC_IT + DESC_SIN;
220 DESC_I_COS = DESC_IT + DESC_COS;
221 DESC_STO = 'store ';
222 DESC_STORE = DESC_STO + 'result' + DESC_IN;
223 DESC_STORE_ST_0 = DESC_STORE + DESC_ST_0;
224 DESC_STORE_ST_1 = DESC_STORE + DESC_ST_1;
225 DESC_STORE_ST_I = DESC_STORE + DESC_ST_I;
226 DESC_STORE_EFL = DESC_STORE + DESC_EFL;
227 DESC_STORE_FSW = DESC_STORE + DESC_FSW;
228 DESC_VAL = 'value';
229 DESC_EXP = 'exponent';
230 DESC_SIG = 'significand';
231 DESC_POP = 'pop ';
232 DESC_POP_FPU = DESC_POP + DESC_FPU_S;
233 DESC_PUSH = 'push';
234 DESC_PUSH_FPU = DESC_PUSH + DESC_ONT + DESC_FPU_S;
235 DESC_FP_EXC = DESC_FPU + ' exception flags';
236 DESC_FP_E = DESC_FPU + ' exceptions';
237 DESC_CHECK_O = 'check for ordered values';
238 DESC_PU_FP_E = 'pending unmasked ' + DESC_FP_E;
239 DESC_CHECK_PUE = 'checking' + DESC_FO + DESC_PU_FP_E;
240 DESC_REINIT = '. Then re-initialize the ' + DESC_FPU;
241 DESC_MASK = '. Then mask all ' + DESC_FP_E;
242 DESC_REM_D = 'remainder obtained from dividing ';
243 DESC_CON = DESC_TH + 'contents' + DESC_OF;
244 DESC_2X = ' twice';
245 DESC_TOP_F = DESC_TH + 'TOP field';
246 DESC_A = 'above';
247 DESC_B = 'below';
248 DESC_C = 'carry';
249 DESC_E = 'equal';
250 DESC_G = 'greater';
251 DESC_L = 'less';
252 DESC_N = 'not ';
253 DESC_O = 'overflow';
254 DESC_P = 'parity';
255 DESC_U = 'unordered';
256 DESC_EVEN = ' even';
257 DESC_ODD = ' odd';
258 DESC_SIGN = 'sign';
259 DESC_ZERO = 'zero';
260 DESC_EMPTY = 'empty';
261 DESC_TRUNC = 'truncation';
262 DESC_A_L = DESC_IF + DESC_A + ' (CF = 0 and ZF = 0)';
263 DESC_AE_L = DESC_IF + DESC_A + DESC_OR + DESC_E + ' (CF = 0)';
264 DESC_B_L = DESC_IF + DESC_B + ' (CF = 1)';
265 DESC_BE_L = DESC_IF + DESC_B + DESC_OR + DESC_E + ' (CF = 1 or ZF = 1)';
266 DESC_C_L = DESC_IF + DESC_C + ' (CF = 1)';
267 DESC_E_L = DESC_IF + DESC_E + ' (ZF = 1)';
268 DESC_G_L = DESC_IF + DESC_G + ' (ZF = 0 and SF = OF)';
269 DESC_GE_L = DESC_IF + DESC_G + DESC_OR + DESC_E + ' (SF = OF)';
270 DESC_L_L = DESC_IF + DESC_L + ' (SF <> OF)';
271 DESC_LE_L = DESC_IF + DESC_L + DESC_OR + DESC_E + ' (ZF = 1 or SF <> OF)';
272 DESC_NA_L = DESC_IF + DESC_N + DESC_A + ' (CF = 1 or ZF = 1)';
273 DESC_NAE_L = DESC_IF + DESC_N + DESC_A + DESC_OR + DESC_E + ' (CF = 1)';
274 DESC_NB_L = DESC_IF + DESC_N + DESC_B + ' (CF = 0)';
275 DESC_NBE_L = DESC_IF + DESC_N + DESC_B + DESC_OR + DESC_E + ' (CF = 0 and ZF = 0)';
276 DESC_NC_L = DESC_IF + DESC_N + DESC_C + ' (CF = 0)';
277 DESC_NE_L = DESC_IF + DESC_N + DESC_E + ' (ZF = 0)';
278 DESC_NG_L = DESC_IF + DESC_N + DESC_G + ' (ZF = 1 or SF <> OF)';
279 DESC_NGE_L = DESC_IF + DESC_N + DESC_G + DESC_OR + DESC_E + ' (SF <> OF)';
280 DESC_NL_L = DESC_IF + DESC_N + DESC_L + ' (SF = OF)';
281 DESC_NLE_L = DESC_IF + DESC_N + DESC_L + DESC_OR + DESC_E + ' (ZF = 0 and SF = OF)';
282 DESC_NO_L = DESC_IF + DESC_N + DESC_O + ' (OF = 0)';
283 DESC_NP_L = DESC_IF + DESC_N + DESC_P + ' (PF = 0)';
284 DESC_NS_L = DESC_IF + DESC_N + DESC_SIGN + ' (SF = 0)';
285 DESC_NU_L = DESC_IF + DESC_N + DESC_U + ' (PF = 0)';
286 DESC_NZ_L = DESC_IF + DESC_N + DESC_ZERO + ' (ZF = 0)';
287 DESC_O_L = DESC_IF + DESC_O + ' (OF = 1)';
288 DESC_P_L = DESC_IF + DESC_P + ' (PF = 1)';
289 DESC_PE_L = DESC_IF + DESC_P + DESC_EVEN + ' (PF = 1)';
290 DESC_PO_L = DESC_IF + DESC_P + DESC_ODD + ' (PF = 0)';
291 DESC_S_L = DESC_IF + DESC_SIGN + ' (SF = 1)';
292 DESC_U_L = DESC_IF + DESC_U + ' (PF = 1)';
293 DESC_Z_L = DESC_IF + DESC_ZERO + ' (ZF = 1)';
295 DESC_F2XM1 = DESC_REP + DESC_ST_0 + DESC_WI + '(2^(ST(0)) - 1)';
296 DESC_FABS = DESC_REP + DESC_ST_0 + DESC_WI + DESC_IT + 'absolute value';
297 DESC_FADD_S = DESC_ADD + DESC_SINGLE + DESC_TO + DESC_ST_0 + DESC_AN + DESC_STORE_ST_0;
298 DESC_FADD_D = DESC_ADD + DESC_DOUBLE + DESC_TO + DESC_ST_0 + DESC_AN + DESC_STORE_ST_0;
299 DESC_FADD_T_I = DESC_ADD + DESC_ST_0 + DESC_TO + DESC_ST_I + DESC_AN + DESC_STORE_ST_0;
300 DESC_FADD_I_T = DESC_ADD + DESC_ST_I + DESC_TO + DESC_ST_0 + DESC_AN + DESC_STORE_ST_I;
301 DESC_FADDP_I_T = DESC_ADD + DESC_ST_0 + DESC_TO + DESC_ST_I + DESC_CO + DESC_STORE_ST_I + DESC_COA + DESC_POP_FPU;
302 DESC_FADDP = DESC_ADD + DESC_ST_0 + DESC_TO + DESC_ST_1 + DESC_CO + DESC_STORE_ST_1 + DESC_COA + DESC_POP_FPU;
303 DESC_FBLD_0 = DESC_CNV + DESC_BCD + DESC_TO + DESC_EXTEND + DESC_AN + DESC_PUSH_FPU;
304 DESC_FBSTP_0 = DESC_STR + DESC_ST_0 + DESC_IN + DESC_BCD + DESC_AN + DESC_POP_FPU;
305 DESC_FCHS = DESC_COM + DESC_SIGN + DESC_OF + DESC_ST_0;
306 DESC_FCLEX = DESC_CLR + DESC_FP_EXC + DESC_AF + DESC_CHECK_PUE;
307 DESC_FCMOVB_T_I = DESC_MOV + DESC_ST_I + DESC_TO + DESC_ST_0 + DESC_B_L;
308 DESC_FCMOVBE_T_I = DESC_MOV + DESC_ST_I + DESC_TO + DESC_ST_0 + DESC_BE_L;
309 DESC_FCMOVE_T_I = DESC_MOV + DESC_ST_I + DESC_TO + DESC_ST_0 + DESC_E_L;
310 DESC_FCMOVNB_T_I = DESC_MOV + DESC_ST_I + DESC_TO + DESC_ST_0 + DESC_NB_L;
311 DESC_FCMOVNBE_T_I = DESC_MOV + DESC_ST_I + DESC_TO + DESC_ST_0 + DESC_NBE_L;
312 DESC_FCMOVNE_T_I = DESC_MOV + DESC_ST_I + DESC_TO + DESC_ST_0 + DESC_NE_L;
313 DESC_FCMOVNU_T_I = DESC_MOV + DESC_ST_I + DESC_TO + DESC_ST_0 + DESC_NU_L;
314 DESC_FCMOVU_T_I = DESC_MOV + DESC_ST_I + DESC_TO + DESC_ST_0 + DESC_U_L;
315 DESC_FCOM = DESC_CMP + DESC_ST_0 + DESC_WI + DESC_ST_1 + DESC_AN + DESC_STORE_FSW;
316 DESC_FCOM_S = DESC_CMP + DESC_ST_0 + DESC_WI + DESC_SINGLE + DESC_AN + DESC_STORE_FSW;
317 DESC_FCOM_D = DESC_CMP + DESC_ST_0 + DESC_WI + DESC_DOUBLE + DESC_AN + DESC_STORE_FSW;
318 DESC_FCOM_I = DESC_CMP + DESC_ST_0 + DESC_WI + DESC_ST_I + DESC_AN + DESC_STORE_FSW;
319 DESC_FCOMI_T_I = DESC_CMP + DESC_ST_0 + DESC_WI + DESC_ST_I + DESC_AN + DESC_STORE_EFL;
320 DESC_FCOMIP_T_I = DESC_CMP + DESC_ST_0 + DESC_WI + DESC_ST_I + DESC_CO + DESC_STORE_EFL + DESC_COA + DESC_POP_FPU;
321 DESC_FCOMP = DESC_CMP + DESC_ST_0 + DESC_WI + DESC_ST_1 + DESC_CO + DESC_STORE_FSW + DESC_COA + DESC_POP_FPU;
322 DESC_FCOMP_S = DESC_CMP + DESC_ST_0 + DESC_WI + DESC_SINGLE + DESC_CO + DESC_STORE_FSW + DESC_COA + DESC_POP_FPU;
323 DESC_FCOMP_D = DESC_CMP + DESC_ST_0 + DESC_WI + DESC_DOUBLE + DESC_CO + DESC_STORE_FSW + DESC_COA + DESC_POP_FPU;
324 DESC_FCOMP_I = DESC_CMP + DESC_ST_0 + DESC_WI + DESC_ST_I + DESC_CO + DESC_STORE_FSW + DESC_COA + DESC_POP_FPU;
325 DESC_FCOMPP = DESC_CMP + DESC_ST_0 + DESC_WI + DESC_ST_1 + DESC_CO + DESC_STORE_FSW + DESC_COA + DESC_POP_FPU + DESC_2X;
326 DESC_FCOS = DESC_REP + DESC_ST_0 + DESC_WI + DESC_I_COS;
327 DESC_FDECSTP = DESC_DEC + DESC_TOP_F + DESC_IN + DESC_FSW;
328 DESC_FDIV_S = DESC_DIV + DESC_ST_0 + DESC_BY + DESC_SINGLE + DESC_AN + DESC_STORE_ST_0;
329 DESC_FDIV_D = DESC_DIV + DESC_ST_0 + DESC_BY + DESC_DOUBLE + DESC_AN + DESC_STORE_ST_0;
330 DESC_FDIV_T_I = DESC_DIV + DESC_ST_0 + DESC_BY + DESC_ST_I + DESC_AN + DESC_STORE_ST_0;
331 DESC_FDIV_I_T = DESC_DIV + DESC_ST_I + DESC_BY + DESC_ST_0 + DESC_AN + DESC_STORE_ST_I;
332 DESC_FDIVP = DESC_DIV + DESC_ST_1 + DESC_BY + DESC_ST_0 + DESC_CO + DESC_STORE_ST_1 + DESC_COA + DESC_POP_FPU;
333 DESC_FDIVP_I_T = DESC_DIV + DESC_ST_I + DESC_BY + DESC_ST_0 + DESC_CO + DESC_STORE_ST_I + DESC_COA + DESC_POP_FPU;
334 DESC_FDIVR_S = DESC_DIV + DESC_SINGLE + DESC_BY + DESC_ST_0 + DESC_AN + DESC_STORE_ST_0;
335 DESC_FDIVR_D = DESC_DIV + DESC_DOUBLE + DESC_BY + DESC_ST_0 + DESC_AN + DESC_STORE_ST_0;
336 DESC_FDIVR_T_I = DESC_DIV + DESC_ST_I + DESC_BY + DESC_ST_0 + DESC_AN + DESC_STORE_ST_0;
337 DESC_FDIVR_I_T = DESC_DIV + DESC_ST_0 + DESC_BY + DESC_ST_I + DESC_AN + DESC_STORE_ST_I;
338 DESC_FDIVRP = DESC_DIV + DESC_ST_0 + DESC_BY + DESC_ST_1 + DESC_CO + DESC_STORE_ST_1 + DESC_COA + DESC_POP_FPU;
339 DESC_FDIVRP_I_T = DESC_DIV + DESC_ST_0 + DESC_BY + DESC_ST_I + DESC_CO + DESC_STORE_ST_I + DESC_COA + DESC_POP_FPU;
340 DESC_FFREE_I = DESC_SET + DESC_FO + DESC_ST_I + DESC_TO + DESC_EMPTY;
341 DESC_FIADD_4 = DESC_ADD + DESC_DWORD + DESC_TO + DESC_ST_0 + DESC_AN + DESC_STORE_ST_0;
342 DESC_FIADD_2 = DESC_ADD + DESC_WORD + DESC_TO + DESC_ST_0 + DESC_AN + DESC_STORE_ST_0;
343 DESC_FICOM_2 = DESC_CMP + DESC_ST_0 + DESC_WI + DESC_WORD + DESC_AN + DESC_STORE_FSW;
344 DESC_FICOM_4 = DESC_CMP + DESC_ST_0 + DESC_WI + DESC_DWORD + DESC_AN + DESC_STORE_FSW;
345 DESC_FICOMP_2 = DESC_CMP + DESC_ST_0 + DESC_WI + DESC_WORD + DESC_CO + DESC_STORE_FSW + DESC_COA + DESC_POP_FPU;
346 DESC_FICOMP_4 = DESC_CMP + DESC_ST_0 + DESC_WI + DESC_DWORD + DESC_CO + DESC_STORE_FSW + DESC_COA + DESC_POP_FPU;
347 DESC_FIDIV_2 = DESC_DIV + DESC_ST_0 + DESC_BY + DESC_WORD + DESC_AN + DESC_STORE_ST_0;
348 DESC_FIDIV_4 = DESC_DIV + DESC_ST_0 + DESC_BY + DESC_DWORD + DESC_AN + DESC_STORE_ST_0;
349 DESC_FIDIVR_2 = DESC_DIV + DESC_WORD + DESC_BY + DESC_ST_0 + DESC_AN + DESC_STORE_ST_0;
350 DESC_FIDIVR_4 = DESC_DIV + DESC_DWORD + DESC_BY + DESC_ST_0 + DESC_AN + DESC_STORE_ST_0;
351 DESC_FILD_2 = DESC_PSH + DESC_WORD + DESC_ONT + DESC_FPU_S;
352 DESC_FILD_4 = DESC_PSH + DESC_DWORD + DESC_ONT + DESC_FPU_S;
353 DESC_FILD_8 = DESC_PSH + DESC_QWORD + DESC_ONT + DESC_FPU_S;
354 DESC_FIMUL_2 = DESC_MUL + DESC_ST_0 + DESC_BY + DESC_WORD + DESC_AN + DESC_STORE_ST_0;
355 DESC_FIMUL_4 = DESC_MUL + DESC_ST_0 + DESC_BY + DESC_DWORD + DESC_AN + DESC_STORE_ST_0;
356 DESC_FINCSTP = DESC_INC + DESC_TOP_F + DESC_IN + DESC_FSW;
357 DESC_FINIT = DESC_INI + DESC_FPU + DESC_AF + DESC_CHECK_PUE;
358 DESC_FIST_2 = DESC_STR + DESC_ST_0 + DESC_IN + DESC_WORD;
359 DESC_FIST_4 = DESC_STR + DESC_ST_0 + DESC_IN + DESC_DWORD;
360 DESC_FISTP_2 = DESC_STR + DESC_ST_0 + DESC_IN + DESC_WORD + DESC_AN + DESC_POP_FPU;
361 DESC_FISTP_4 = DESC_STR + DESC_ST_0 + DESC_IN + DESC_DWORD + DESC_AN + DESC_POP_FPU;
362 DESC_FISTP_8 = DESC_STR + DESC_ST_0 + DESC_IN + DESC_QWORD + DESC_AN + DESC_POP_FPU;
363 DESC_FISTTP_2 = DESC_FISTP_2 + DESC_WI + DESC_TRUNC;
364 DESC_FISTTP_4 = DESC_FISTP_4 + DESC_WI + DESC_TRUNC;
365 DESC_FISTTP_8 = DESC_FISTP_8 + DESC_WI + DESC_TRUNC;
366 DESC_FISUB_2 = DESC_SUB + DESC_WORD + DESC_FR + DESC_ST_0 + DESC_AN + DESC_STORE_ST_0;
367 DESC_FISUB_4 = DESC_SUB + DESC_DWORD + DESC_FR + DESC_ST_0 + DESC_AN + DESC_STORE_ST_0;
368 DESC_FISUBR_2 = DESC_SUB + DESC_ST_0 + DESC_FR + DESC_WORD + DESC_AN + DESC_STORE_ST_0;
369 DESC_FISUBR_4 = DESC_SUB + DESC_ST_0 + DESC_FR + DESC_DWORD + DESC_AN + DESC_STORE_ST_0;
370 DESC_FLD_S = DESC_PSH + DESC_SINGLE + DESC_ONT + DESC_FPU_S;
371 DESC_FLD_D = DESC_PSH + DESC_DOUBLE + DESC_ONT + DESC_FPU_S;
372 DESC_FLD_E = DESC_PSH + DESC_EXTEND + DESC_ONT + DESC_FPU_S;
373 DESC_FLD_I = DESC_PSH + DESC_ST_I + DESC_ONT + DESC_FPU_S;
374 DESC_FLD1 = DESC_PSH + '+1.0' + DESC_ONT + DESC_FPU_S;
375 DESC_FLDCW_C = DESC_LOA + DESC_FCW + DESC_FR + DESC_CW;
376 DESC_FLDENV_14 = DESC_LOA + DESC_FEN + DESC_FR + DESC_ENV_14;
377 DESC_FLDENV_28 = DESC_LOA + DESC_FEN + DESC_FR + DESC_ENV_28;
378 DESC_FLDL2E = DESC_PSH + 'log_2(e)' + DESC_ONT + DESC_FPU_S;
379 DESC_FLDL2T = DESC_PSH + 'log_2(10)' + DESC_ONT + DESC_FPU_S;
380 DESC_FLDLG2 = DESC_PSH + 'log_10(2)' + DESC_ONT + DESC_FPU_S;
381 DESC_FLDLN2 = DESC_PSH + 'log_e(2)' + DESC_ONT + DESC_FPU_S;
382 DESC_FLDPI = DESC_PSH + 'Pi (3.141...)' + DESC_ONT + DESC_FPU_S;
383 DESC_FLDZ = DESC_PSH + '+0.0' + DESC_ONT + DESC_FPU_S;
384 DESC_FMUL_S = DESC_MUL + DESC_ST_0 + DESC_BY + DESC_SINGLE + DESC_AN + DESC_STORE_ST_0;
385 DESC_FMUL_D = DESC_MUL + DESC_ST_0 + DESC_BY + DESC_DOUBLE + DESC_AN + DESC_STORE_ST_0;
386 DESC_FMUL_T_I = DESC_MUL + DESC_ST_0 + DESC_BY + DESC_ST_I + DESC_AN + DESC_STORE_ST_0;
387 DESC_FMUL_I_T = DESC_MUL + DESC_ST_I + DESC_BY + DESC_ST_0 + DESC_AN + DESC_STORE_ST_I;
388 DESC_FMULP = DESC_MUL + DESC_ST_1 + DESC_BY + DESC_ST_0 + DESC_CO + DESC_STORE_ST_1 + DESC_COA + DESC_POP_FPU;
389 DESC_FMULP_I_T = DESC_MUL + DESC_ST_I + DESC_BY + DESC_ST_0 + DESC_CO + DESC_STORE_ST_I + DESC_COA + DESC_POP_FPU;
390 DESC_FNCLEX = DESC_CLR + DESC_FP_EXC + DESC_WO + DESC_CHECK_PUE;
391 DESC_FNINIT = DESC_INI + DESC_FPU + DESC_WO + DESC_CHECK_PUE;
392 DESC_FNOP = 'No operation is performed';
393 DESC_FNSAVE_94 = DESC_STR + DESC_STA + DESC_TO + DESC_STAT_94 + DESC_WO + DESC_CHECK_PUE + DESC_REINIT;
394 DESC_FNSAVE_108 = DESC_STR + DESC_STA + DESC_TO + DESC_STAT_108 + DESC_WO + DESC_CHECK_PUE + DESC_REINIT;
395 DESC_FNSTCW_C = DESC_STR + DESC_FCW + DESC_TO + DESC_CW + DESC_WO + DESC_CHECK_PUE;
396 DESC_FNSTENV_14 = DESC_STR + DESC_FEN + DESC_TO + DESC_ENV_14 + DESC_WO + DESC_CHECK_PUE + DESC_MASK;
397 DESC_FNSTENV_28 = DESC_STR + DESC_FEN + DESC_TO + DESC_ENV_28 + DESC_WO + DESC_CHECK_PUE + DESC_MASK;
398 DESC_FNSTSW_W = DESC_STR + DESC_FSW + DESC_TO + DESC_SW + DESC_WO + DESC_CHECK_PUE;
399 DESC_FNSTSW_AX = DESC_STR + DESC_FSW + DESC_TO + DESC_AX + DESC_WO + DESC_CHECK_PUE;
400 DESC_FPATAN = DESC_REP + DESC_ST_1 + DESC_WI + 'arctan(' + DESC_ST_1 + '/' + DESC_ST_0 + ')' + DESC_AN + DESC_POP_FPU;
401 DESC_FPREM = DESC_REP + DESC_ST_0 + DESC_WI + DESC_TH + DESC_REM_D + DESC_ST_0 + DESC_BY + DESC_ST_1;
402 DESC_FPREM1 = DESC_REP + DESC_ST_0 + DESC_WI + DESC_TH + 'IEEE ' + DESC_REM_D + DESC_ST_0 + DESC_BY + DESC_ST_1;
403 DESC_FPTAN = DESC_REP + DESC_ST_0 + DESC_WI + 'its tangent' + DESC_AN + DESC_PUSH + ' 1' + DESC_ONT + DESC_FPU_S;
404 DESC_FRNDINT = DESC_RND + DESC_ST_0 + DESC_TO + 'an integer';
405 DESC_FRSTOR_94 = DESC_LOA + DESC_STA + DESC_FR + DESC_STAT_94;
406 DESC_FRSTOR_108 = DESC_LOA + DESC_STA + DESC_FR + DESC_STAT_108;
407 DESC_FSAVE_94 = DESC_STR + DESC_STA + DESC_TO + DESC_STAT_94 + DESC_AF + DESC_CHECK_PUE + DESC_REINIT;
408 DESC_FSAVE_108 = DESC_STR + DESC_STA + DESC_TO + DESC_STAT_108 + DESC_AF + DESC_CHECK_PUE + DESC_REINIT;
409 DESC_FSCALE = DESC_SCA + DESC_ST_0 + DESC_BY + DESC_ST_1;
410 DESC_FSIN = DESC_REP + DESC_ST_0 + DESC_WI + DESC_I_SIN;
411 DESC_FSINCOS = DESC_CPT + DESC_TH + DESC_SIN + DESC_AN + DESC_COS + DESC_OF + DESC_ST_0 + DESC_DO + DESC_REP + DESC_ST_0 + DESC_WI + DESC_TH + DESC_SIN + DESC_COA + DESC_PUSH + ' ' + DESC_TH + DESC_COS + DESC_ONT + DESC_FPU_S;
412 DESC_FSQRT = DESC_CPT + DESC_SQRT + DESC_OF + DESC_ST_0 + DESC_AN + DESC_STORE_ST_0;
413 DESC_FST_S = DESC_STR + DESC_ST_0 + DESC_TO + DESC_SINGLE;
414 DESC_FST_D = DESC_STR + DESC_ST_0 + DESC_TO + DESC_DOUBLE;
415 DESC_FST_I = DESC_COP + DESC_ST_0 + DESC_TO + DESC_ST_I;
416 DESC_FSTCW_C = DESC_STR + DESC_FCW + DESC_TO + DESC_CW + DESC_AF + DESC_CHECK_PUE;
417 DESC_FSTENV_14 = DESC_STR + DESC_FEN + DESC_TO + DESC_ENV_14 + DESC_AF + DESC_CHECK_PUE + DESC_MASK;
418 DESC_FSTENV_28 = DESC_STR + DESC_FEN + DESC_TO + DESC_ENV_28 + DESC_AF + DESC_CHECK_PUE + DESC_MASK;
419 DESC_FSTP_S = DESC_STR + DESC_ST_0 + DESC_TO + DESC_SINGLE + DESC_AN + DESC_POP_FPU;
420 DESC_FSTP_D = DESC_STR + DESC_ST_0 + DESC_TO + DESC_DOUBLE + DESC_AN + DESC_POP_FPU;
421 DESC_FSTP_E = DESC_STR + DESC_ST_0 + DESC_TO + DESC_EXTEND + DESC_AN + DESC_POP_FPU;
422 DESC_FSTP_I = DESC_COP + DESC_ST_0 + DESC_TO + DESC_ST_I + DESC_AN + DESC_POP_FPU;
423 DESC_FSTSW_W = DESC_STR + DESC_FSW + DESC_TO + DESC_SW + DESC_AF + DESC_CHECK_PUE;
424 DESC_FSTSW_AX = DESC_STR + DESC_FSW + DESC_TO + DESC_AX + DESC_AF + DESC_CHECK_PUE;
425 DESC_FSUB_S = DESC_SUB + DESC_SINGLE + DESC_FR + DESC_ST_0 + DESC_AN + DESC_STORE_ST_0;
426 DESC_FSUB_D = DESC_SUB + DESC_DOUBLE + DESC_FR + DESC_ST_0 + DESC_AN + DESC_STORE_ST_0;
427 DESC_FSUB_T_I = DESC_SUB + DESC_ST_I + DESC_FR + DESC_ST_0 + DESC_AN + DESC_STORE_ST_0;
428 DESC_FSUB_I_T = DESC_SUB + DESC_ST_0 + DESC_FR + DESC_ST_I + DESC_AN + DESC_STORE_ST_I;
429 DESC_FSUBP = DESC_SUB + DESC_ST_0 + DESC_FR + DESC_ST_1 + DESC_CO + DESC_STORE_ST_1 + DESC_COA + DESC_POP_FPU;
430 DESC_FSUBP_I_T = DESC_SUB + DESC_ST_0 + DESC_FR + DESC_ST_I + DESC_CO + DESC_STORE_ST_I + DESC_COA + DESC_POP_FPU;
431 DESC_FSUBR_S = DESC_SUB + DESC_ST_0 + DESC_FR + DESC_SINGLE + DESC_AN + DESC_STORE_ST_0;
432 DESC_FSUBR_D = DESC_SUB + DESC_ST_0 + DESC_FR + DESC_DOUBLE + DESC_AN + DESC_STORE_ST_0;
433 DESC_FSUBR_T_I = DESC_SUB + DESC_ST_0 + DESC_FR + DESC_ST_I + DESC_AN + DESC_STORE_ST_0;
434 DESC_FSUBR_I_T = DESC_SUB + DESC_ST_I + DESC_FR + DESC_ST_0 + DESC_AN + DESC_STORE_ST_I;
435 DESC_FSUBRP = DESC_SUB + DESC_ST_1 + DESC_FR + DESC_ST_0 + DESC_CO + DESC_STORE_ST_1 + DESC_COA + DESC_POP_FPU;
436 DESC_FSUBRP_I_T = DESC_SUB + DESC_ST_I + DESC_FR + DESC_ST_0 + DESC_CO + DESC_STORE_ST_I + DESC_COA + DESC_POP_FPU;
437 DESC_FTST = DESC_CMP + DESC_ST_0 + DESC_WI + '0.0' + DESC_AN + DESC_STORE_FSW;
438 DESC_FUCOM = DESC_CMP + DESC_ST_0 + DESC_WI + DESC_ST_1 + DESC_CO + DESC_CHECK_O + DESC_COA + DESC_STORE_FSW;
439 DESC_FUCOM_I = DESC_CMP + DESC_ST_0 + DESC_WI + DESC_ST_I + DESC_CO + DESC_CHECK_O + DESC_COA + DESC_STORE_FSW;
440 DESC_FUCOMI_T_I = DESC_CMP + DESC_ST_0 + DESC_WI + DESC_ST_I + DESC_CO + DESC_CHECK_O + DESC_COA + DESC_STORE_EFL;
441 DESC_FUCOMIP_T_I = DESC_CMP + DESC_ST_0 + DESC_WI + DESC_ST_I + DESC_CO + DESC_CHECK_O + DESC_CO + DESC_STORE_EFL + DESC_COA + DESC_POP_FPU;
442 DESC_FUCOMP = DESC_CMP + DESC_ST_0 + DESC_WI + DESC_ST_1 + DESC_CO + DESC_CHECK_O + DESC_CO + DESC_STORE_FSW + DESC_COA + DESC_POP_FPU;
443 DESC_FUCOMP_I = DESC_CMP + DESC_ST_0 + DESC_WI + DESC_ST_I + DESC_CO + DESC_CHECK_O + DESC_CO + DESC_STORE_FSW + DESC_COA + DESC_POP_FPU;
444 DESC_FUCOMPP = DESC_CMP + DESC_ST_0 + DESC_WI + DESC_ST_1 + DESC_CO + DESC_CHECK_O + DESC_CO + DESC_STORE_FSW + DESC_COA + DESC_POP_FPU + DESC_2X;
445 DESC_FWAIT = DESC_CHK + DESC_PU_FP_E;
446 DESC_FXAM = DESC_CLA + DESC_VAL + DESC_OR + 'number' + DESC_IN + DESC_ST_0;
447 DESC_FXCH = DESC_XCH + DESC_CON + DESC_ST_0 + DESC_AN + DESC_ST_1;
448 DESC_FXCH_I = DESC_XCH + DESC_CON + DESC_ST_0 + DESC_AN + DESC_ST_I;
449 DESC_FXTRACT = DESC_SPR + DESC_VAL + DESC_IN + DESC_ST_0 + DESC_INT + DESC_EXP + DESC_AN + DESC_SIG + DESC_CO + DESC_STO + DESC_EXP + DESC_IN + DESC_ST_0 + DESC_COA + DESC_PUSH + ' ' + DESC_TH + DESC_SIG + DESC_ONT + DESC_FPU_S;
450 DESC_FYL2X = DESC_REP + DESC_ST_1 + DESC_WI + '(' + DESC_ST_1 + ' * ' + 'log_2(' + DESC_ST_0 + '))' + DESC_AN + DESC_POP_FPU;
451 DESC_FYL2XP1 = DESC_REP + DESC_ST_1 + DESC_WI + '(' + DESC_ST_1 + ' * ' + 'log_2(' + DESC_ST_0 + ' + 1.0))' + DESC_AN + DESC_POP_FPU;
452 DESC_JMP = DESC_JM + DESC_TO + DESC_ADDR;
453 DESC_JA = DESC_JMP + DESC_A_L;
454 DESC_JAE = DESC_JMP + DESC_AE_L;
455 DESC_JB = DESC_JMP + DESC_B_L;
456 DESC_JBE = DESC_JMP + DESC_BE_L;
457 DESC_JC = DESC_JMP + DESC_C_L;
458 DESC_JE = DESC_JMP + DESC_E_L;
459 DESC_JG = DESC_JMP + DESC_C_L;
460 DESC_JGE = DESC_JMP + DESC_GE_L;
461 DESC_JL = DESC_JMP + DESC_L_L;
462 DESC_JLE = DESC_JMP + DESC_LE_L;
463 DESC_JNA = DESC_JMP + DESC_NA_L;
464 DESC_JNAE = DESC_JMP + DESC_NAE_L;
465 DESC_JNB = DESC_JMP + DESC_NB_L;
466 DESC_JNBE = DESC_JMP + DESC_NBE_L;
467 DESC_JNC = DESC_JMP + DESC_NC_L;
468 DESC_JNE = DESC_JMP + DESC_NE_L;
469 DESC_JNG = DESC_JMP + DESC_NG_L;
470 DESC_JNGE = DESC_JMP + DESC_NGE_L;
471 DESC_JNL = DESC_JMP + DESC_NL_L;
472 DESC_JNLE = DESC_JMP + DESC_NLE_L;
473 DESC_JNO = DESC_JMP + DESC_NO_L;
474 DESC_JNP = DESC_JMP + DESC_NP_L;
475 DESC_JNS = DESC_JMP + DESC_NS_L;
476 DESC_JNZ = DESC_JMP + DESC_NZ_L;
477 DESC_JO = DESC_JMP + DESC_O_L;
478 DESC_JP = DESC_JMP + DESC_P_L;
479 DESC_JPE = DESC_JMP + DESC_PE_L;
480 DESC_JPO = DESC_JMP + DESC_PO_L;
481 DESC_JS = DESC_JMP + DESC_S_L;
482 DESC_JZ = DESC_JMP + DESC_Z_L;
484 { Operands Description }
486 DESC_OPER_ERROR = '<Error>';
487 DESC_OPER_NONE = '<No Operands>';
488 DESC_OPER_ST_0 = '<' + DESC_ST_0 + '>';
489 DESC_OPER_ST_I = '<' + DESC_ST_I + '>';
490 DESC_OPER_AX = '<' + DESC_AX + '>';
491 DESC_OPER_M16_INT = '<' + DESC_WORD + '>';
492 DESC_OPER_M32_INT = '<' + DESC_DWORD + '>';
493 DESC_OPER_M64_INT = '<' + DESC_QWORD + '>';
494 DESC_OPER_ADDR = '<' + DESC_ADDR + '>';
495 DESC_OPER_M80_BCD = '<' + DESC_BCD + '>';
496 DESC_OPER_M32_FP = '<' + DESC_SINGLE + '>';
497 DESC_OPER_M64_FP = '<' + DESC_DOUBLE + '>';
498 DESC_OPER_M80_FP = '<' + DESC_EXTEND + '>';
499 DESC_OPER_M2BYTE_CW = '<' + DESC_CW + '>';
500 DESC_OPER_M2BYTE_SW = '<' + DESC_SW + '>';
501 DESC_OPER_M14BYTE_ENV = '<' + DESC_ENV_14 + '>';
502 DESC_OPER_M28BYTE_ENV = '<' + DESC_ENV_28 + '>';
503 DESC_OPER_M94BYTE_STAT = '<' + DESC_STAT_94 + '>';
504 DESC_OPER_M108BYTE_STAT = '<' + DESC_STAT_108 + '>';
506 { Operands Default Values }
508 DEFV_M16_INT = #$00#$00;
509 DEFV_M32_INT = #$00#$00#$00#$00;
510 DEFV_M64_INT = #$00#$00#$00#$00#$00#$00#$00#$00;
511 DEFV_M32_FP = #$00#$00#$00#$00;
513 { Jump Instructions Code Constants }
514 JMP_RESULT_1 = #$C7#$44#$24#$04#$01#$00#$00#$00;
515 JCC_SHARED = #$02#$EB#$08 + JMP_RESULT_1;
519 { Instructions Definition }
521 sInstructions: array [0..221] of TInstructionRecord = (
522 (Name: 'F2XM1' + FP_X; Code: #$D9#$F0; Description: DESC_F2XM1; Branch: BRANCH_NORMAL),
523 (Name: 'FABS' + FP_X; Code: #$D9#$E1; Description: DESC_FABS; Branch: BRANCH_NORMAL),
524 (Name: 'FADD' + FP_S; Code: #$D8#$00; Description: DESC_FADD_S; Branch: BRANCH_NORMAL),
525 (Name: 'FADD' + FP_D; Code: #$DC#$00; Description: DESC_FADD_D; Branch: BRANCH_NORMAL),
526 (Name: 'FADD' + FP_T + FP_T; Code: #$D8#$C0; Description: DESC_FADD_T_I; Branch: BRANCH_NORMAL),
527 (Name: 'FADD' + FP_T + FP_I; Code: #$D8#$C0; Description: DESC_FADD_T_I; Branch: BRANCH_NORMAL),
528 (Name: 'FADD' + FP_I + FP_T; Code: #$DC#$C0; Description: DESC_FADD_I_T; Branch: BRANCH_NORMAL),
529 (Name: 'FADDP' + FP_X; Code: #$DE#$C1; Description: DESC_FADDP; Branch: BRANCH_NORMAL),
530 (Name: 'FADDP' + FP_T + FP_T; Code: #$DE#$C0; Description: DESC_FADDP_I_T; Branch: BRANCH_NORMAL),
531 (Name: 'FADDP' + FP_I + FP_T; Code: #$DE#$C0; Description: DESC_FADDP_I_T; Branch: BRANCH_NORMAL),
532 (Name: 'FBLD' + FP_0; Code: #$DF#$20; Description: DESC_FBLD_0; Branch: BRANCH_NORMAL),
533 (Name: 'FBSTP' + FP_0; Code: #$DF#$30; Description: DESC_FBSTP_0; Branch: BRANCH_NORMAL),
534 (Name: 'FCHS' + FP_X; Code: #$D9#$E0; Description: DESC_FCHS; Branch: BRANCH_NORMAL),
535 (Name: 'FCLEX' + FP_X; Code: #$9B#$DB#$E2; Description: DESC_FCLEX; Branch: BRANCH_NORMAL),
536 (Name: 'FCMOVB' + FP_T + FP_T; Code: #$DA#$C0; Description: DESC_FCMOVB_T_I; Branch: BRANCH_NORMAL),
537 (Name: 'FCMOVB' + FP_T + FP_I; Code: #$DA#$C0; Description: DESC_FCMOVB_T_I; Branch: BRANCH_NORMAL),
538 (Name: 'FCMOVBE' + FP_T + FP_T; Code: #$DA#$D0; Description: DESC_FCMOVBE_T_I; Branch: BRANCH_NORMAL),
539 (Name: 'FCMOVBE' + FP_T + FP_I; Code: #$DA#$D0; Description: DESC_FCMOVBE_T_I; Branch: BRANCH_NORMAL),
540 (Name: 'FCMOVE' + FP_T + FP_T; Code: #$DA#$C8; Description: DESC_FCMOVE_T_I; Branch: BRANCH_NORMAL),
541 (Name: 'FCMOVE' + FP_T + FP_I; Code: #$DA#$C8; Description: DESC_FCMOVE_T_I; Branch: BRANCH_NORMAL),
542 (Name: 'FCMOVNB' + FP_T + FP_T; Code: #$DB#$C0; Description: DESC_FCMOVNB_T_I; Branch: BRANCH_NORMAL),
543 (Name: 'FCMOVNB' + FP_T + FP_I; Code: #$DB#$C0; Description: DESC_FCMOVNB_T_I; Branch: BRANCH_NORMAL),
544 (Name: 'FCMOVNBE' + FP_T + FP_T; Code: #$DB#$D0; Description: DESC_FCMOVNBE_T_I; Branch: BRANCH_NORMAL),
545 (Name: 'FCMOVNBE' + FP_T + FP_I; Code: #$DB#$D0; Description: DESC_FCMOVNBE_T_I; Branch: BRANCH_NORMAL),
546 (Name: 'FCMOVNE' + FP_T + FP_T; Code: #$DB#$C8; Description: DESC_FCMOVNE_T_I; Branch: BRANCH_NORMAL),
547 (Name: 'FCMOVNE' + FP_T + FP_I; Code: #$DB#$C8; Description: DESC_FCMOVNE_T_I; Branch: BRANCH_NORMAL),
548 (Name: 'FCMOVNU' + FP_T + FP_T; Code: #$DB#$D8; Description: DESC_FCMOVNU_T_I; Branch: BRANCH_NORMAL),
549 (Name: 'FCMOVNU' + FP_T + FP_I; Code: #$DB#$D8; Description: DESC_FCMOVNU_T_I; Branch: BRANCH_NORMAL),
550 (Name: 'FCMOVU' + FP_T + FP_T; Code: #$DA#$D8; Description: DESC_FCMOVU_T_I; Branch: BRANCH_NORMAL),
551 (Name: 'FCMOVU' + FP_T + FP_I; Code: #$DA#$D8; Description: DESC_FCMOVU_T_I; Branch: BRANCH_NORMAL),
552 (Name: 'FCOM' + FP_X; Code: #$D8#$D1; Description: DESC_FCOM; Branch: BRANCH_NORMAL),
553 (Name: 'FCOM' + FP_S; Code: #$D8#$10; Description: DESC_FCOM_S; Branch: BRANCH_NORMAL),
554 (Name: 'FCOM' + FP_D; Code: #$DC#$10; Description: DESC_FCOM_D; Branch: BRANCH_NORMAL),
555 (Name: 'FCOM' + FP_T; Code: #$D8#$D0; Description: DESC_FCOM_I; Branch: BRANCH_NORMAL),
556 (Name: 'FCOM' + FP_I; Code: #$D8#$D0; Description: DESC_FCOM_I; Branch: BRANCH_NORMAL),
557 (Name: 'FCOMI' + FP_T + FP_T; Code: #$DB#$F0; Description: DESC_FCOMI_T_I; Branch: BRANCH_NORMAL),
558 (Name: 'FCOMI' + FP_T + FP_I; Code: #$DB#$F0; Description: DESC_FCOMI_T_I; Branch: BRANCH_NORMAL),
559 (Name: 'FCOMIP' + FP_T + FP_T; Code: #$DF#$F0; Description: DESC_FCOMIP_T_I; Branch: BRANCH_NORMAL),
560 (Name: 'FCOMIP' + FP_T + FP_I; Code: #$DF#$F0; Description: DESC_FCOMIP_T_I; Branch: BRANCH_NORMAL),
561 (Name: 'FCOMP' + FP_X; Code: #$D8#$D9; Description: DESC_FCOMP; Branch: BRANCH_NORMAL),
562 (Name: 'FCOMP' + FP_S; Code: #$D8#$18; Description: DESC_FCOMP_S; Branch: BRANCH_NORMAL),
563 (Name: 'FCOMP' + FP_D; Code: #$DC#$18; Description: DESC_FCOMP_D; Branch: BRANCH_NORMAL),
564 (Name: 'FCOMP' + FP_T; Code: #$D8#$D8; Description: DESC_FCOMP_I; Branch: BRANCH_NORMAL),
565 (Name: 'FCOMP' + FP_I; Code: #$D8#$D8; Description: DESC_FCOMP_I; Branch: BRANCH_NORMAL),
566 (Name: 'FCOMPP' + FP_X; Code: #$DE#$D9; Description: DESC_FCOMPP; Branch: BRANCH_NORMAL),
567 (Name: 'FCOS' + FP_X; Code: #$D9#$FF; Description: DESC_FCOS; Branch: BRANCH_NORMAL),
568 (Name: 'FDECSTP' + FP_X; Code: #$D9#$F6; Description: DESC_FDECSTP; Branch: BRANCH_NORMAL),
569 (Name: 'FDIV' + FP_S; Code: #$D8#$30; Description: DESC_FDIV_S; Branch: BRANCH_NORMAL),
570 (Name: 'FDIV' + FP_D; Code: #$DC#$30; Description: DESC_FDIV_D; Branch: BRANCH_NORMAL),
571 (Name: 'FDIV' + FP_T + FP_T; Code: #$D8#$F0; Description: DESC_FDIV_T_I; Branch: BRANCH_NORMAL),
572 (Name: 'FDIV' + FP_T + FP_I; Code: #$D8#$F0; Description: DESC_FDIV_T_I; Branch: BRANCH_NORMAL),
573 (Name: 'FDIV' + FP_I + FP_T; Code: #$DC#$F8; Description: DESC_FDIV_I_T; Branch: BRANCH_NORMAL),
574 (Name: 'FDIVP' + FP_T + FP_T; Code: #$DE#$F8; Description: DESC_FDIVP_I_T; Branch: BRANCH_NORMAL),
575 (Name: 'FDIVP' + FP_I + FP_T; Code: #$DE#$F8; Description: DESC_FDIVP_I_T; Branch: BRANCH_NORMAL),
576 (Name: 'FDIVP' + FP_X; Code: #$DE#$F9; Description: DESC_FDIVP; Branch: BRANCH_NORMAL),
577 (Name: 'FDIVR' + FP_S; Code: #$D8#$30; Description: DESC_FDIVR_S; Branch: BRANCH_NORMAL),
578 (Name: 'FDIVR' + FP_D; Code: #$DC#$30; Description: DESC_FDIVR_D; Branch: BRANCH_NORMAL),
579 (Name: 'FDIVR' + FP_T + FP_T; Code: #$D8#$F0; Description: DESC_FDIVR_T_I; Branch: BRANCH_NORMAL),
580 (Name: 'FDIVR' + FP_T + FP_I; Code: #$D8#$F0; Description: DESC_FDIVR_T_I; Branch: BRANCH_NORMAL),
581 (Name: 'FDIVR' + FP_I + FP_T; Code: #$DC#$F8; Description: DESC_FDIVR_I_T; Branch: BRANCH_NORMAL),
582 (Name: 'FDIVRP' + FP_X; Code: #$DE#$F1; Description: DESC_FDIVRP; Branch: BRANCH_NORMAL),
583 (Name: 'FDIVRP' + FP_T + FP_T; Code: #$DE#$F8; Description: DESC_FDIVRP_I_T; Branch: BRANCH_NORMAL),
584 (Name: 'FDIVRP' + FP_I + FP_T; Code: #$DE#$F8; Description: DESC_FDIVRP_I_T; Branch: BRANCH_NORMAL),
585 (Name: 'FFREE' + FP_T; Code: #$DD#$C0; Description: DESC_FFREE_I; Branch: BRANCH_NORMAL),
586 (Name: 'FFREE' + FP_I; Code: #$DD#$C0; Description: DESC_FFREE_I; Branch: BRANCH_NORMAL),
587 (Name: 'FIADD' + FP_2; Code: #$DE#$00; Description: DESC_FIADD_2; Branch: BRANCH_NORMAL),
588 (Name: 'FIADD' + FP_4; Code: #$DA#$00; Description: DESC_FIADD_4; Branch: BRANCH_NORMAL),
589 (Name: 'FICOM' + FP_2; Code: #$DE#$10; Description: DESC_FICOM_2; Branch: BRANCH_NORMAL),
590 (Name: 'FICOM' + FP_4; Code: #$DA#$10; Description: DESC_FICOM_4; Branch: BRANCH_NORMAL),
591 (Name: 'FICOMP' + FP_2; Code: #$DE#$18; Description: DESC_FICOMP_2; Branch: BRANCH_NORMAL),
592 (Name: 'FICOMP' + FP_4; Code: #$DA#$18; Description: DESC_FICOMP_4; Branch: BRANCH_NORMAL),
593 (Name: 'FIDIV' + FP_2; Code: #$DE#$30; Description: DESC_FIDIV_2; Branch: BRANCH_NORMAL),
594 (Name: 'FIDIV' + FP_4; Code: #$DA#$30; Description: DESC_FIDIV_4; Branch: BRANCH_NORMAL),
595 (Name: 'FIDIVR' + FP_2; Code: #$DE#$38; Description: DESC_FIDIVR_2; Branch: BRANCH_NORMAL),
596 (Name: 'FIDIVR' + FP_4; Code: #$DA#$38; Description: DESC_FIDIVR_4; Branch: BRANCH_NORMAL),
597 (Name: 'FILD' + FP_2; Code: #$DF#$00; Description: DESC_FILD_2; Branch: BRANCH_NORMAL),
598 (Name: 'FILD' + FP_4; Code: #$DB#$00; Description: DESC_FILD_4; Branch: BRANCH_NORMAL),
599 (Name: 'FILD' + FP_8; Code: #$DF#$28; Description: DESC_FILD_8; Branch: BRANCH_NORMAL),
600 (Name: 'FINCSTP' + FP_X; Code: #$D9#$F7; Description: DESC_FINCSTP; Branch: BRANCH_NORMAL),
601 (Name: 'FINIT' + FP_X; Code: #$9B#$DB#$E3; Description: DESC_FINIT; Branch: BRANCH_NORMAL),
602 (Name: 'FIST' + FP_2; Code: #$DF#$10; Description: DESC_FIST_2; Branch: BRANCH_NORMAL),
603 (Name: 'FIST' + FP_4; Code: #$DB#$10; Description: DESC_FIST_4; Branch: BRANCH_NORMAL),
604 (Name: 'FISTP' + FP_2; Code: #$DF#$18; Description: DESC_FISTP_2; Branch: BRANCH_NORMAL),
605 (Name: 'FISTP' + FP_4; Code: #$DB#$18; Description: DESC_FISTP_4; Branch: BRANCH_NORMAL),
606 (Name: 'FISTP' + FP_8; Code: #$DF#$38; Description: DESC_FISTP_8; Branch: BRANCH_NORMAL),
607 (Name: 'FISTTP' + FP_2; Code: #$DF#$08; Description: DESC_FISTTP_2; Branch: BRANCH_NORMAL),
608 (Name: 'FISTTP' + FP_4; Code: #$DB#$08; Description: DESC_FISTTP_4; Branch: BRANCH_NORMAL),
609 (Name: 'FISTTP' + FP_8; Code: #$DD#$08; Description: DESC_FISTTP_8; Branch: BRANCH_NORMAL),
610 (Name: 'FISUB' + FP_2; Code: #$DE#$20; Description: DESC_FISUB_2; Branch: BRANCH_NORMAL),
611 (Name: 'FISUB' + FP_4; Code: #$DA#$20; Description: DESC_FISUB_4; Branch: BRANCH_NORMAL),
612 (Name: 'FISUBR' + FP_2; Code: #$DE#$28; Description: DESC_FISUBR_2; Branch: BRANCH_NORMAL),
613 (Name: 'FISUBR' + FP_4; Code: #$DA#$28; Description: DESC_FISUBR_4; Branch: BRANCH_NORMAL),
614 (Name: 'FLD' + FP_S; Code: #$D9#$00; Description: DESC_FLD_S; Branch: BRANCH_NORMAL),
615 (Name: 'FLD' + FP_D; Code: #$DD#$00; Description: DESC_FLD_D; Branch: BRANCH_NORMAL),
616 (Name: 'FLD' + FP_E; Code: #$DB#$28; Description: DESC_FLD_E; Branch: BRANCH_NORMAL),
617 (Name: 'FLD' + FP_T; Code: #$D9#$C0; Description: DESC_FLD_I; Branch: BRANCH_NORMAL),
618 (Name: 'FLD' + FP_I; Code: #$D9#$C0; Description: DESC_FLD_I; Branch: BRANCH_NORMAL),
619 (Name: 'FLD1' + FP_X; Code: #$D9#$E8; Description: DESC_FLD1; Branch: BRANCH_NORMAL),
620 (Name: 'FLDCW' + FP_C; Code: #$D9#$28; Description: DESC_FLDCW_C; Branch: BRANCH_NORMAL),
621 (Name: 'FLDENV' + FP_14; Code: #$66#$D9#$20; Description: DESC_FLDENV_14; Branch: BRANCH_NORMAL),
622 (Name: 'FLDENV' + FP_28; Code: #$D9#$20; Description: DESC_FLDENV_28; Branch: BRANCH_NORMAL),
623 (Name: 'FLDL2E' + FP_X; Code: #$D9#$EA; Description: DESC_FLDL2E; Branch: BRANCH_NORMAL),
624 (Name: 'FLDL2T' + FP_X; Code: #$D9#$E9; Description: DESC_FLDL2T; Branch: BRANCH_NORMAL),
625 (Name: 'FLDLG2' + FP_X; Code: #$D9#$EC; Description: DESC_FLDLG2; Branch: BRANCH_NORMAL),
626 (Name: 'FLDLN2' + FP_X; Code: #$D9#$ED; Description: DESC_FLDLN2; Branch: BRANCH_NORMAL),
627 (Name: 'FLDPI' + FP_X; Code: #$D9#$EB; Description: DESC_FLDPI; Branch: BRANCH_NORMAL),
628 (Name: 'FLDZ' + FP_X; Code: #$D9#$EE; Description: DESC_FLDZ; Branch: BRANCH_NORMAL),
629 (Name: 'FMUL' + FP_S; Code: #$D8#$08; Description: DESC_FMUL_S; Branch: BRANCH_NORMAL),
630 (Name: 'FMUL' + FP_D; Code: #$DC#$08; Description: DESC_FMUL_D; Branch: BRANCH_NORMAL),
631 (Name: 'FMUL' + FP_T + FP_T; Code: #$D8#$C8; Description: DESC_FMUL_T_I; Branch: BRANCH_NORMAL),
632 (Name: 'FMUL' + FP_T + FP_I; Code: #$D8#$C8; Description: DESC_FMUL_T_I; Branch: BRANCH_NORMAL),
633 (Name: 'FMUL' + FP_I + FP_T; Code: #$DC#$C8; Description: DESC_FMUL_I_T; Branch: BRANCH_NORMAL),
634 (Name: 'FMULP' + FP_T + FP_T; Code: #$DE#$C8; Description: DESC_FMULP_I_T; Branch: BRANCH_NORMAL),
635 (Name: 'FMULP' + FP_I + FP_T; Code: #$DE#$C8; Description: DESC_FMULP_I_T; Branch: BRANCH_NORMAL),
636 (Name: 'FMULP' + FP_X; Code: #$DE#$C9; Description: DESC_FMULP; Branch: BRANCH_NORMAL),
637 (Name: 'FIMUL' + FP_2; Code: #$DE#$08; Description: DESC_FIMUL_2; Branch: BRANCH_NORMAL),
638 (Name: 'FIMUL' + FP_4; Code: #$DA#$08; Description: DESC_FIMUL_4; Branch: BRANCH_NORMAL),
639 (Name: 'FNCLEX' + FP_X; Code: #$DB#$E2; Description: DESC_FNCLEX; Branch: BRANCH_NORMAL),
640 (Name: 'FNINIT' + FP_X; Code: #$DB#$E3; Description: DESC_FNINIT; Branch: BRANCH_NORMAL),
641 (Name: 'FNOP' + FP_X; Code: #$D9#$D0; Description: DESC_FNOP; Branch: BRANCH_NORMAL),
642 (Name: 'FNSAVE' + FP_94; Code: #$66#$DD#$30; Description: DESC_FNSAVE_94; Branch: BRANCH_NORMAL),
643 (Name: 'FNSAVE' + FP_108; Code: #$DD#$30; Description: DESC_FNSAVE_108; Branch: BRANCH_NORMAL),
644 (Name: 'FNSTCW' + FP_C; Code: #$D9#$38; Description: DESC_FNSTCW_C; Branch: BRANCH_NORMAL),
645 (Name: 'FNSTENV' + FP_14; Code: #$66#$D9#$30; Description: DESC_FNSTENV_14; Branch: BRANCH_NORMAL),
646 (Name: 'FNSTENV' + FP_28; Code: #$D9#$30; Description: DESC_FNSTENV_28; Branch: BRANCH_NORMAL),
647 (Name: 'FNSTSW' + FP_W; Code: #$DD#$38; Description: DESC_FNSTSW_W; Branch: BRANCH_NORMAL),
648 (Name: 'FNSTSW' + FP_AX; Code: #$DF#$E0; Description: DESC_FNSTSW_AX; Branch: BRANCH_NORMAL),
649 (Name: 'FPATAN' + FP_X; Code: #$D9#$F3; Description: DESC_FPATAN; Branch: BRANCH_NORMAL),
650 (Name: 'FPREM' + FP_X; Code: #$D9#$F8; Description: DESC_FPREM; Branch: BRANCH_NORMAL),
651 (Name: 'FPREM1' + FP_X; Code: #$D9#$F5; Description: DESC_FPREM1; Branch: BRANCH_NORMAL),
652 (Name: 'FPTAN' + FP_X; Code: #$D9#$F2; Description: DESC_FPTAN; Branch: BRANCH_NORMAL),
653 (Name: 'FRNDINT' + FP_X; Code: #$D9#$FC; Description: DESC_FRNDINT; Branch: BRANCH_NORMAL),
654 (Name: 'FRSTOR' + FP_94; Code: #$66#$DD#$20; Description: DESC_FRSTOR_94; Branch: BRANCH_NORMAL),
655 (Name: 'FRSTOR' + FP_108; Code: #$DD#$20; Description: DESC_FRSTOR_108; Branch: BRANCH_NORMAL),
656 (Name: 'FSAVE' + FP_94; Code: #$9B#$66#$DD#$30; Description: DESC_FSAVE_94; Branch: BRANCH_NORMAL),
657 (Name: 'FSAVE' + FP_108; Code: #$9B#$DD#$30; Description: DESC_FSAVE_108; Branch: BRANCH_NORMAL),
658 (Name: 'FSCALE' + FP_X; Code: #$D9#$FD; Description: DESC_FSCALE; Branch: BRANCH_NORMAL),
659 (Name: 'FSIN' + FP_X; Code: #$D9#$FE; Description: DESC_FSIN; Branch: BRANCH_NORMAL),
660 (Name: 'FSINCOS' + FP_X; Code: #$D9#$FB; Description: DESC_FSINCOS; Branch: BRANCH_NORMAL),
661 (Name: 'FSQRT' + FP_X; Code: #$D9#$FA; Description: DESC_FSQRT; Branch: BRANCH_NORMAL),
662 (Name: 'FST' + FP_S; Code: #$D9#$10; Description: DESC_FST_S; Branch: BRANCH_NORMAL),
663 (Name: 'FST' + FP_D; Code: #$DD#$10; Description: DESC_FST_D; Branch: BRANCH_NORMAL),
664 (Name: 'FST' + FP_T; Code: #$DD#$D0; Description: DESC_FST_I; Branch: BRANCH_NORMAL),
665 (Name: 'FST' + FP_I; Code: #$DD#$D0; Description: DESC_FST_I; Branch: BRANCH_NORMAL),
666 (Name: 'FSTCW' + FP_C; Code: #$9B#$D9#$38; Description: DESC_FSTCW_C; Branch: BRANCH_NORMAL),
667 (Name: 'FSTENV' + FP_14; Code: #$9B#$66#$D9#$30; Description: DESC_FSTENV_14; Branch: BRANCH_NORMAL),
668 (Name: 'FSTENV' + FP_28; Code: #$9B#$D9#$30; Description: DESC_FSTENV_28; Branch: BRANCH_NORMAL),
669 (Name: 'FSTP' + FP_S; Code: #$D9#$18; Description: DESC_FSTP_S; Branch: BRANCH_NORMAL),
670 (Name: 'FSTP' + FP_D; Code: #$DD#$18; Description: DESC_FSTP_D; Branch: BRANCH_NORMAL),
671 (Name: 'FSTP' + FP_E; Code: #$DB#$38; Description: DESC_FSTP_E; Branch: BRANCH_NORMAL),
672 (Name: 'FSTP' + FP_T; Code: #$DD#$D8; Description: DESC_FSTP_I; Branch: BRANCH_NORMAL),
673 (Name: 'FSTP' + FP_I; Code: #$DD#$D8; Description: DESC_FSTP_I; Branch: BRANCH_NORMAL),
674 (Name: 'FSTSW' + FP_W; Code: #$9B#$DD#$38; Description: DESC_FSTSW_W; Branch: BRANCH_NORMAL),
675 (Name: 'FSTSW' + FP_AX; Code: #$9B#$DF#$E0; Description: DESC_FSTSW_AX; Branch: BRANCH_NORMAL),
676 (Name: 'FSUB' + FP_S; Code: #$D8#$20; Description: DESC_FSUB_S; Branch: BRANCH_NORMAL),
677 (Name: 'FSUB' + FP_D; Code: #$DC#$20; Description: DESC_FSUB_D; Branch: BRANCH_NORMAL),
678 (Name: 'FSUB' + FP_T + FP_T; Code: #$D8#$E0; Description: DESC_FSUB_T_I; Branch: BRANCH_NORMAL),
679 (Name: 'FSUB' + FP_T + FP_I; Code: #$D8#$E0; Description: DESC_FSUB_T_I; Branch: BRANCH_NORMAL),
680 (Name: 'FSUB' + FP_I + FP_T; Code: #$DC#$E8; Description: DESC_FSUB_I_T; Branch: BRANCH_NORMAL),
681 (Name: 'FSUBP' + FP_T + FP_T; Code: #$DE#$E8; Description: DESC_FSUBP_I_T; Branch: BRANCH_NORMAL),
682 (Name: 'FSUBP' + FP_I + FP_T; Code: #$DE#$E8; Description: DESC_FSUBP_I_T; Branch: BRANCH_NORMAL),
683 (Name: 'FSUBP' + FP_X; Code: #$DE#$E9; Description: DESC_FSUBP; Branch: BRANCH_NORMAL),
684 (Name: 'FSUBR' + FP_S; Code: #$D8#$28; Description: DESC_FSUBR_S; Branch: BRANCH_NORMAL),
685 (Name: 'FSUBR' + FP_D; Code: #$DC#$28; Description: DESC_FSUBR_D; Branch: BRANCH_NORMAL),
686 (Name: 'FSUBR' + FP_T + FP_T; Code: #$D8#$E8; Description: DESC_FSUBR_T_I; Branch: BRANCH_NORMAL),
687 (Name: 'FSUBR' + FP_T + FP_I; Code: #$D8#$E8; Description: DESC_FSUBR_T_I; Branch: BRANCH_NORMAL),
688 (Name: 'FSUBR' + FP_I + FP_T; Code: #$DC#$E0; Description: DESC_FSUBR_I_T; Branch: BRANCH_NORMAL),
689 (Name: 'FSUBRP' + FP_X; Code: #$DE#$E1; Description: DESC_FSUBRP; Branch: BRANCH_NORMAL),
690 (Name: 'FSUBRP' + FP_T + FP_T; Code: #$DE#$E0; Description: DESC_FSUBRP_I_T; Branch: BRANCH_NORMAL),
691 (Name: 'FSUBRP' + FP_I + FP_T; Code: #$DE#$E0; Description: DESC_FSUBRP_I_T; Branch: BRANCH_NORMAL),
692 (Name: 'FTST' + FP_X; Code: #$D9#$E4; Description: DESC_FTST; Branch: BRANCH_NORMAL),
693 (Name: 'FUCOM' + FP_X; Code: #$DD#$E1; Description: DESC_FUCOM; Branch: BRANCH_NORMAL),
694 (Name: 'FUCOM' + FP_T; Code: #$DD#$E0; Description: DESC_FUCOM_I; Branch: BRANCH_NORMAL),
695 (Name: 'FUCOM' + FP_I; Code: #$DD#$E0; Description: DESC_FUCOM_I; Branch: BRANCH_NORMAL),
696 (Name: 'FUCOMI' + FP_T + FP_T; Code: #$DB#$E8; Description: DESC_FUCOMI_T_I; Branch: BRANCH_NORMAL),
697 (Name: 'FUCOMI' + FP_T + FP_I; Code: #$DB#$E8; Description: DESC_FUCOMI_T_I; Branch: BRANCH_NORMAL),
698 (Name: 'FUCOMIP' + FP_T + FP_T; Code: #$DF#$E8; Description: DESC_FUCOMIP_T_I; Branch: BRANCH_NORMAL),
699 (Name: 'FUCOMIP' + FP_T + FP_I; Code: #$DF#$E8; Description: DESC_FUCOMIP_T_I; Branch: BRANCH_NORMAL),
700 (Name: 'FUCOMP' + FP_X; Code: #$DD#$E9; Description: DESC_FUCOMP; Branch: BRANCH_NORMAL),
701 (Name: 'FUCOMP' + FP_T; Code: #$DD#$E8; Description: DESC_FUCOMP_I; Branch: BRANCH_NORMAL),
702 (Name: 'FUCOMP' + FP_I; Code: #$DD#$E8; Description: DESC_FUCOMP_I; Branch: BRANCH_NORMAL),
703 (Name: 'FUCOMPP' + FP_X; Code: #$DA#$E9; Description: DESC_FUCOMPP; Branch: BRANCH_NORMAL),
704 (Name: 'FWAIT' + FP_X; Code: #$9B; Description: DESC_FWAIT; Branch: BRANCH_NORMAL),
705 (Name: 'FXAM' + FP_X; Code: #$D9#$E5; Description: DESC_FXAM; Branch: BRANCH_NORMAL),
706 (Name: 'FXCH' + FP_X; Code: #$D9#$C9; Description: DESC_FXCH; Branch: BRANCH_NORMAL),
707 (Name: 'FXCH' + FP_T; Code: #$D9#$C8; Description: DESC_FXCH_I; Branch: BRANCH_NORMAL),
708 (Name: 'FXCH' + FP_I; Code: #$D9#$C8; Description: DESC_FXCH_I; Branch: BRANCH_NORMAL),
709 (Name: 'FXTRACT' + FP_X; Code: #$D9#$F4; Description: DESC_FXTRACT; Branch: BRANCH_NORMAL),
710 (Name: 'FYL2X' + FP_X; Code: #$D9#$F1; Description: DESC_FYL2X; Branch: BRANCH_NORMAL),
711 (Name: 'FYL2XP1' + FP_X; Code: #$D9#$F9; Description: DESC_FYL2XP1; Branch: BRANCH_NORMAL),
712 (Name: 'JA' + FP_ADDR; Code: #$77 + JCC_SHARED; Description: DESC_JA; Branch: BRANCH_BRANCH),
713 (Name: 'JAE' + FP_ADDR; Code: #$73 + JCC_SHARED; Description: DESC_JAE; Branch: BRANCH_BRANCH),
714 (Name: 'JB' + FP_ADDR; Code: #$72 + JCC_SHARED; Description: DESC_JB; Branch: BRANCH_BRANCH),
715 (Name: 'JBE' + FP_ADDR; Code: #$76 + JCC_SHARED; Description: DESC_JBE; Branch: BRANCH_BRANCH),
716 (Name: 'JC' + FP_ADDR; Code: #$72 + JCC_SHARED; Description: DESC_JC; Branch: BRANCH_BRANCH),
717 (Name: 'JE' + FP_ADDR; Code: #$74 + JCC_SHARED; Description: DESC_JE; Branch: BRANCH_BRANCH),
718 (Name: 'JG' + FP_ADDR; Code: #$7F + JCC_SHARED; Description: DESC_JG; Branch: BRANCH_BRANCH),
719 (Name: 'JGE' + FP_ADDR; Code: #$7D + JCC_SHARED; Description: DESC_JGE; Branch: BRANCH_BRANCH),
720 (Name: 'JL' + FP_ADDR; Code: #$7C + JCC_SHARED; Description: DESC_JL; Branch: BRANCH_BRANCH),
721 (Name: 'JLE' + FP_ADDR; Code: #$7E + JCC_SHARED; Description: DESC_JLE; Branch: BRANCH_BRANCH),
722 (Name: 'JMP' + FP_ADDR; Code: JMP_RESULT_1; Description: DESC_JMP; Branch: BRANCH_BRANCH),
723 (Name: 'JNA' + FP_ADDR; Code: #$76 + JCC_SHARED; Description: DESC_JNA; Branch: BRANCH_BRANCH),
724 (Name: 'JNAE' + FP_ADDR; Code: #$72 + JCC_SHARED; Description: DESC_JNAE; Branch: BRANCH_BRANCH),
725 (Name: 'JNB' + FP_ADDR; Code: #$73 + JCC_SHARED; Description: DESC_JNB; Branch: BRANCH_BRANCH),
726 (Name: 'JNBE' + FP_ADDR; Code: #$77 + JCC_SHARED; Description: DESC_JNBE; Branch: BRANCH_BRANCH),
727 (Name: 'JNC' + FP_ADDR; Code: #$73 + JCC_SHARED; Description: DESC_JNC; Branch: BRANCH_BRANCH),
728 (Name: 'JNE' + FP_ADDR; Code: #$75 + JCC_SHARED; Description: DESC_JNE; Branch: BRANCH_BRANCH),
729 (Name: 'JNG' + FP_ADDR; Code: #$7E + JCC_SHARED; Description: DESC_JNG; Branch: BRANCH_BRANCH),
730 (Name: 'JNGE' + FP_ADDR; Code: #$7C + JCC_SHARED; Description: DESC_JNGE; Branch: BRANCH_BRANCH),
731 (Name: 'JNL' + FP_ADDR; Code: #$7D + JCC_SHARED; Description: DESC_JNL; Branch: BRANCH_BRANCH),
732 (Name: 'JNLE' + FP_ADDR; Code: #$7F + JCC_SHARED; Description: DESC_JNLE; Branch: BRANCH_BRANCH),
733 (Name: 'JNO' + FP_ADDR; Code: #$71 + JCC_SHARED; Description: DESC_JNO; Branch: BRANCH_BRANCH),
734 (Name: 'JNP' + FP_ADDR; Code: #$7B + JCC_SHARED; Description: DESC_JNP; Branch: BRANCH_BRANCH),
735 (Name: 'JNS' + FP_ADDR; Code: #$79 + JCC_SHARED; Description: DESC_JNS; Branch: BRANCH_BRANCH),
736 (Name: 'JNZ' + FP_ADDR; Code: #$75 + JCC_SHARED; Description: DESC_JNZ; Branch: BRANCH_BRANCH),
737 (Name: 'JO' + FP_ADDR; Code: #$70 + JCC_SHARED; Description: DESC_JO; Branch: BRANCH_BRANCH),
738 (Name: 'JP' + FP_ADDR; Code: #$7A + JCC_SHARED; Description: DESC_JP; Branch: BRANCH_BRANCH),
739 (Name: 'JPE' + FP_ADDR; Code: #$7A + JCC_SHARED; Description: DESC_JPE; Branch: BRANCH_BRANCH),
740 (Name: 'JPO' + FP_ADDR; Code: #$7B + JCC_SHARED; Description: DESC_JPO; Branch: BRANCH_BRANCH),
741 (Name: 'JS' + FP_ADDR; Code: #$78 + JCC_SHARED; Description: DESC_JS; Branch: BRANCH_BRANCH),
742 (Name: 'JZ' + FP_ADDR; Code: #$74 + JCC_SHARED; Description: DESC_JZ; Branch: BRANCH_BRANCH),
743 (Name: 'WAIT' + FP_X; Code: #$9B; Description: DESC_FWAIT; Branch: BRANCH_NORMAL)
746 { Operands Definition }
748 sOperands: array [0..12] of TOperandRecord = (
749 (Name: 'ST'; Code: ''; OperandType: FPU_OPERAND_ST_0; Default: ''; Data: nil),
750 (Name: 'ST(0)'; Code: ''; OperandType: FPU_OPERAND_ST_0; Default: ''; Data: nil),
751 (Name: 'ST(1)'; Code: #$01; OperandType: FPU_OPERAND_ST_I; Default: ''; Data: nil),
752 (Name: 'ST(2)'; Code: #$02; OperandType: FPU_OPERAND_ST_I; Default: ''; Data: nil),
753 (Name: 'ST(3)'; Code: #$03; OperandType: FPU_OPERAND_ST_I; Default: ''; Data: nil),
754 (Name: 'ST(4)'; Code: #$04; OperandType: FPU_OPERAND_ST_I; Default: ''; Data: nil),
755 (Name: 'ST(5)'; Code: #$05; OperandType: FPU_OPERAND_ST_I; Default: ''; Data: nil),
756 (Name: 'ST(6)'; Code: #$06; OperandType: FPU_OPERAND_ST_I; Default: ''; Data: nil),
757 (Name: 'ST(7)'; Code: #$07; OperandType: FPU_OPERAND_ST_I; Default: ''; Data: nil),
758 (Name: 'WORD_1'; Code: #$05; OperandType: FPU_OPERAND_M16_INT; Default: DEFV_M16_INT; Data: nil),
759 (Name: 'DWORD_1'; Code: #$05; OperandType: FPU_OPERAND_M32_INT; Default: DEFV_M32_INT; Data: nil),
760 (Name: 'QWORD_1'; Code: #$05; OperandType: FPU_OPERAND_M64_INT; Default: DEFV_M64_INT; Data: nil),
761 (Name: 'SINGLE_1'; Code: #$05; OperandType: FPU_OPERAND_M32_FP; Default: DEFV_M32_FP; Data: nil)
764 { Operands Type Definition }
766 sOperandTypes: array [0..18] of TOperandTypeRecord = (
767 (OperandType: FPU_OPERAND_ERROR; Description: DESC_OPER_ERROR),
768 (OperandType: FPU_OPERAND_NONE; Description: DESC_OPER_NONE),
769 (OperandType: FPU_OPERAND_ST_0; Description: DESC_OPER_ST_0),
770 (OperandType: FPU_OPERAND_ST_I; Description: DESC_OPER_ST_I),
771 (OperandType: FPU_OPERAND_AX; Description: DESC_OPER_AX),
772 (OperandType: FPU_OPERAND_M16_INT; Description: DESC_OPER_M16_INT),
773 (OperandType: FPU_OPERAND_M32_INT; Description: DESC_OPER_M32_INT),
774 (OperandType: FPU_OPERAND_M64_INT; Description: DESC_OPER_M64_INT),
775 (OperandType: FPU_OPERAND_ADDR; Description: DESC_OPER_ADDR),
776 (OperandType: FPU_OPERAND_M80_BCD; Description: DESC_OPER_M80_BCD),
777 (OperandType: FPU_OPERAND_M32_FP; Description: DESC_OPER_M32_FP),
778 (OperandType: FPU_OPERAND_M64_FP; Description: DESC_OPER_M64_FP),
779 (OperandType: FPU_OPERAND_M80_FP; Description: DESC_OPER_M80_FP),
780 (OperandType: FPU_OPERAND_M2BYTE_CW; Description: DESC_OPER_M2BYTE_CW),
781 (OperandType: FPU_OPERAND_M2BYTE_SW; Description: DESC_OPER_M2BYTE_SW),
782 (OperandType: FPU_OPERAND_M14BYTE_ENV; Description: DESC_OPER_M14BYTE_ENV),
783 (OperandType: FPU_OPERAND_M28BYTE_ENV; Description: DESC_OPER_M28BYTE_ENV),
784 (OperandType: FPU_OPERAND_M94BYTE_STAT; Description: DESC_OPER_M94BYTE_STAT),
785 (OperandType: FPU_OPERAND_M108BYTE_STAT; Description: DESC_OPER_M108BYTE_STAT)
788 { CPU Features Flags }
790 CPU_SSE3_PRESENT: Boolean;
792 implementation
794 procedure CheckCPUFeatures;
796 i: Integer;
797 begin
799 mov eax, 1
800 cpuid
801 and ecx, 1
802 mov CPU_SSE3_PRESENT, cl
803 end;
804 if not CPU_SSE3_PRESENT then
805 for i := 0 to (Length(sInstructions) - 1) do
806 if (ParseBeforeFirst(sInstructions[i].Name, FPU_SPACE) = 'FISTTP') then
807 with sInstructions[i] do
808 begin
809 Description := Description + DESC_DO + INST_INST_UNSUPPORTED;
810 Branch := BRANCH_UNSUPPORTED;
811 end;
812 end;
814 initialization
815 CheckCPUFeatures;
817 end.