亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? disasm.c

?? PE Monitor是一個小調試器和反匯編器
?? C
?? 第 1 頁 / 共 4 頁
字號:
      if (mnemosize!=0) {
        for (i=0,j=1; pd->name[j]!='\0'; j++) {
          if (pd->name[j]==':') {      // Separator between 16/32 mnemonics
            if (mnemosize==4) i=0;
            else break; }
          else if (pd->name[j]=='*') { // Substitute by 'W', 'D' or none
            if (mnemosize==4 && sizesens!=2) name[i++]='D';
            else if (mnemosize!=4 && sizesens!=0) name[i++]='W'; }
          else name[i++]=pd->name[j];
        };
        name[i]='\0'; }
      else {
        strcpy(name,pd->name);
        for (i=0; name[i]!='\0'; i++) {
          if (name[i]==',') {          // Use main mnemonic
            name[i]='\0'; break;
          };
        };
      };
      if (repprefix!=0 && tabarguments) {
        for (i=0; name[i]!='\0' && name[i]!=' '; i++)
          da->result[nresult++]=name[i];
        if (name[i]==' ') {
          da->result[nresult++]=' '; i++; };
        while (nresult<8) da->result[nresult++]=' ';
        for ( ; name[i]!='\0'; i++)
          da->result[nresult++]=name[i];
        ; }
      else
        nresult+=sprintf(da->result+nresult,"%s",name);
      if (lowercase) strlwr(da->result);
    };
    // Decode operands (explicit - encoded in command, implicit - present in
    // mmemonic or assumed - used or modified by command). Assumed operands
    // must stay after all explicit and implicit operands. Up to 3 operands
    // are allowed.
    for (operand=0; operand<3; operand++) {
      if (da->error) break;            // Error - no sense to continue
      // If command contains both source and destination, one usually must not
      // decode destination to comment because it will be overwritten on the
      // next step. Global addcomment takes care of this. Decoding routines,
      // however, may ignore this flag.
      if (operand==0 && pd->arg2!=NNN && pd->arg2<PSEUDOOP)
        addcomment=0;
      else
        addcomment=1;
      // Get type of next argument.
      if (operand==0) arg=pd->arg1;
      else if (operand==1) arg=pd->arg2;
      else arg=pd->arg3;
      if (arg==NNN) break;             // No more operands
      // Arguments with arg>=PSEUDOOP are assumed operands and are not
      // displayed in disassembled result, so they require no delimiter.
      if ((mode>=DISASM_FILE) && arg<PSEUDOOP) {
        if (operand==0) {
          da->result[nresult++]=' ';
          if (tabarguments) {
            while (nresult<8) da->result[nresult++]=' ';
          }; }
        else {
          da->result[nresult++]=',';
          if (extraspace) da->result[nresult++]=' ';
        };
      };
      // Decode, analyse and comment next operand of the command.
      switch (arg) {
        case REG:                      // Integer register in Reg field
          if (size<2) da->error=DAE_CROSS;
          else DecodeRG(cmd[1]>>3,datasize,REG);
          hasrm=1; break;
        case RCM:                      // Integer register in command byte
          DecodeRG(cmd[0],datasize,RCM); break;
        case RG4:                      // Integer 4-byte register in Reg field
          if (size<2) da->error=DAE_CROSS;
          else DecodeRG(cmd[1]>>3,4,RG4);
          hasrm=1; break;
        case RAC:                      // Accumulator (AL/AX/EAX, implicit)
          DecodeRG(REG_EAX,datasize,RAC); break;
        case RAX:                      // AX (2-byte, implicit)
          DecodeRG(REG_EAX,2,RAX); break;
        case RDX:                      // DX (16-bit implicit port address)
          DecodeRG(REG_EDX,2,RDX); break;
        case RCL:                      // Implicit CL register (for shifts)
          DecodeRG(REG_ECX,1,RCL); break;
        case RS0:                      // Top of FPU stack (ST(0))
          DecodeST(0,0); break;
        case RST:                      // FPU register (ST(i)) in command byte
          DecodeST(cmd[0],0); break;
        case RMX:                      // MMX register MMx
          if (size<2) da->error=DAE_CROSS;
          else DecodeMX(cmd[1]>>3);
          hasrm=1; break;
        case R3D:                      // 3DNow! register MMx
          if (size<2) da->error=DAE_CROSS;
          else DecodeNR(cmd[1]>>3);
          hasrm=1; break;
        case MRG:                      // Memory/register in ModRM byte
        case MRJ:                      // Memory/reg in ModRM as JUMP target
        case MR1:                      // 1-byte memory/register in ModRM byte
        case MR2:                      // 2-byte memory/register in ModRM byte
        case MR4:                      // 4-byte memory/register in ModRM byte
        case MR8:                      // 8-byte memory/MMX register in ModRM
        case MRD:                      // 8-byte memory/3DNow! register in ModRM
        case MMA:                      // Memory address in ModRM byte for LEA
        case MML:                      // Memory in ModRM byte (for LES)
        case MM6:                      // Memory in ModRm (6-byte descriptor)
        case MMB:                      // Two adjacent memory locations (BOUND)
        case MD2:                      // Memory in ModRM byte (16-bit integer)
        case MB2:                      // Memory in ModRM byte (16-bit binary)
        case MD4:                      // Memory in ModRM byte (32-bit integer)
        case MD8:                      // Memory in ModRM byte (64-bit integer)
        case MDA:                      // Memory in ModRM byte (80-bit BCD)
        case MF4:                      // Memory in ModRM byte (32-bit float)
        case MF8:                      // Memory in ModRM byte (64-bit float)
        case MFA:                      // Memory in ModRM byte (80-bit float)
        case MFE:                      // Memory in ModRM byte (FPU environment)
        case MFS:                      // Memory in ModRM byte (FPU state)
        case MFX:                      // Memory in ModRM byte (ext. FPU state)
          DecodeMR(arg); break;
        case MMS:                      // Memory in ModRM byte (as SEG:OFFS)
          DecodeMR(arg);
          da->warnings|=DAW_FARADDR; break;
        case RR4:                      // 4-byte memory/register (register only)
        case RR8:                      // 8-byte MMX register only in ModRM
        case RRD:                      // 8-byte memory/3DNow! (register only)
          if ((cmd[1] & 0xC0)!=0xC0) softerror=DAE_REGISTER;
          DecodeMR(arg); break;
        case MSO:                      // Source in string op's ([ESI])
          DecodeSO(); break;
        case MDE:                      // Destination in string op's ([EDI])
          DecodeDE(); break;
        case MXL:                      // XLAT operand ([EBX+AL])
          DecodeXL(); break;
        case IMM:                      // Immediate data (8 or 16/32)
        case IMU:                      // Immediate unsigned data (8 or 16/32)
          if ((pd->bits & SS)!=0 && (*cmd & 0x02)!=0)
            DecodeIM(1,datasize,arg);
          else
            DecodeIM(datasize,0,arg);
          break;
        case VXD:                      // VxD service (32-bit only)
          DecodeVX(); break;
        case IMX:                      // Immediate sign-extendable byte
          DecodeIM(1,datasize,arg); break;
        case C01:                      // Implicit constant 1 (for shifts)
          DecodeC1(); break;
        case IMS:                      // Immediate byte (for shifts)
        case IM1:                      // Immediate byte
          DecodeIM(1,0,arg); break;
        case IM2:                      // Immediate word (ENTER/RET)
          DecodeIM(2,0,arg);
          if ((da->immconst & 0x03)!=0) da->warnings|=DAW_STACK;
          break;
        case IMA:                      // Immediate absolute near data address
          DecodeIA(); break;
        case JOB:                      // Immediate byte offset (for jumps)
          DecodeRJ(1,srcip+2); break;
        case JOW:                      // Immediate full offset (for jumps)
          DecodeRJ(datasize,srcip+datasize+1); break;
        case JMF:                      // Immediate absolute far jump/call addr
          DecodeJF();
          da->warnings|=DAW_FARADDR; break;
        case SGM:                      // Segment register in ModRM byte
          if (size<2) da->error=DAE_CROSS;
          DecodeSG(cmd[1]>>3); hasrm=1; break;
        case SCM:                      // Segment register in command byte
          DecodeSG(cmd[0]>>3);
          if ((da->cmdtype & C_TYPEMASK)==C_POP) da->warnings|=DAW_SEGMENT;
          break;
        case CRX:                      // Control register CRx
          if ((cmd[1] & 0xC0)!=0xC0) da->error=DAE_REGISTER;
          DecodeCR(cmd[1]); break;
        case DRX:                      // Debug register DRx
          if ((cmd[1] & 0xC0)!=0xC0) da->error=DAE_REGISTER;
          DecodeDR(cmd[1]); break;
        case PRN:                      // Near return address (pseudooperand)
          break;
        case PRF:                      // Far return address (pseudooperand)
          da->warnings|=DAW_FARADDR; break;
        case PAC:                      // Accumulator (AL/AX/EAX, pseudooperand)
          DecodeRG(REG_EAX,datasize,PAC); break;
        case PAH:                      // AH (in LAHF/SAHF, pseudooperand)
        case PFL:                      // Lower byte of flags (pseudooperand)
          break;
        case PS0:                      // Top of FPU stack (pseudooperand)
          DecodeST(0,1); break;
        case PS1:                      // ST(1) (pseudooperand)
          DecodeST(1,1); break;
        case PCX:                      // CX/ECX (pseudooperand)
          DecodeRG(REG_ECX,cxsize,PCX); break;
        case PDI:                      // EDI (pseudooperand in MMX extentions)
          DecodeRG(REG_EDI,4,PDI); break;
        default:
          da->error=DAE_INTERN;        // Unknown argument type
        break;
      };
    };
    // Check whether command may possibly contain fixups.
    if (pfixup!=NULL && da->fixupsize>0)
      da->fixupoffset=pfixup-src;
    // Segment prefix and address size prefix are superfluous for command which
    // does not access memory. If this the case, mark command as rare to help
    // in analysis.
    if (da->memtype==DEC_UNKNOWN &&
      (segprefix!=SEG_UNDEF || (addrsize!=4 && pd->name[0]!='$'))
    ) {
      da->warnings|=DAW_PREFIX;
      da->cmdtype|=C_RARE; };
    // 16-bit addressing is rare in 32-bit programs. If this is the case,
    // mark command as rare to help in analysis.
    if (addrsize!=4) da->cmdtype|=C_RARE;
  };
  // Suffix of 3DNow! command is accounted best by assuming it immediate byte
  // constant.
  if (is3dnow) {
    if (immsize!=0) da->error=DAE_BADCMD;
    else immsize=1; };
  // Right or wrong, command decoded. Now dump it.
  if (da->error!=0) {                  // Hard error in command detected
    if (mode>=DISASM_FILE)
      nresult=sprintf(da->result,"???");
    if (da->error==DAE_BADCMD &&
      (*cmd==0x0F || *cmd==0xFF) && size>0
    ) {
      if (mode>=DISASM_FILE) ndump+=sprintf(da->dump+ndump,"%02X",*cmd);
      cmd++; size--; };
    if (size>0) {
      if (mode>=DISASM_FILE) ndump+=sprintf(da->dump+ndump,"%02X",*cmd);
      cmd++; size--;
    }; }
  else {                               // No hard error, dump command
    if (mode>=DISASM_FILE) {
      ndump+=sprintf(da->dump+ndump,"%02X",*cmd++);
      if (hasrm) ndump+=sprintf(da->dump+ndump,"%02X",*cmd++);
      if (hassib) ndump+=sprintf(da->dump+ndump,"%02X",*cmd++);
      if (dispsize!=0) {
        da->dump[ndump++]=' ';
        for (i=0; i<dispsize; i++) {
          ndump+=sprintf(da->dump+ndump,"%02X",*cmd++);
        };
      };
      if (immsize!=0) {
        da->dump[ndump++]=' ';
        for (i=0; i<immsize; i++) {
          ndump+=sprintf(da->dump+ndump,"%02X",*cmd++);
        };
      };
    }
    else
      cmd+=1+hasrm+hassib+dispsize+immsize;
    size-=1+hasrm+hassib+dispsize+immsize;
  };
  // Check that command is not a dangerous one.
  if (mode>=DISASM_DATA) {
    for (pdan=dangerous; pdan->mask!=0; pdan++) {
      if (((code^pdan->code) & pdan->mask)!=0)
        continue;
      if (pdan->type==C_DANGERLOCK && lockprefix==0)
        break;                         // Command harmless without LOCK prefix
      if (iswindowsnt && pdan->type==C_DANGER95)
        break;                         // Command harmless under Windows NT
      // Dangerous command!
      if (pdan->type==C_DANGER95) da->warnings|=DAW_DANGER95;
      else da->warnings|=DAW_DANGEROUS;
      break;
    };
  };
  if (da->error==0 && softerror!=0)
    da->error=softerror;               // Error, but still display command
  if (mode>=DISASM_FILE) {
    if (da->error!=DAE_NOERR) switch (da->error) {
      case DAE_CROSS:
        strcpy(da->comment,"Command crosses end of memory block"); break;
      case DAE_BADCMD:
        strcpy(da->comment,"Unknown command"); break;
      case DAE_BADSEG:
        strcpy(da->comment,"Undefined segment register"); break;
      case DAE_MEMORY:
        strcpy(da->comment,"Illegal use of register"); break;
      case DAE_REGISTER:
        strcpy(da->comment,"Memory address not allowed"); break;
      case DAE_INTERN:
        strcpy(da->comment,"Internal OLLYDBG error"); break;
      default:
        strcpy(da->comment,"Unknown error");
      break; }
    else if ((da->warnings & DAW_PRIV)!=0 && privileged==0)
      strcpy(da->comment,"Privileged command");
    else if ((da->warnings & DAW_IO)!=0 && iocommand==0)
      strcpy(da->comment,"I/O command");
    else if ((da->warnings & DAW_FARADDR)!=0 && farcalls==0) {
      if ((da->cmdtype & C_TYPEMASK)==C_JMP)
        strcpy(da->comment,"Far jump");
      else if ((da->cmdtype & C_TYPEMASK)==C_CAL)
        strcpy(da->comment,"Far call");
      else if ((da->cmdtype & C_TYPEMASK)==C_RET)
        strcpy(da->comment,"Far return");
      ; }
    else if ((da->warnings & DAW_SEGMENT)!=0 && farcalls==0)
      strcpy(da->comment,"Modification of segment register");
    else if ((da->warnings & DAW_SHIFT)!=0 && badshift==0)
      strcpy(da->comment,"Shift constant out of range 1..31");
    else if ((da->warnings & DAW_PREFIX)!=0 && extraprefix==0)
      strcpy(da->comment,"Superfluous prefix");
    else if ((da->warnings & DAW_LOCK)!=0 && lockedbus==0)
      strcpy(da->comment,"LOCK prefix");
    else if ((da->warnings & DAW_STACK)!=0 && stackalign==0)
      strcpy(da->comment,"Unaligned stack operation");
    ;
  };
  return (srcsize-size);               // Returns number of recognized bytes
};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人一区二区三区在线观看 | 日韩精品综合一本久道在线视频| 日韩高清电影一区| 亚洲制服丝袜av| 欧美国产精品一区| 高清久久久久久| 午夜精品久久久久久久99樱桃| 91精品国产一区二区三区| 欧美高清你懂得| 欧美在线小视频| 精品国产免费一区二区三区香蕉 | 久久精品亚洲国产奇米99| 欧美日韩在线直播| 成人欧美一区二区三区1314| 日本va欧美va欧美va精品| 久久精品久久久精品美女| 精品国精品自拍自在线| 欧美三级韩国三级日本三斤| 久久久午夜电影| 午夜视黄欧洲亚洲| 欧美videofree性高清杂交| 亚洲日本va在线观看| 久久午夜免费电影| 欧美精品一二三区| 色综合久久中文综合久久97| 欧美一区二视频| 成人激情黄色小说| 欧美日韩国产精选| 亚洲欧洲国产专区| 国产69精品久久99不卡| 欧美另类高清zo欧美| 久久99精品一区二区三区三区| 欧美视频在线播放| 亚洲五月六月丁香激情| 在线观看亚洲成人| 亚洲成人在线免费| 欧美综合一区二区三区| 国产女人18毛片水真多成人如厕 | 成人av免费在线| 亚洲国产成人午夜在线一区 | 成人网在线免费视频| 日本欧美一区二区三区乱码| 美女精品一区二区| 国产一区二区伦理| 欧美在线|欧美| 国产精品女同一区二区三区| 国产一区二区三区在线观看免费| 久久美女艺术照精彩视频福利播放| 亚洲黄色免费网站| 国产精品羞羞答答xxdd| 国产一区二区视频在线| 色综合av在线| 一区二区三区四区中文字幕| 5566中文字幕一区二区电影| 亚洲黄一区二区三区| 欧美性一二三区| 美女精品自拍一二三四| 国产日产欧美精品一区二区三区| jlzzjlzz亚洲日本少妇| 亚洲成人资源网| 国产日韩成人精品| 欧美日韩三级在线| 国产成人精品一区二| 一个色综合网站| 国产精品久久久久久久久果冻传媒| 9i看片成人免费高清| 奇米777欧美一区二区| 亚洲色图19p| 精品成人一区二区| 欧美精品 日韩| 91丨porny丨中文| 国产成人精品亚洲777人妖| 日韩在线一二三区| 亚洲成人综合网站| 亚洲理论在线观看| 中文字幕一区二区三区不卡 | 国产精品国产成人国产三级| 日韩免费视频一区二区| 欧美丰满少妇xxxxx高潮对白 | 亚洲欧洲日韩av| 国产三级精品三级| 中文字幕av一区二区三区免费看 | 色婷婷一区二区三区四区| 成人精品一区二区三区中文字幕| 香港成人在线视频| 一区二区三区四区在线| 亚洲男人的天堂在线观看| 中文字幕一区av| 亚洲综合另类小说| 午夜精品福利视频网站| 人人精品人人爱| 国产成人在线视频免费播放| 成a人片亚洲日本久久| 91亚洲精品乱码久久久久久蜜桃| 99久久99久久精品免费看蜜桃| 亚洲蜜臀av乱码久久精品蜜桃| 精品国产三级a在线观看| 国产精品色哟哟网站| 综合色天天鬼久久鬼色| 亚洲国产日韩精品| 国内精品在线播放| 欧美在线一区二区三区| 久久综合视频网| 一区二区国产视频| 国产一区欧美一区| 欧美日韩综合在线免费观看| 久久免费偷拍视频| 亚洲第一会所有码转帖| 国产成人精品aa毛片| 制服丝袜激情欧洲亚洲| 国产精品天干天干在线综合| 奇米在线7777在线精品| 91网站视频在线观看| 久久久高清一区二区三区| 图片区小说区区亚洲影院| 国产成a人无v码亚洲福利| 日韩欧美国产一区在线观看| 亚洲成人激情av| 91黄色免费网站| 一区二区三区.www| 色系网站成人免费| 亚洲另类一区二区| 91猫先生在线| 亚洲黄色性网站| 日本高清免费不卡视频| 亚洲色图在线视频| 91一区一区三区| 亚洲欧美二区三区| 一本久久综合亚洲鲁鲁五月天| 国产精品嫩草影院av蜜臀| kk眼镜猥琐国模调教系列一区二区| 久久婷婷一区二区三区| 国产经典欧美精品| 亚洲三级电影网站| 精品视频123区在线观看| 奇米影视一区二区三区| 精品国产一区二区三区四区四| 国产做a爰片久久毛片| 久久久精品国产免费观看同学| www.av亚洲| 亚洲成人一二三| 精品国产免费视频| 99国产精品99久久久久久| 五月婷婷色综合| 欧美国产国产综合| 欧美日韩三级一区二区| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲婷婷综合久久一本伊一区| 欧美系列一区二区| 国产精品白丝jk黑袜喷水| 一区二区三区欧美| 国产女人18水真多18精品一级做 | 久久综合网色—综合色88| 成人av网站在线观看免费| 日韩在线卡一卡二| 亚洲天堂2016| 国产精品午夜免费| 欧美videos中文字幕| 欧美欧美午夜aⅴ在线观看| 成人黄色av网站在线| 精品一区二区在线看| 亚洲成人av在线电影| 亚洲男人的天堂在线观看| 精品美女被调教视频大全网站| 欧美猛男gaygay网站| 99国产欧美久久久精品| 99久久久免费精品国产一区二区| 九九九久久久精品| 日韩电影一二三区| 丝袜美腿一区二区三区| 亚洲一区二区三区四区在线观看 | 一区二区三区国产精品| 欧美国产丝袜视频| 国产精品久久久久久久久图文区| 久久婷婷国产综合国色天香| 精品国一区二区三区| 欧美电视剧免费全集观看| 日韩一区二区三区四区| 日韩欧美成人激情| 久久综合五月天婷婷伊人| 久久精品人人爽人人爽| 中文字幕欧美日韩一区| 亚洲人快播电影网| 亚洲一区二区三区不卡国产欧美| 天天影视涩香欲综合网| 欧美aaaaaa午夜精品| 国产在线精品一区二区不卡了| 国产精品一区一区三区| 在线免费观看成人短视频| 欧美日韩成人综合在线一区二区| 91.麻豆视频| 国产喷白浆一区二区三区| 一区二区三区四区视频精品免费 | 欧美一区二区精品在线| 久久精品一区二区三区不卡 | 欧美精品vⅰdeose4hd| 国产丝袜欧美中文另类| 亚洲第一二三四区| 成人午夜视频网站| 日韩免费观看高清完整版在线观看|