# HG changeset patch # User Mike Pavone # Date 1356847888 28800 # Node ID dc5fc3adf705b2d272684150fd94b507efd5cb35 # Parent da95566514f32e2c23652c04bc3ed30e80b9b0f7 Fix encoding of movsx instruction when used with new (i.e. r9-r15) registers. This fixes the indexed addressing modes when used with a word-wide index register diff -r da95566514f3 -r dc5fc3adf705 gen_x86.c --- a/gen_x86.c Sat Dec 29 21:55:42 2012 -0800 +++ b/gen_x86.c Sat Dec 29 22:11:28 2012 -0800 @@ -962,11 +962,11 @@ *out |= REX_QUAD; } if (src >= R8) { - *out |= REX_REG_FIELD; + *out |= REX_RM_FIELD; src -= (R8 - X86_R8); } if (dst >= R8) { - *out |= REX_RM_FIELD; + *out |= REX_REG_FIELD; dst -= (R8 - X86_R8); } out++; @@ -992,11 +992,11 @@ *out |= REX_QUAD; } if (src >= R8) { - *out |= REX_REG_FIELD; + *out |= REX_RM_FIELD; src -= (R8 - X86_R8); } if (dst >= R8) { - *out |= REX_RM_FIELD; + *out |= REX_REG_FIELD; dst -= (R8 - X86_R8); } out++; diff -r da95566514f3 -r dc5fc3adf705 m68k_to_x86.c --- a/m68k_to_x86.c Sat Dec 29 21:55:42 2012 -0800 +++ b/m68k_to_x86.c Sat Dec 29 22:11:28 2012 -0800 @@ -635,9 +635,9 @@ uint8_t * get_native_address(native_map_slot * native_code_map, uint32_t address) { address &= 0xFFFFFF; - if (address > 0x400000) { + //if (address > 0x400000) { printf("get_native_address: %X\n", address); - } + //} address /= 2; uint32_t chunk = address / NATIVE_CHUNK_SIZE; if (!native_code_map[chunk].base) {