Previous 199869 Revisions Next

r23690 Friday 14th June, 2013 at 02:29:41 UTC by Carl
i386dasm: show segment register override on string insns (nw)
[src/emu/cpu/i386]i386dasm.c

trunk/src/emu/cpu/i386/i386dasm.c
r23689r23690
4141   PARAM_REL,          /* 16 or 32-bit PC-relative displacement */
4242   PARAM_REL8,         /* 8-bit PC-relative displacement */
4343   PARAM_MEM_OFFS,     /* 16 or 32-bit mem offset */
44   PARAM_PREIMP,       /* prefix with implicit register */
4445   PARAM_SREG,         /* segment register */
4546   PARAM_CREG,         /* control register */
4647   PARAM_DREG,         /* debug register */
r23689r23690
229230   {"imul",            MODRM,          PARAM_REG,          PARAM_RM,           PARAM_IMM       },
230231   {"push",            0,              PARAM_I8,           0,                  0               },
231232   {"imul",            MODRM,          PARAM_REG,          PARAM_RM,           PARAM_I8        },
232   {"insb",            0,              0,                  0,                  0               },
233   {"insw\0insd\0insd",VAR_NAME,       0,                  0,                  0               },
234   {"outsb",           0,              0,                  0,                  0               },
235   {"outsw\0outsd\0outsd",VAR_NAME,    0,                  0,                  0               },
233   {"insb",            0,              PARAM_PREIMP,       0,                  0               },
234   {"insw\0insd\0insd",VAR_NAME,       PARAM_PREIMP,       0,                  0               },
235   {"outsb",           0,              PARAM_PREIMP,       0,                  0               },
236   {"outsw\0outsd\0outsd",VAR_NAME,    PARAM_PREIMP,       0,                  0               },
236237   // 0x70
237238   {"jo",              0,              PARAM_REL8,         0,                  0               },
238239   {"jno",             0,              PARAM_REL8,         0,                  0               },
r23689r23690
289290   {"mov",             0,              PARAM_EAX,          PARAM_MEM_OFFS,     0               },
290291   {"mov",             0,              PARAM_MEM_OFFS,     PARAM_AL,           0               },
291292   {"mov",             0,              PARAM_MEM_OFFS,     PARAM_EAX,          0               },
292   {"movsb",           0,              0,                  0,                  0               },
293   {"movsw\0movsd\0movsq",VAR_NAME,    0,                  0,                  0               },
294   {"cmpsb",           0,              0,                  0,                  0               },
295   {"cmpsw\0cmpsd\0cmpsq",VAR_NAME,    0,                  0,                  0               },
293   {"movsb",           0,              PARAM_PREIMP,       0,                  0               },
294   {"movsw\0movsd\0movsq",VAR_NAME,    PARAM_PREIMP,       0,                  0               },
295   {"cmpsb",           0,              PARAM_PREIMP,       0,                  0               },
296   {"cmpsw\0cmpsd\0cmpsq",VAR_NAME,    PARAM_PREIMP,       0,                  0               },
296297   {"test",            0,              PARAM_AL,           PARAM_UI8,          0               },
297298   {"test",            0,              PARAM_EAX,          PARAM_IMM,          0               },
298   {"stosb",           0,              0,                  0,                  0               },
299   {"stosw\0stosd\0stosq",VAR_NAME,    0,                  0,                  0               },
300   {"lodsb",           0,              0,                  0,                  0               },
301   {"lodsw\0lodsd\0lodsq",VAR_NAME,    0,                  0,                  0               },
302   {"scasb",           0,              0,                  0,                  0               },
303   {"scasw\0scasd\0scasq",VAR_NAME,    0,                  0,                  0               },
299   {"stosb",           0,              PARAM_PREIMP,       0,                  0               },
300   {"stosw\0stosd\0stosq",VAR_NAME,    PARAM_PREIMP,       0,                  0               },
301   {"lodsb",           0,              PARAM_PREIMP,       0,                  0               },
302   {"lodsw\0lodsd\0lodsq",VAR_NAME,    PARAM_PREIMP,       0,                  0               },
303   {"scasb",           0,              PARAM_PREIMP,       0,                  0               },
304   {"scasw\0scasd\0scasq",VAR_NAME,    PARAM_PREIMP,       0,                  0               },
304305   // 0xb0
305306   {"mov",             0,              PARAM_AL,           PARAM_UI8,          0               },
306307   {"mov",             0,              PARAM_CL,           PARAM_UI8,          0               },
r23689r23690
24192420         }
24202421         break;
24212422
2423      case PARAM_PREIMP:
2424         switch(segment)
2425         {
2426            case SEG_CS: s += sprintf( s, "cs:" ); break;
2427            case SEG_DS: s += sprintf( s, "ds:" ); break;
2428            case SEG_ES: s += sprintf( s, "es:" ); break;
2429            case SEG_FS: s += sprintf( s, "fs:" ); break;
2430            case SEG_GS: s += sprintf( s, "gs:" ); break;
2431            case SEG_SS: s += sprintf( s, "ss:" ); break;
2432         }
2433         break;
2434
24222435      case PARAM_SREG:
24232436         s += sprintf( s, "%s", i386_sreg[MODRM_REG1] );
24242437         break;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team