From 613962e35399e0b87baf8ac031b74aecd09f24f1 Mon Sep 17 00:00:00 2001 From: Michael Matz Date: Wed, 11 May 2016 18:56:19 +0200 Subject: [PATCH] x86-64 asm: Remove useless jmp opcode Also remove the hacky mod/rm byte emission during disp/imm writing. --- i386-asm.c | 7 ------- tests/asmtest.S | 1 + x86_64-asm.h | 1 - 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/i386-asm.c b/i386-asm.c index 69514c0..2cbc858 100644 --- a/i386-asm.c +++ b/i386-asm.c @@ -1041,13 +1041,6 @@ ST_FUNC void asm_opcode(TCCState *s1, int opcode) /* jmp $r */ g(0xE0 + ops[i].reg); } -#endif -#ifdef TCC_TARGET_X86_64 - } else if (v & (OP_REG32 | OP_REG64)) { - if (pa->instr_type & (OPC_JMP | OPC_SHORTJMP)) { - /* jmp $r */ - g(0xE0 + ops[i].reg); - } #endif } } diff --git a/tests/asmtest.S b/tests/asmtest.S index 2a9f403..985d824 100644 --- a/tests/asmtest.S +++ b/tests/asmtest.S @@ -236,6 +236,7 @@ lcall *(%rax) #endif jmp 0x1000 +jmp *(%edi) #ifdef __i386__ jmp *%eax #else diff --git a/x86_64-asm.h b/x86_64-asm.h index 14e5969..4da5c0b 100644 --- a/x86_64-asm.h +++ b/x86_64-asm.h @@ -200,7 +200,6 @@ ALT(DEF_ASM_OP2(shrdw, 0x0fad, 0, OPC_MODRM | OPC_WLQ, OPT_REGW, OPT_EA | OPT_RE ALT(DEF_ASM_OP1(call, 0xff, 2, OPC_MODRM, OPT_INDIR)) ALT(DEF_ASM_OP1(call, 0xe8, 0, OPC_JMP, OPT_ADDR)) ALT(DEF_ASM_OP1(jmp, 0xff, 4, OPC_MODRM, OPT_INDIR)) -ALT(DEF_ASM_OP1(jmp, 0xff, 0, OPC_JMP | OPC_WL, OPT_REGW)) ALT(DEF_ASM_OP1(jmp, 0xeb, 0, OPC_SHORTJMP | OPC_JMP, OPT_ADDR)) ALT(DEF_ASM_OP1(lcall, 0xff, 3, OPC_MODRM, OPT_EA))