mirror of
https://github.com/holub/mame
synced 2025-06-26 14:24:12 +03:00
i386dasm: show segment register override on string insns (nw)
This commit is contained in:
parent
7941a20ddd
commit
3948617c42
@ -41,6 +41,7 @@ enum
|
||||
PARAM_REL, /* 16 or 32-bit PC-relative displacement */
|
||||
PARAM_REL8, /* 8-bit PC-relative displacement */
|
||||
PARAM_MEM_OFFS, /* 16 or 32-bit mem offset */
|
||||
PARAM_PREIMP, /* prefix with implicit register */
|
||||
PARAM_SREG, /* segment register */
|
||||
PARAM_CREG, /* control register */
|
||||
PARAM_DREG, /* debug register */
|
||||
@ -229,10 +230,10 @@ static const I386_OPCODE i386_opcode_table1[256] =
|
||||
{"imul", MODRM, PARAM_REG, PARAM_RM, PARAM_IMM },
|
||||
{"push", 0, PARAM_I8, 0, 0 },
|
||||
{"imul", MODRM, PARAM_REG, PARAM_RM, PARAM_I8 },
|
||||
{"insb", 0, 0, 0, 0 },
|
||||
{"insw\0insd\0insd",VAR_NAME, 0, 0, 0 },
|
||||
{"outsb", 0, 0, 0, 0 },
|
||||
{"outsw\0outsd\0outsd",VAR_NAME, 0, 0, 0 },
|
||||
{"insb", 0, PARAM_PREIMP, 0, 0 },
|
||||
{"insw\0insd\0insd",VAR_NAME, PARAM_PREIMP, 0, 0 },
|
||||
{"outsb", 0, PARAM_PREIMP, 0, 0 },
|
||||
{"outsw\0outsd\0outsd",VAR_NAME, PARAM_PREIMP, 0, 0 },
|
||||
// 0x70
|
||||
{"jo", 0, PARAM_REL8, 0, 0 },
|
||||
{"jno", 0, PARAM_REL8, 0, 0 },
|
||||
@ -289,18 +290,18 @@ static const I386_OPCODE i386_opcode_table1[256] =
|
||||
{"mov", 0, PARAM_EAX, PARAM_MEM_OFFS, 0 },
|
||||
{"mov", 0, PARAM_MEM_OFFS, PARAM_AL, 0 },
|
||||
{"mov", 0, PARAM_MEM_OFFS, PARAM_EAX, 0 },
|
||||
{"movsb", 0, 0, 0, 0 },
|
||||
{"movsw\0movsd\0movsq",VAR_NAME, 0, 0, 0 },
|
||||
{"cmpsb", 0, 0, 0, 0 },
|
||||
{"cmpsw\0cmpsd\0cmpsq",VAR_NAME, 0, 0, 0 },
|
||||
{"movsb", 0, PARAM_PREIMP, 0, 0 },
|
||||
{"movsw\0movsd\0movsq",VAR_NAME, PARAM_PREIMP, 0, 0 },
|
||||
{"cmpsb", 0, PARAM_PREIMP, 0, 0 },
|
||||
{"cmpsw\0cmpsd\0cmpsq",VAR_NAME, PARAM_PREIMP, 0, 0 },
|
||||
{"test", 0, PARAM_AL, PARAM_UI8, 0 },
|
||||
{"test", 0, PARAM_EAX, PARAM_IMM, 0 },
|
||||
{"stosb", 0, 0, 0, 0 },
|
||||
{"stosw\0stosd\0stosq",VAR_NAME, 0, 0, 0 },
|
||||
{"lodsb", 0, 0, 0, 0 },
|
||||
{"lodsw\0lodsd\0lodsq",VAR_NAME, 0, 0, 0 },
|
||||
{"scasb", 0, 0, 0, 0 },
|
||||
{"scasw\0scasd\0scasq",VAR_NAME, 0, 0, 0 },
|
||||
{"stosb", 0, PARAM_PREIMP, 0, 0 },
|
||||
{"stosw\0stosd\0stosq",VAR_NAME, PARAM_PREIMP, 0, 0 },
|
||||
{"lodsb", 0, PARAM_PREIMP, 0, 0 },
|
||||
{"lodsw\0lodsd\0lodsq",VAR_NAME, PARAM_PREIMP, 0, 0 },
|
||||
{"scasb", 0, PARAM_PREIMP, 0, 0 },
|
||||
{"scasw\0scasd\0scasq",VAR_NAME, PARAM_PREIMP, 0, 0 },
|
||||
// 0xb0
|
||||
{"mov", 0, PARAM_AL, PARAM_UI8, 0 },
|
||||
{"mov", 0, PARAM_CL, PARAM_UI8, 0 },
|
||||
@ -2419,6 +2420,18 @@ static char* handle_param(char* s, UINT32 param)
|
||||
}
|
||||
break;
|
||||
|
||||
case PARAM_PREIMP:
|
||||
switch(segment)
|
||||
{
|
||||
case SEG_CS: s += sprintf( s, "cs:" ); break;
|
||||
case SEG_DS: s += sprintf( s, "ds:" ); break;
|
||||
case SEG_ES: s += sprintf( s, "es:" ); break;
|
||||
case SEG_FS: s += sprintf( s, "fs:" ); break;
|
||||
case SEG_GS: s += sprintf( s, "gs:" ); break;
|
||||
case SEG_SS: s += sprintf( s, "ss:" ); break;
|
||||
}
|
||||
break;
|
||||
|
||||
case PARAM_SREG:
|
||||
s += sprintf( s, "%s", i386_sreg[MODRM_REG1] );
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user