Mercurial > repos > blastem
comparison gen_x86.c @ 194:811163790e6c
Implement ABCD an SBCD. Fix BTEST with register source.
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 16 Jan 2013 22:40:56 -0800 |
parents | 6b593ea0ed90 |
children | c82f65a87a53 |
comparison
equal
deleted
inserted
replaced
193:c66e4636f991 | 194:811163790e6c |
---|---|
126 } | 126 } |
127 if (size == SZ_B && dst >= RSP && dst <= RDI) { | 127 if (size == SZ_B && dst >= RSP && dst <= RDI) { |
128 opcode |= BIT_DIR; | 128 opcode |= BIT_DIR; |
129 tmp = dst; | 129 tmp = dst; |
130 dst = src; | 130 dst = src; |
131 src = dst; | 131 src = tmp; |
132 } | 132 } |
133 if (size == SZ_Q || src >= R8 || dst >= R8 || (size == SZ_B && src >= RSP && src <= RDI)) { | 133 if (size == SZ_Q || src >= R8 || dst >= R8 || (size == SZ_B && src >= RSP && src <= RDI)) { |
134 *out = PRE_REX; | 134 *out = PRE_REX; |
135 if (size == SZ_Q) { | 135 if (size == SZ_Q) { |
136 *out |= REX_QUAD; | 136 *out |= REX_QUAD; |
1376 return bit_irdisp8(out, OP_EX_BT, val, dst_base, dst_disp, size); | 1376 return bit_irdisp8(out, OP_EX_BT, val, dst_base, dst_disp, size); |
1377 } | 1377 } |
1378 | 1378 |
1379 uint8_t * bts_rr(uint8_t * out, uint8_t src, uint8_t dst, uint8_t size) | 1379 uint8_t * bts_rr(uint8_t * out, uint8_t src, uint8_t dst, uint8_t size) |
1380 { | 1380 { |
1381 return bit_rr(out, OP2_BT, src, dst, size); | 1381 return bit_rr(out, OP2_BTS, src, dst, size); |
1382 } | 1382 } |
1383 | 1383 |
1384 uint8_t * bts_rrdisp8(uint8_t * out, uint8_t src, uint8_t dst_base, int8_t dst_disp, uint8_t size) | 1384 uint8_t * bts_rrdisp8(uint8_t * out, uint8_t src, uint8_t dst_base, int8_t dst_disp, uint8_t size) |
1385 { | 1385 { |
1386 return bit_rrdisp8(out, OP2_BT, src, dst_base, dst_disp, size); | 1386 return bit_rrdisp8(out, OP2_BTS, src, dst_base, dst_disp, size); |
1387 } | 1387 } |
1388 | 1388 |
1389 uint8_t * bts_ir(uint8_t * out, uint8_t val, uint8_t dst, uint8_t size) | 1389 uint8_t * bts_ir(uint8_t * out, uint8_t val, uint8_t dst, uint8_t size) |
1390 { | 1390 { |
1391 return bit_ir(out, OP_EX_BTS, val, dst, size); | 1391 return bit_ir(out, OP_EX_BTS, val, dst, size); |