Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static void Memadr(int defseg,const char *descr,long offset,int dsize) {
- int i,n,seg;
- char *pr;
- char s[TEXTLEN];
- if (mode<DISASM_FILE || descr==NULL)
- return; // No need or possibility to decode
- pr=da->result+nresult; n=0;
- if (segprefix!=SEG_UNDEF) seg=segprefix; else seg=defseg;
- if (ideal!=0) pr[n++]='[';
- // In some cases Disassembler may omit size of memory operand. Namely, flag
- // showmemsize must be 0, type bit C_EXPL must be 0 (this bit namely means
- // that explicit operand size is necessary) and type of command must not be
- // C_MMX or C_NOW (because bit C_EXPL has in these cases different meaning).
- // Otherwise, exact size must be supplied.
- if (showmemsize!=0 || (da->cmdtype & C_TYPEMASK)==C_MMX ||
- (da->cmdtype & C_TYPEMASK)==C_NOW || (da->cmdtype & C_EXPL)!=0
- ) {
- if (dsize<sizeof(sizename)/sizeof(sizename[0]))
- n+=sprintf(pr+n,"%s %s",sizename[dsize],(ideal==0?"PTR ":""));
- else
- n+=sprintf(pr+n,"(%i-BYTE) %s",dsize,(ideal==0?"PTR ":""));
- ;
- };
- if ((putdefseg!=0 || seg!=defseg) && seg!=SEG_UNDEF)
- n+=sprintf(pr+n,"%s:",segname[seg]);
- if (ideal==0) pr[n++]='[';
- n+=sprintf(pr+n,"%s",descr);
- if (lowercase) strlwr(pr);
Add Comment
Please, Sign In to add comment