same optimization in disasam

This commit is contained in:
Stanislav Shwartsman 2008-06-11 21:05:38 +00:00
parent 8ea32b4279
commit 7d2df1b104

View File

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
// $Id: dis_decode.cc,v 1.46 2008-04-27 19:47:12 sshwarts Exp $ // $Id: dis_decode.cc,v 1.47 2008-06-11 21:05:38 sshwarts Exp $
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
#include <stdio.h> #include <stdio.h>
@ -106,32 +106,16 @@ x86_insn disassembler::decode(bx_bool is_32, bx_bool is_64, bx_address base, bx_
continue; continue;
case 0x26: // ES: case 0x26: // ES:
if (! is_64) insn.seg_override = ES_REG;
rex_prefix = 0;
continue;
case 0x2e: // CS: case 0x2e: // CS:
if (! is_64) insn.seg_override = CS_REG;
rex_prefix = 0;
continue;
case 0x36: // SS: case 0x36: // SS:
if (! is_64) insn.seg_override = SS_REG;
rex_prefix = 0;
continue;
case 0x3e: // DS: case 0x3e: // DS:
if (! is_64) insn.seg_override = DS_REG; if (! is_64) insn.seg_override = (insn.b1 >> 3) & 3;
rex_prefix = 0; rex_prefix = 0;
continue; continue;
case 0x64: // FS: case 0x64: // FS:
insn.seg_override = FS_REG;
rex_prefix = 0;
continue;
case 0x65: // GS: case 0x65: // GS:
insn.seg_override = GS_REG; insn.seg_override = insn.b1 & 0xf;
rex_prefix = 0; rex_prefix = 0;
continue; continue;
@ -152,11 +136,11 @@ x86_insn disassembler::decode(bx_bool is_32, bx_bool is_64, bx_address base, bx_
continue; continue;
case 0xf2: // repne case 0xf2: // repne
sse_prefix = SSE_PREFIX_F2; case 0xf3: // rep
sse_prefix = insn.b1 & 0xf;
rex_prefix = 0; rex_prefix = 0;
continue; continue;
case 0xf3: // rep
sse_prefix = SSE_PREFIX_F3; sse_prefix = SSE_PREFIX_F3;
rex_prefix = 0; rex_prefix = 0;
continue; continue;