diff options
author | Fred Fish <fnf@specifix.com> | 1992-06-29 23:34:38 +0000 |
---|---|---|
committer | Fred Fish <fnf@specifix.com> | 1992-06-29 23:34:38 +0000 |
commit | 51b57ded888cbdacb5ad126363f8ae6adc9541b6 (patch) | |
tree | 2e4f19add96d95001bd828328f309ca1b4a6b0a7 /gdb/i386-pinsn.c | |
parent | 22fd4704bccdd29ab742445e9a4017e457ef449f (diff) | |
download | gdb-51b57ded888cbdacb5ad126363f8ae6adc9541b6.zip gdb-51b57ded888cbdacb5ad126363f8ae6adc9541b6.tar.gz gdb-51b57ded888cbdacb5ad126363f8ae6adc9541b6.tar.bz2 |
* dbxread.c, i386-pinsn.c, i386-tdep.c, regex.c, solib.c, symmisc.c,
symtab.h, tm-i386v4.h, valprint.c, values.c: Lint.
* breakpoint.c, c-exp.y, coffread.c, command.c, environ.c, eval.c,
findvar.c, infcmd.c, infptrace.c, infrun.c, m2-exp.y, parse.c,
putenv.c, solib.c, sparc-xdep.c, symtab.c, tm-i386v.h, tm-sparc.h,
utils.c, valarith.c, valops.c, valprint.c, values.c:
Replace bcopy() use with memcpy(), which is more standard and can
take advantage of gcc's builtin functions for increased performance.
* breakpoint.c, buildsym.c, coffread.c, dbxread.c, i386-tdep.c,
ieee-float.c, infcmd.c, sparc-tdep.c, stack.c, symtab.c, symtab.h,
target.c, values.c:
Replace bzero() use with memset(), which is more standard and can
take advantage of gcc's builtin functions for increased performance.
* i386-tdep.c, main.c, valprint.c:
Replace bcmp() use with memcmp(), which is more standard and can
take advantage of gcc's builtin functions for increased performance.
Diffstat (limited to 'gdb/i386-pinsn.c')
-rw-r--r-- | gdb/i386-pinsn.c | 85 |
1 files changed, 76 insertions, 9 deletions
diff --git a/gdb/i386-pinsn.c b/gdb/i386-pinsn.c index 89261aa..c6ecaa6 100644 --- a/gdb/i386-pinsn.c +++ b/gdb/i386-pinsn.c @@ -104,6 +104,8 @@ int OP_J(), OP_SEG(); int OP_DIR(), OP_OFF(), OP_DSSI(), OP_ESDI(), OP_ONE(), OP_C(); int OP_D(), OP_T(), OP_rm(); +static void dofloat (), putop (), append_prefix (), set_op (); +static int get16 (), get32 (); #define b_mode 1 #define v_mode 2 @@ -845,6 +847,7 @@ struct dis386 grps[][8] = { static int prefixes; +static void ckprefix () { prefixes = 0; @@ -916,13 +919,14 @@ extern void fputs_filtered (); * 100 bytes is certainly enough, unless symbol printing is added later * The function returns the length of this instruction in bytes. */ + +int i386dis (pc, inbuf, stream) int pc; unsigned char *inbuf; FILE *stream; { struct dis386 *dp; - char *p; int i; int enter_instruction; char *first, *second, *third; @@ -1297,7 +1301,7 @@ char *fgrps[][8] = { }, }; - +static void dofloat () { struct dis386 *dp; @@ -1335,20 +1339,27 @@ dofloat () } /* ARGSUSED */ +int OP_ST (ignore) + int ignore; { oappend ("%st"); + return (0); } /* ARGSUSED */ +int OP_STi (ignore) + int ignore; { sprintf (scratchbuf, "%%st(%d)", rm); oappend (scratchbuf); + return (0); } /* capital letters in template are macros */ +static void putop (template) char *template; { @@ -1383,13 +1394,14 @@ putop (template) static void oappend (s) -char *s; + char *s; { strcpy (obufp, s); obufp += strlen (s); *obufp = 0; } +static void append_prefix () { if (prefixes & PREFIX_CS) @@ -1406,17 +1418,21 @@ append_prefix () oappend ("%gs:"); } +int OP_indirE (bytemode) + int bytemode; { oappend ("*"); OP_E (bytemode); + return (0); } +int OP_E (bytemode) + int bytemode; { int disp; int havesib; - int didoutput = 0; int base; int index; int scale; @@ -1449,7 +1465,7 @@ OP_E (bytemode) oappend ("<bad dis table>"); break; } - return; + return (0); } append_prefix (); @@ -1525,9 +1541,12 @@ OP_E (bytemode) } oappend (")"); } + return (0); } +int OP_G (bytemode) + int bytemode; { switch (bytemode) { @@ -1550,8 +1569,10 @@ OP_G (bytemode) oappend ("<internal disassembler error>"); break; } + return (0); } +static int get32 () { int x = 0; @@ -1563,6 +1584,7 @@ get32 () return (x); } +static int get16 () { int x = 0; @@ -1572,14 +1594,17 @@ get16 () return (x); } +static void set_op (op) -int op; + int op; { op_index[op_ad] = op_ad; op_address[op_ad] = op; } +int OP_REG (code) + int code; { char *s; @@ -1610,9 +1635,12 @@ OP_REG (code) break; } oappend (s); + return (0); } +int OP_I (bytemode) + int bytemode; { int op; @@ -1632,13 +1660,16 @@ OP_I (bytemode) break; default: oappend ("<internal disassembler error>"); - return; + return (0); } sprintf (scratchbuf, "$0x%x", op); oappend (scratchbuf); + return (0); } +int OP_sI (bytemode) + int bytemode; { int op; @@ -1658,13 +1689,16 @@ OP_sI (bytemode) break; default: oappend ("<internal disassembler error>"); - return; + return (0); } sprintf (scratchbuf, "$0x%x", op); oappend (scratchbuf); + return (0); } +int OP_J (bytemode) + int bytemode; { int disp; int mask = -1; @@ -1688,25 +1722,31 @@ OP_J (bytemode) break; default: oappend ("<internal disassembler error>"); - return; + return (0); } disp = (start_pc + codep - start_codep + disp) & mask; set_op (disp); sprintf (scratchbuf, "0x%x", disp); oappend (scratchbuf); + return (0); } /* ARGSUSED */ +int OP_SEG (dummy) + int dummy; { static char *sreg[] = { "%es","%cs","%ss","%ds","%fs","%gs","%?","%?", }; oappend (sreg[reg]); + return (0); } +int OP_DIR (size) + int size; { int seg, offset; @@ -1741,10 +1781,13 @@ OP_DIR (size) oappend ("<internal disassembler error>"); break; } + return (0); } /* ARGSUSED */ +int OP_OFF (bytemode) + int bytemode; { int off; @@ -1755,55 +1798,76 @@ OP_OFF (bytemode) sprintf (scratchbuf, "0x%x", off); oappend (scratchbuf); + return (0); } /* ARGSUSED */ +int OP_ESDI (dummy) + int dummy; { oappend ("%es:("); oappend (aflag ? "%edi" : "%di"); oappend (")"); + return (0); } /* ARGSUSED */ +int OP_DSSI (dummy) + int dummy; { oappend ("%ds:("); oappend (aflag ? "%esi" : "%si"); oappend (")"); + return (0); } /* ARGSUSED */ +int OP_ONE (dummy) + int dummy; { oappend ("1"); + return (0); } /* ARGSUSED */ +int OP_C (dummy) + int dummy; { codep++; /* skip mod/rm */ sprintf (scratchbuf, "%%cr%d", reg); oappend (scratchbuf); + return (0); } /* ARGSUSED */ +int OP_D (dummy) + int dummy; { codep++; /* skip mod/rm */ sprintf (scratchbuf, "%%db%d", reg); oappend (scratchbuf); + return (0); } /* ARGSUSED */ +int OP_T (dummy) + int dummy; { codep++; /* skip mod/rm */ sprintf (scratchbuf, "%%tr%d", reg); oappend (scratchbuf); + return (0); } +int OP_rm (bytemode) + int bytemode; { switch (bytemode) { @@ -1814,9 +1878,12 @@ OP_rm (bytemode) oappend (names16[rm]); break; } + return (0); } #define MAXLEN 20 + +int print_insn (memaddr, stream) CORE_ADDR memaddr; FILE *stream; |