1 /////////////////////////////////////////////////////////////////////////
2 // $Id: arith8.cc,v 1.49 2007/12/01 16:45:16 sshwarts Exp $
3 /////////////////////////////////////////////////////////////////////////
5 // Copyright (C) 2001 MandrakeSoft S.A.
9 // 75002 Paris - France
10 // http://www.linux-mandrake.com/
11 // http://www.mandrakesoft.com/
13 // This library is free software; you can redistribute it and/or
14 // modify it under the terms of the GNU Lesser General Public
15 // License as published by the Free Software Foundation; either
16 // version 2 of the License, or (at your option) any later version.
18 // This library is distributed in the hope that it will be useful,
19 // but WITHOUT ANY WARRANTY; without even the implied warranty of
20 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21 // Lesser General Public License for more details.
23 // You should have received a copy of the GNU Lesser General Public
24 // License along with this library; if not, write to the Free Software
25 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
26 /////////////////////////////////////////////////////////////////////////
29 #define NEED_CPU_REG_SHORTCUTS 1
32 #define LOG_THIS BX_CPU_THIS_PTR
35 void BX_CPU_C::ADD_EbGbM(bxInstruction_c
*i
)
39 read_RMW_virtual_byte(i
->seg(), RMAddr(i
), &op1
);
40 op2
= BX_READ_8BIT_REGx(i
->nnn(), i
->extend8bitL());
42 write_RMW_virtual_byte(sum
);
44 SET_FLAGS_OSZAPC_ADD_8(op1
, op2
, sum
);
47 void BX_CPU_C::ADD_EbGbR(bxInstruction_c
*i
)
51 op1
= BX_READ_8BIT_REGx(i
->rm(), i
->extend8bitL());
52 op2
= BX_READ_8BIT_REGx(i
->nnn(), i
->extend8bitL());
54 BX_WRITE_8BIT_REGx(i
->rm(), i
->extend8bitL(), sum
);
56 SET_FLAGS_OSZAPC_ADD_8(op1
, op2
, sum
);
59 void BX_CPU_C::ADD_GbEbM(bxInstruction_c
*i
)
63 op1
= BX_READ_8BIT_REGx(i
->nnn(), i
->extend8bitL());
64 read_virtual_byte(i
->seg(), RMAddr(i
), &op2
);
66 BX_WRITE_8BIT_REGx(i
->nnn(), i
->extend8bitL(), sum
);
68 SET_FLAGS_OSZAPC_ADD_8(op1
, op2
, sum
);
71 void BX_CPU_C::ADD_GbEbR(bxInstruction_c
*i
)
75 op1
= BX_READ_8BIT_REGx(i
->nnn(), i
->extend8bitL());
76 op2
= BX_READ_8BIT_REGx(i
->rm(), i
->extend8bitL());
78 BX_WRITE_8BIT_REGx(i
->nnn(), i
->extend8bitL(), sum
);
80 SET_FLAGS_OSZAPC_ADD_8(op1
, op2
, sum
);
83 void BX_CPU_C::ADD_ALIb(bxInstruction_c
*i
)
92 SET_FLAGS_OSZAPC_ADD_8(op1
, op2
, sum
);
95 void BX_CPU_C::ADC_EbGbM(bxInstruction_c
*i
)
98 bx_bool temp_CF
= getB_CF();
100 read_RMW_virtual_byte(i
->seg(), RMAddr(i
), &op1
);
101 op2
= BX_READ_8BIT_REGx(i
->nnn(), i
->extend8bitL());
102 sum
= op1
+ op2
+ temp_CF
;
103 write_RMW_virtual_byte(sum
);
105 SET_FLAGS_OSZAPC_8(op1
, op2
, sum
, BX_INSTR_ADD_ADC8(temp_CF
));
108 void BX_CPU_C::ADC_EbGbR(bxInstruction_c
*i
)
111 bx_bool temp_CF
= getB_CF();
113 op1
= BX_READ_8BIT_REGx(i
->rm(), i
->extend8bitL());
114 op2
= BX_READ_8BIT_REGx(i
->nnn(), i
->extend8bitL());
115 sum
= op1
+ op2
+ temp_CF
;
116 BX_WRITE_8BIT_REGx(i
->rm(), i
->extend8bitL(), sum
);
118 SET_FLAGS_OSZAPC_8(op1
, op2
, sum
, BX_INSTR_ADD_ADC8(temp_CF
));
121 void BX_CPU_C::ADC_GbEbM(bxInstruction_c
*i
)
124 bx_bool temp_CF
= getB_CF();
126 op1
= BX_READ_8BIT_REGx(i
->nnn(), i
->extend8bitL());
127 read_virtual_byte(i
->seg(), RMAddr(i
), &op2
);
128 sum
= op1
+ op2
+ temp_CF
;
129 BX_WRITE_8BIT_REGx(i
->nnn(), i
->extend8bitL(), sum
);
131 SET_FLAGS_OSZAPC_8(op1
, op2
, sum
, BX_INSTR_ADD_ADC8(temp_CF
));
134 void BX_CPU_C::ADC_GbEbR(bxInstruction_c
*i
)
137 bx_bool temp_CF
= getB_CF();
139 op1
= BX_READ_8BIT_REGx(i
->nnn(), i
->extend8bitL());
140 op2
= BX_READ_8BIT_REGx(i
->rm(), i
->extend8bitL());
141 sum
= op1
+ op2
+ temp_CF
;
142 BX_WRITE_8BIT_REGx(i
->nnn(), i
->extend8bitL(), sum
);
144 SET_FLAGS_OSZAPC_8(op1
, op2
, sum
, BX_INSTR_ADD_ADC8(temp_CF
));
147 void BX_CPU_C::ADC_ALIb(bxInstruction_c
*i
)
150 bx_bool temp_CF
= getB_CF();
154 sum
= op1
+ op2
+ temp_CF
;
157 SET_FLAGS_OSZAPC_8(op1
, op2
, sum
, BX_INSTR_ADD_ADC8(temp_CF
));
160 void BX_CPU_C::SBB_EbGbM(bxInstruction_c
*i
)
162 Bit8u op1_8
, op2_8
, diff_8
;
163 bx_bool temp_CF
= getB_CF();
165 read_RMW_virtual_byte(i
->seg(), RMAddr(i
), &op1_8
);
166 op2_8
= BX_READ_8BIT_REGx(i
->nnn(), i
->extend8bitL());
167 diff_8
= op1_8
- (op2_8
+ temp_CF
);
168 write_RMW_virtual_byte(diff_8
);
170 SET_FLAGS_OSZAPC_8(op1_8
, op2_8
, diff_8
, BX_INSTR_SUB_SBB8(temp_CF
));
173 void BX_CPU_C::SBB_EbGbR(bxInstruction_c
*i
)
175 Bit8u op1_8
, op2_8
, diff_8
;
176 bx_bool temp_CF
= getB_CF();
178 op1_8
= BX_READ_8BIT_REGx(i
->rm(), i
->extend8bitL());
179 op2_8
= BX_READ_8BIT_REGx(i
->nnn(), i
->extend8bitL());
180 diff_8
= op1_8
- (op2_8
+ temp_CF
);
181 BX_WRITE_8BIT_REGx(i
->rm(), i
->extend8bitL(), diff_8
);
183 SET_FLAGS_OSZAPC_8(op1_8
, op2_8
, diff_8
, BX_INSTR_SUB_SBB8(temp_CF
));
186 void BX_CPU_C::SBB_GbEbM(bxInstruction_c
*i
)
188 Bit8u op1_8
, op2_8
, diff_8
;
189 bx_bool temp_CF
= getB_CF();
191 op1_8
= BX_READ_8BIT_REGx(i
->nnn(), i
->extend8bitL());
192 read_virtual_byte(i
->seg(), RMAddr(i
), &op2_8
);
193 diff_8
= op1_8
- (op2_8
+ temp_CF
);
194 BX_WRITE_8BIT_REGx(i
->nnn(), i
->extend8bitL(), diff_8
);
196 SET_FLAGS_OSZAPC_8(op1_8
, op2_8
, diff_8
, BX_INSTR_SUB_SBB8(temp_CF
));
199 void BX_CPU_C::SBB_GbEbR(bxInstruction_c
*i
)
201 Bit8u op1_8
, op2_8
, diff_8
;
202 bx_bool temp_CF
= getB_CF();
204 op1_8
= BX_READ_8BIT_REGx(i
->nnn(), i
->extend8bitL());
205 op2_8
= BX_READ_8BIT_REGx(i
->rm(), i
->extend8bitL());
206 diff_8
= op1_8
- (op2_8
+ temp_CF
);
207 BX_WRITE_8BIT_REGx(i
->nnn(), i
->extend8bitL(), diff_8
);
209 SET_FLAGS_OSZAPC_8(op1_8
, op2_8
, diff_8
, BX_INSTR_SUB_SBB8(temp_CF
));
212 void BX_CPU_C::SBB_ALIb(bxInstruction_c
*i
)
214 Bit8u op1_8
, op2_8
, diff_8
;
215 bx_bool temp_CF
= getB_CF();
219 diff_8
= op1_8
- (op2_8
+ temp_CF
);
222 SET_FLAGS_OSZAPC_8(op1_8
, op2_8
, diff_8
, BX_INSTR_SUB_SBB8(temp_CF
));
225 void BX_CPU_C::SBB_EbIbM(bxInstruction_c
*i
)
227 Bit8u op1_8
, op2_8
= i
->Ib(), diff_8
;
228 bx_bool temp_CF
= getB_CF();
230 read_RMW_virtual_byte(i
->seg(), RMAddr(i
), &op1_8
);
231 diff_8
= op1_8
- (op2_8
+ temp_CF
);
232 write_RMW_virtual_byte(diff_8
);
234 SET_FLAGS_OSZAPC_8(op1_8
, op2_8
, diff_8
, BX_INSTR_SUB_SBB8(temp_CF
));
237 void BX_CPU_C::SBB_EbIbR(bxInstruction_c
*i
)
239 Bit8u op1_8
, op2_8
= i
->Ib(), diff_8
;
240 bx_bool temp_CF
= getB_CF();
242 op1_8
= BX_READ_8BIT_REGx(i
->rm(), i
->extend8bitL());
243 diff_8
= op1_8
- (op2_8
+ temp_CF
);
244 BX_WRITE_8BIT_REGx(i
->rm(), i
->extend8bitL(), diff_8
);
246 SET_FLAGS_OSZAPC_8(op1_8
, op2_8
, diff_8
, BX_INSTR_SUB_SBB8(temp_CF
));
249 void BX_CPU_C::SUB_EbGbM(bxInstruction_c
*i
)
251 Bit8u op1_8
, op2_8
, diff_8
;
253 read_RMW_virtual_byte(i
->seg(), RMAddr(i
), &op1_8
);
254 op2_8
= BX_READ_8BIT_REGx(i
->nnn(), i
->extend8bitL());
255 diff_8
= op1_8
- op2_8
;
256 write_RMW_virtual_byte(diff_8
);
258 SET_FLAGS_OSZAPC_SUB_8(op1_8
, op2_8
, diff_8
);
261 void BX_CPU_C::SUB_EbGbR(bxInstruction_c
*i
)
263 Bit8u op1_8
, op2_8
, diff_8
;
265 op1_8
= BX_READ_8BIT_REGx(i
->rm(), i
->extend8bitL());
266 op2_8
= BX_READ_8BIT_REGx(i
->nnn(), i
->extend8bitL());
267 diff_8
= op1_8
- op2_8
;
268 BX_WRITE_8BIT_REGx(i
->rm(), i
->extend8bitL(), diff_8
);
270 SET_FLAGS_OSZAPC_SUB_8(op1_8
, op2_8
, diff_8
);
273 void BX_CPU_C::SUB_GbEbM(bxInstruction_c
*i
)
275 Bit8u op1_8
, op2_8
, diff_8
;
277 op1_8
= BX_READ_8BIT_REGx(i
->nnn(), i
->extend8bitL());
278 read_virtual_byte(i
->seg(), RMAddr(i
), &op2_8
);
279 diff_8
= op1_8
- op2_8
;
280 BX_WRITE_8BIT_REGx(i
->nnn(), i
->extend8bitL(), diff_8
);
282 SET_FLAGS_OSZAPC_SUB_8(op1_8
, op2_8
, diff_8
);
285 void BX_CPU_C::SUB_GbEbR(bxInstruction_c
*i
)
287 Bit8u op1_8
, op2_8
, diff_8
;
289 op1_8
= BX_READ_8BIT_REGx(i
->nnn(), i
->extend8bitL());
290 op2_8
= BX_READ_8BIT_REGx(i
->rm(), i
->extend8bitL());
291 diff_8
= op1_8
- op2_8
;
292 BX_WRITE_8BIT_REGx(i
->nnn(), i
->extend8bitL(), diff_8
);
294 SET_FLAGS_OSZAPC_SUB_8(op1_8
, op2_8
, diff_8
);
297 void BX_CPU_C::SUB_ALIb(bxInstruction_c
*i
)
299 Bit8u op1_8
, op2_8
, diff_8
;
303 diff_8
= op1_8
- op2_8
;
306 SET_FLAGS_OSZAPC_SUB_8(op1_8
, op2_8
, diff_8
);
309 void BX_CPU_C::CMP_EbGbM(bxInstruction_c
*i
)
311 Bit8u op1_8
, op2_8
, diff_8
;
313 read_virtual_byte(i
->seg(), RMAddr(i
), &op1_8
);
314 op2_8
= BX_READ_8BIT_REGx(i
->nnn(), i
->extend8bitL());
315 diff_8
= op1_8
- op2_8
;
317 SET_FLAGS_OSZAPC_SUB_8(op1_8
, op2_8
, diff_8
);
320 void BX_CPU_C::CMP_EbGbR(bxInstruction_c
*i
)
322 Bit8u op1_8
, op2_8
, diff_8
;
324 op1_8
= BX_READ_8BIT_REGx(i
->rm(), i
->extend8bitL());
325 op2_8
= BX_READ_8BIT_REGx(i
->nnn(), i
->extend8bitL());
326 diff_8
= op1_8
- op2_8
;
328 SET_FLAGS_OSZAPC_SUB_8(op1_8
, op2_8
, diff_8
);
331 void BX_CPU_C::CMP_GbEbM(bxInstruction_c
*i
)
333 Bit8u op1_8
, op2_8
, diff_8
;
335 op1_8
= BX_READ_8BIT_REGx(i
->nnn(), i
->extend8bitL());
336 read_virtual_byte(i
->seg(), RMAddr(i
), &op2_8
);
337 diff_8
= op1_8
- op2_8
;
339 SET_FLAGS_OSZAPC_SUB_8(op1_8
, op2_8
, diff_8
);
342 void BX_CPU_C::CMP_GbEbR(bxInstruction_c
*i
)
344 Bit8u op1_8
, op2_8
, diff_8
;
346 op1_8
= BX_READ_8BIT_REGx(i
->nnn(), i
->extend8bitL());
347 op2_8
= BX_READ_8BIT_REGx(i
->rm(), i
->extend8bitL());
348 diff_8
= op1_8
- op2_8
;
350 SET_FLAGS_OSZAPC_SUB_8(op1_8
, op2_8
, diff_8
);
353 void BX_CPU_C::CMP_ALIb(bxInstruction_c
*i
)
355 Bit8u op1_8
, op2_8
, diff_8
;
359 diff_8
= op1_8
- op2_8
;
361 SET_FLAGS_OSZAPC_SUB_8(op1_8
, op2_8
, diff_8
);
364 void BX_CPU_C::XADD_EbGbM(bxInstruction_c
*i
)
366 #if BX_CPU_LEVEL >= 4
369 /* XADD dst(r/m8), src(r8)
370 * temp <-- src + dst | sum = op2 + op1
371 * src <-- dst | op2 = op1
372 * dst <-- tmp | op1 = sum
375 read_RMW_virtual_byte(i
->seg(), RMAddr(i
), &op1
);
376 op2
= BX_READ_8BIT_REGx(i
->nnn(), i
->extend8bitL());
378 write_RMW_virtual_byte(sum
);
380 /* and write destination into source */
381 BX_WRITE_8BIT_REGx(i
->nnn(), i
->extend8bitL(), op1
);
383 SET_FLAGS_OSZAPC_ADD_8(op1
, op2
, sum
);
385 BX_INFO(("XADD_EbGb: not supported on < 80486"));
390 void BX_CPU_C::XADD_EbGbR(bxInstruction_c
*i
)
392 #if BX_CPU_LEVEL >= 4
395 /* XADD dst(r/m8), src(r8)
396 * temp <-- src + dst | sum = op2 + op1
397 * src <-- dst | op2 = op1
398 * dst <-- tmp | op1 = sum
401 op1
= BX_READ_8BIT_REGx(i
->rm(), i
->extend8bitL());
402 op2
= BX_READ_8BIT_REGx(i
->nnn(), i
->extend8bitL());
405 // and write destination into source
406 // Note: if both op1 & op2 are registers, the last one written
407 // should be the sum, as op1 & op2 may be the same register.
408 // For example: XADD AL, AL
409 BX_WRITE_8BIT_REGx(i
->nnn(), i
->extend8bitL(), op1
);
410 BX_WRITE_8BIT_REGx(i
->rm(), i
->extend8bitL(), sum
);
412 SET_FLAGS_OSZAPC_ADD_8(op1
, op2
, sum
);
414 BX_INFO(("XADD_EbGb: not supported on < 80486"));
419 void BX_CPU_C::ADD_EbIbM(bxInstruction_c
*i
)
421 Bit8u op1
, op2
= i
->Ib(), sum
;
423 read_RMW_virtual_byte(i
->seg(), RMAddr(i
), &op1
);
425 write_RMW_virtual_byte(sum
);
427 SET_FLAGS_OSZAPC_ADD_8(op1
, op2
, sum
);
430 void BX_CPU_C::ADD_EbIbR(bxInstruction_c
*i
)
432 Bit8u op1
, op2
= i
->Ib(), sum
;
434 op1
= BX_READ_8BIT_REGx(i
->rm(), i
->extend8bitL());
436 BX_WRITE_8BIT_REGx(i
->rm(), i
->extend8bitL(), sum
);
438 SET_FLAGS_OSZAPC_ADD_8(op1
, op2
, sum
);
441 void BX_CPU_C::ADC_EbIbM(bxInstruction_c
*i
)
443 Bit8u op1
, op2
= i
->Ib(), sum
;
444 bx_bool temp_CF
= getB_CF();
446 read_RMW_virtual_byte(i
->seg(), RMAddr(i
), &op1
);
447 sum
= op1
+ op2
+ temp_CF
;
448 write_RMW_virtual_byte(sum
);
450 SET_FLAGS_OSZAPC_8(op1
, op2
, sum
, BX_INSTR_ADD_ADC8(temp_CF
));
453 void BX_CPU_C::ADC_EbIbR(bxInstruction_c
*i
)
455 Bit8u op1
, op2
= i
->Ib(), sum
;
456 bx_bool temp_CF
= getB_CF();
458 op1
= BX_READ_8BIT_REGx(i
->rm(), i
->extend8bitL());
459 sum
= op1
+ op2
+ temp_CF
;
460 BX_WRITE_8BIT_REGx(i
->rm(), i
->extend8bitL(), sum
);
462 SET_FLAGS_OSZAPC_8(op1
, op2
, sum
, BX_INSTR_ADD_ADC8(temp_CF
));
465 void BX_CPU_C::SUB_EbIbM(bxInstruction_c
*i
)
467 Bit8u op1_8
, op2_8
= i
->Ib(), diff_8
;
469 read_RMW_virtual_byte(i
->seg(), RMAddr(i
), &op1_8
);
470 diff_8
= op1_8
- op2_8
;
471 write_RMW_virtual_byte(diff_8
);
473 SET_FLAGS_OSZAPC_SUB_8(op1_8
, op2_8
, diff_8
);
476 void BX_CPU_C::SUB_EbIbR(bxInstruction_c
*i
)
478 Bit8u op1_8
, op2_8
= i
->Ib(), diff_8
;
480 op1_8
= BX_READ_8BIT_REGx(i
->rm(), i
->extend8bitL());
481 diff_8
= op1_8
- op2_8
;
482 BX_WRITE_8BIT_REGx(i
->rm(), i
->extend8bitL(), diff_8
);
484 SET_FLAGS_OSZAPC_SUB_8(op1_8
, op2_8
, diff_8
);
487 void BX_CPU_C::CMP_EbIbM(bxInstruction_c
*i
)
489 Bit8u op1_8
, op2_8
= i
->Ib(), diff_8
;
491 read_virtual_byte(i
->seg(), RMAddr(i
), &op1_8
);
492 diff_8
= op1_8
- op2_8
;
494 SET_FLAGS_OSZAPC_SUB_8(op1_8
, op2_8
, diff_8
);
497 void BX_CPU_C::CMP_EbIbR(bxInstruction_c
*i
)
499 Bit8u op1_8
, op2_8
= i
->Ib(), diff_8
;
501 op1_8
= BX_READ_8BIT_REGx(i
->rm(), i
->extend8bitL());
502 diff_8
= op1_8
- op2_8
;
503 SET_FLAGS_OSZAPC_SUB_8(op1_8
, op2_8
, diff_8
);
506 void BX_CPU_C::NEG_EbM(bxInstruction_c
*i
)
510 read_RMW_virtual_byte(i
->seg(), RMAddr(i
), &op1_8
);
512 write_RMW_virtual_byte(op1_8
);
514 SET_FLAGS_OSZAPC_RESULT_8(op1_8
, BX_INSTR_NEG8
);
517 void BX_CPU_C::NEG_EbR(bxInstruction_c
*i
)
519 Bit8u op1_8
= BX_READ_8BIT_REGx(i
->rm(), i
->extend8bitL());
521 BX_WRITE_8BIT_REGx(i
->rm(), i
->extend8bitL(), op1_8
);
523 SET_FLAGS_OSZAPC_RESULT_8(op1_8
, BX_INSTR_NEG8
);
526 void BX_CPU_C::INC_EbM(bxInstruction_c
*i
)
530 read_RMW_virtual_byte(i
->seg(), RMAddr(i
), &op1
);
532 write_RMW_virtual_byte(op1
);
534 SET_FLAGS_OSZAP_RESULT_8(op1
, BX_INSTR_INC8
);
537 void BX_CPU_C::INC_EbR(bxInstruction_c
*i
)
539 Bit8u op1
= BX_READ_8BIT_REGx(i
->rm(), i
->extend8bitL());
541 BX_WRITE_8BIT_REGx(i
->rm(), i
->extend8bitL(), op1
);
543 SET_FLAGS_OSZAP_RESULT_8(op1
, BX_INSTR_INC8
);
546 void BX_CPU_C::DEC_EbM(bxInstruction_c
*i
)
550 read_RMW_virtual_byte(i
->seg(), RMAddr(i
), &op1_8
);
552 write_RMW_virtual_byte(op1_8
);
554 SET_FLAGS_OSZAP_RESULT_8(op1_8
, BX_INSTR_DEC8
);
557 void BX_CPU_C::DEC_EbR(bxInstruction_c
*i
)
559 Bit8u op1_8
= BX_READ_8BIT_REGx(i
->rm(), i
->extend8bitL());
561 BX_WRITE_8BIT_REGx(i
->rm(), i
->extend8bitL(), op1_8
);
563 SET_FLAGS_OSZAP_RESULT_8(op1_8
, BX_INSTR_DEC8
);
566 void BX_CPU_C::CMPXCHG_EbGbM(bxInstruction_c
*i
)
568 #if BX_CPU_LEVEL >= 4
569 Bit8u op1_8
, op2_8
, diff_8
;
571 read_RMW_virtual_byte(i
->seg(), RMAddr(i
), &op1_8
);
573 SET_FLAGS_OSZAPC_SUB_8(AL
, op1_8
, diff_8
);
575 if (diff_8
== 0) { // if accumulator == dest
577 op2_8
= BX_READ_8BIT_REGx(i
->nnn(), i
->extend8bitL());
578 write_RMW_virtual_byte(op2_8
);
581 // accumulator <-- dest
586 BX_INFO(("CMPXCHG_EbGb: not supported for cpulevel <= 3"));
591 void BX_CPU_C::CMPXCHG_EbGbR(bxInstruction_c
*i
)
593 #if BX_CPU_LEVEL >= 4
594 Bit8u op1_8
, op2_8
, diff_8
;
596 op1_8
= BX_READ_8BIT_REGx(i
->rm(), i
->extend8bitL());
598 SET_FLAGS_OSZAPC_SUB_8(AL
, op1_8
, diff_8
);
600 if (diff_8
== 0) { // if accumulator == dest
602 op2_8
= BX_READ_8BIT_REGx(i
->nnn(), i
->extend8bitL());
603 BX_WRITE_8BIT_REGx(i
->rm(), i
->extend8bitL(), op2_8
);
606 // accumulator <-- dest
611 BX_INFO(("CMPXCHG_EbGb: not supported for cpulevel <= 3"));