Mercurial > repos > blastem
diff gen_x86.c @ 682:7ed1dbb48f61
Merge
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 04 Jan 2015 23:35:55 -0800 |
parents | d0943769353b f9431cb3a39c |
children | 74d636e85bf8 |
line wrap: on
line diff
--- a/gen_x86.c Sun Jan 04 23:21:56 2015 -0800 +++ b/gen_x86.c Sun Jan 04 23:35:55 2015 -0800 @@ -271,7 +271,7 @@ *(out++) = opcode; } if (disp < 128 && disp >= -128) { - *(out++) = MODE_REG_DISPLACE8 | base | (reg << 3); + *(out++) = MODE_REG_DISPLACE8 | base | (reg << 3); } else { *(out++) = MODE_REG_DISPLACE32 | base | (reg << 3); } @@ -281,9 +281,9 @@ } *(out++) = disp; if (disp >= 128 || disp < -128) { - *(out++) = disp >> 8; - *(out++) = disp >> 16; - *(out++) = disp >> 24; + *(out++) = disp >> 8; + *(out++) = disp >> 16; + *(out++) = disp >> 24; } code->cur = out; } @@ -330,11 +330,11 @@ *(out++) = MODE_REG_DISPLACE8 | base | (reg << 3); *(out++) = 0; } else { - *(out++) = MODE_REG_INDIRECT | base | (reg << 3); - if (base == RSP) { - //add SIB byte, with no index and RSP as base - *(out++) = (RSP << 3) | RSP; - } + *(out++) = MODE_REG_INDIRECT | base | (reg << 3); + if (base == RSP) { + //add SIB byte, with no index and RSP as base + *(out++) = (RSP << 3) | RSP; + } } code->cur = out; } @@ -383,7 +383,7 @@ if (scale == 4) { scale = 2; } else if(scale == 8) { - scale = 3; + scale = 3; } else { scale--; } @@ -450,8 +450,8 @@ } *(out++) = opcode; if (disp < 128 && disp >= -128) { - *(out++) = MODE_REG_DISPLACE8 | dst | (opex << 3); - *(out++) = disp; + *(out++) = MODE_REG_DISPLACE8 | dst | (opex << 3); + *(out++) = disp; } else { *(out++) = MODE_REG_DISPLACE32 | dst | (opex << 3); *(out++) = disp; @@ -546,17 +546,17 @@ } *(out++) = opcode; if (disp < 128 && disp >= -128) { - *(out++) = MODE_REG_DISPLACE8 | dst | (op_ex << 3); - *(out++) = disp; + *(out++) = MODE_REG_DISPLACE8 | dst | (op_ex << 3); + *(out++) = disp; } else { - *(out++) = MODE_REG_DISPLACE32 | dst | (op_ex << 3); - *(out++) = disp; - disp >>= 8; - *(out++) = disp; - disp >>= 8; - *(out++) = disp; - disp >>= 8; - *(out++) = disp; + *(out++) = MODE_REG_DISPLACE32 | dst | (op_ex << 3); + *(out++) = disp; + disp >>= 8; + *(out++) = disp; + disp >>= 8; + *(out++) = disp; + disp >>= 8; + *(out++) = disp; } *(out++) = val; if (size != SZ_B && !sign_extend) { @@ -626,8 +626,8 @@ *(out++) = (val == 1 ? OP_SHIFTROT_1: OP_SHIFTROT_IR) | (size == SZ_B ? 0 : BIT_SIZE); if (disp < 128 && disp >= -128) { - *(out++) = MODE_REG_DISPLACE8 | dst | (op_ex << 3); - *(out++) = disp; + *(out++) = MODE_REG_DISPLACE8 | dst | (op_ex << 3); + *(out++) = disp; } else { *(out++) = MODE_REG_DISPLACE32 | dst | (op_ex << 3); *(out++) = disp; @@ -692,15 +692,15 @@ *(out++) = OP_SHIFTROT_CL | (size == SZ_B ? 0 : BIT_SIZE); if (disp < 128 && disp >= -128) { - *(out++) = MODE_REG_DISPLACE8 | dst | (op_ex << 3); - *(out++) = disp; + *(out++) = MODE_REG_DISPLACE8 | dst | (op_ex << 3); + *(out++) = disp; } else { *(out++) = MODE_REG_DISPLACE32 | dst | (op_ex << 3); *(out++) = disp; *(out++) = disp >> 8; *(out++) = disp >> 16; *(out++) = disp >> 24; - } +} code->cur = out; } @@ -1253,8 +1253,8 @@ } *(out++) = OP_MOV_IEA | (size == SZ_B ? 0 : BIT_SIZE); if (disp < 128 && disp >= -128) { - *(out++) = MODE_REG_DISPLACE8 | dst; - *(out++) = disp; + *(out++) = MODE_REG_DISPLACE8 | dst; + *(out++) = disp; } else { *(out++) = MODE_REG_DISPLACE32 | dst; *(out++) = disp; @@ -1376,8 +1376,8 @@ *(out++) = OP2_MOVSX | (src_size == SZ_B ? 0 : BIT_SIZE); } if (disp < 128 && disp >= -128) { - *(out++) = MODE_REG_DISPLACE8 | src | (dst << 3); - *(out++) = disp; + *(out++) = MODE_REG_DISPLACE8 | src | (dst << 3); + *(out++) = disp; } else { *(out++) = MODE_REG_DISPLACE32 | src | (dst << 3); *(out++) = disp; @@ -1441,8 +1441,8 @@ *(out++) = PRE_2BYTE; *(out++) = OP2_MOVZX | (src_size == SZ_B ? 0 : BIT_SIZE); if (disp < 128 && disp >= -128) { - *(out++) = MODE_REG_DISPLACE8 | src | (dst << 3); - *(out++) = disp; + *(out++) = MODE_REG_DISPLACE8 | src | (dst << 3); + *(out++) = disp; } else { *(out++) = MODE_REG_DISPLACE32 | src | (dst << 3); *(out++) = disp; @@ -1601,8 +1601,8 @@ *(out++) = PRE_2BYTE; *(out++) = OP2_SETCC | cc; if (disp < 128 && disp >= -128) { - *(out++) = MODE_REG_DISPLACE8 | dst; - *(out++) = disp; + *(out++) = MODE_REG_DISPLACE8 | dst; + *(out++) = disp; } else { *(out++) = MODE_REG_DISPLACE32 | dst; *(out++) = disp; @@ -1666,14 +1666,14 @@ *(out++) = PRE_2BYTE; *(out++) = op2; if (dst_disp < 128 && dst_disp >= -128) { - *(out++) = MODE_REG_DISPLACE8 | dst_base | (src << 3); - *(out++) = dst_disp; + *(out++) = MODE_REG_DISPLACE8 | dst_base | (src << 3); + *(out++) = dst_disp; } else { - *(out++) = MODE_REG_DISPLACE32 | dst_base | (src << 3); - *(out++) = dst_disp; - *(out++) = dst_disp >> 8; - *(out++) = dst_disp >> 16; - *(out++) = dst_disp >> 24; + *(out++) = MODE_REG_DISPLACE32 | dst_base | (src << 3); + *(out++) = dst_disp; + *(out++) = dst_disp >> 8; + *(out++) = dst_disp >> 16; + *(out++) = dst_disp >> 24; } code->cur = out; } @@ -1724,8 +1724,8 @@ *(out++) = PRE_2BYTE; *(out++) = OP2_BTX_I; if (dst_disp < 128 && dst_disp >= -128) { - *(out++) = MODE_REG_DISPLACE8 | dst_base | (op_ex << 3); - *(out++) = dst_disp; + *(out++) = MODE_REG_DISPLACE8 | dst_base | (op_ex << 3); + *(out++) = dst_disp; } else { *(out++) = MODE_REG_DISPLACE32 | dst_base | (op_ex << 3); *(out++) = dst_disp;