Guest User

Untitled

a guest
Oct 22nd, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.23 KB | None | 0 0
  1. static void Memadr(int defseg,const char *descr,long offset,int dsize) {
  2.   int i,n,seg;
  3.   char *pr;
  4.   char s[TEXTLEN];
  5.   if (mode<DISASM_FILE || descr==NULL)
  6.     return;                            // No need or possibility to decode
  7.   pr=da->result+nresult; n=0;
  8.   if (segprefix!=SEG_UNDEF) seg=segprefix; else seg=defseg;
  9.   if (ideal!=0) pr[n++]='[';
  10.   // In some cases Disassembler may omit size of memory operand. Namely, flag
  11.   // showmemsize must be 0, type bit C_EXPL must be 0 (this bit namely means
  12.   // that explicit operand size is necessary) and type of command must not be
  13.   // C_MMX or C_NOW (because bit C_EXPL has in these cases different meaning).
  14.   // Otherwise, exact size must be supplied.
  15.   if (showmemsize!=0 || (da->cmdtype & C_TYPEMASK)==C_MMX ||
  16.     (da->cmdtype & C_TYPEMASK)==C_NOW || (da->cmdtype & C_EXPL)!=0
  17.   ) {
  18.     if (dsize<sizeof(sizename)/sizeof(sizename[0]))
  19.       n+=sprintf(pr+n,"%s %s",sizename[dsize],(ideal==0?"PTR ":""));
  20.     else
  21.       n+=sprintf(pr+n,"(%i-BYTE) %s",dsize,(ideal==0?"PTR ":""));
  22.     ;
  23.   };
  24.   if ((putdefseg!=0 || seg!=defseg) && seg!=SEG_UNDEF)
  25.     n+=sprintf(pr+n,"%s:",segname[seg]);
  26.   if (ideal==0) pr[n++]='[';
  27.   n+=sprintf(pr+n,"%s",descr);
  28.   if (lowercase) strlwr(pr);
Add Comment
Please, Sign In to add comment