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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? args-x86.c

?? It s a Linux disassemble, can set break point, disassemble ELF file.
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
  return (1);} /* x86constructArguments() *//*x86operandRegister()  Handle a register operand (r8/r16/r32/mm/xmm)Inputs: ptr     - opcode pointer        opnum   - number of current operand (first, second, etc)        errstr  - where to store errorsReturn: pointer to string containing matching register upon success        NULL upon errorSide effects: Upon failure, an error message goes in errstr*/static char *x86operandRegister(struct x86matchInfo *ptr, int opnum, char *errstr){  struct x86OpCode *opPtr;  unsigned int operand;  int regindex;  opPtr = ptr->opPtr;  operand = opPtr->operands[opnum];  /*   * First check if it is a specific register (R_AL etc). This   * occurs in instructions like ADC where a specific register   * is encoded into the instruction.   */  if ((operand & REGISTER) && (opPtr->opinfo[opnum] != NOOPARG))  {    if (opPtr->opinfo[opnum] < 0)    {      sprintf(errstr,              "x86operandRegister: bad operand info\n");      return (0);    }    if (opPtr->opinfo[opnum] == MODFIELD_RM)      return (x86getModRegister(ptr->msinfo.rm, operand));    else      return (x86RegistersDASM[opPtr->opinfo[opnum]].name);  }  if (opPtr->digit == REGRM)  {    /*     * This instruction is defined with a /r as well as a     * register operand. The register for this operand     * is determined by the REG field of the ModR/M byte.     */    assert(ptr->msinfo.modptr != 0);    return (x86getModRegister(ptr->msinfo.reg, operand));  } /* if (opPtr->digit == REGRM) */  else if ((opPtr->digit >= 0) && (opPtr->digit <= 7))  {    if ((operand & REG_MMX) || (operand & REG_XMM))    {      /*       * We got a mm or xmm operand       */      return (x86getModRegister(ptr->msinfo.rm, operand));    }    else    {      /*       * We got an r8/r16/r32 operand. We should never get here: /digit       * opcodes always have rm8/rm16/rm32/mm/xmm operands, never r8/r16/r32       * operands.       */      sprintf(errstr,              "x86operandRegister: error: we got a /digit with a register operand");      return (0);    }  }  else if (opPtr->digit == REGCODE)  {    /*     * This instruction is defined with a +rb/+rw/+rd code     * indicating something was added to the last byte of     * the opcode which specifies a register. This added     * value is stored in ptr->regcode (from x86findOpCode)     */    assert(ptr->regcode >= 0);    assert(ptr->regcode <= 7);    regindex = (-1);    if (operand & BITS8)      regindex = x86RegisterCodes8[ptr->regcode];    else if (operand & BITS16)      regindex = x86RegisterCodes16[ptr->regcode];    else if (operand & BITS32)      regindex = x86RegisterCodes32[ptr->regcode];    if (regindex < 0)    {      sprintf(errstr,              "x86operandRegister: invalid register operand for instruction %s (%ld)",              x86InstructionNames[opPtr->name],              opPtr->operands[opnum]);      return (0);    }    return (x86RegistersDASM[regindex].name);  } /* if (opPtr->digit == REGCODE) */  return (0);} /* x86operandRegister() *//*x86operandEffectiveAddress()  This routine handles the following operands (which all requireeffective address computations from ModR/M bytes):rm8rm16rm32m8m16m32m64m128xmm?/m*Inputs: ws      - disasm workspace        ptr     - opcode pointer        operand - operand flags        str     - where to store register or addressReturn: -1 upon failure: error message goes in 'str'        1 upon success*/static intx86operandEffectiveAddress(struct disasmWorkspace *ws,                           struct x86matchInfo *ptr,                           unsigned int operand,                           char *str){  char *origstr;  char *tmpstr;  assert(ptr->msinfo.modptr);  origstr = str;  if (ptr->msinfo.mod == 3)  {    /*     * Special case: ModR/M bytes C0 -> FF are ambiguous. That is,     * their effective addresses can be one of five registers -     * we can determine the correct register by looking at the     * operand's size attribute. Also, we don't have to worry about     * SIB bytes since any ModR/M bytes with a "mod" of 3 have     * no SIBs.     */    tmpstr = x86getModRegister(ptr->msinfo.rm, operand);    if (!tmpstr)    {      sprintf(origstr,              "x86operandEffectiveAddress: x86getModRegister failed");      return (-1);    }    str += sprintf(str, "%s", tmpstr);    return (1);  }  /*   * The r/m operand specifies a memory location, not a register:   * we need to calculate the effective address.   */  if (operand & BITS8)    str += sprintf(str, "byte ");  else if (operand & BITS16)    str += sprintf(str, "word ");  else if (operand & BITS32)    str += sprintf(str, "dword ");  else if (operand & BITS64)    str += sprintf(str, "qword ");  else if (operand & BITS80)    str += sprintf(str, "tword "); /* FPU */  /*   * It is a memory location: use []'s :)   */  *str++ = '[';  if (ws->prefixFlags & PX_SEGOVER)  {    assert(ws->segmentOverride != (-1));    str += sprintf(str, "%s:", x86RegistersDASM[ws->segmentOverride].name);  }  if (ptr->msinfo.modptr->flags & MF_SIB)  {    /*     * Write the base register to str: there is one case     * where there is no base register (base = 5, mod = 0) -     * see table 2-3 of IAS.     */    if (!((ptr->msinfo.base == 5) && (ptr->msinfo.mod == 0)))    {      tmpstr = x86getSibBaseRegister(ptr->msinfo.base);      str += sprintf(str, "%s", tmpstr);      if (ptr->msinfo.sibptr->index != M_NONE)        *str++ = '+';    }    /*     * Get the index address     */    if (ptr->msinfo.sibptr->index != M_NONE)    {      tmpstr = x86getModAddrStr(ptr->msinfo.sibptr->index);      if (!tmpstr)      {        sprintf(origstr,                "x86operandEffectiveAddress: x86getModAddrStr failed");        return (-1);      }      str += sprintf(str, "%s", tmpstr);      if (ptr->msinfo.scale > 0)        str += sprintf(str, "*%d", 1 << ptr->msinfo.scale);    }  } /* if (ptr->msinfo.modptr->flags & MF_SIB) */  else  {    tmpstr = x86getModAddrStr(ptr->msinfo.modptr->index);    if (!tmpstr)    {      sprintf(origstr,              "x86operandEffectiveAddress: x86getModAddrStr failed");      return (-1);    }    str += sprintf(str, "%s", tmpstr);  }  /*   * Add any displacements   */  if (ptr->msinfo.disp)    str += sprintf(str, "+0x%x", ptr->msinfo.disp);  *str++ = ']';  *str = '\0';  return (1);} /* x86operandEffectiveAddress() *//*x86operandSegOff()  This routine handles the operands ptr16:16 or ptr16:32,which are of the form segment:offset, where segment is the number of bitson the left of the colon, and offset is the number of bits on the right.Inputs: data    - opcode data stream        operand - flags for this operand        str     - argument string (or error string)Return: 1 upon success (argument goes in str)        0 upon failure (error goes in str)*/static intx86operandSegOff(unsigned char **data, unsigned int operand, char *str){  int err;  unsigned long segment,                offset;  err = 0;  if (operand & OFF16)    offset = x86getImmediate(data, BITS16, &err);  else if (operand & OFF32)    offset = x86getImmediate(data, BITS32, &err);  else  {    sprintf(str,            "x86operandSegOff: offset operand is neither 16 nor 32 bits");    return (0);  }  if (err)  {    sprintf(str,            "x86operandSegOff: x86getImmediate failed");    return (0);  }  segment = x86getImmediate(data, BITS16, &err);  if (err)  {    sprintf(str,            "x86operandSegOff: x86getImmediate failed");    return (0);  }  sprintf(str, "0x%lx:0x%lx", segment, offset);  return (1);} /* x86operandSegOff() *//*x86operandMemoryOffset()  This routine is called when we have a moffs8/16/32 operand.The 8/16/32 refer to the size of the data at the offset. The offsetis a 16 or 32 bit value (depending on the size attributes of theinstruction) which follows the opcode.Inputs: ws     - disasm workspace        data   - opcode data stream        str    - where to store resultReturn: 1 upon success        0 upon failure*/static intx86operandMemoryOffset(struct disasmWorkspace *ws, unsigned char **data,                       char *str){  unsigned long value;  int err;  unsigned int sizeattr;  err = 0;  sizeattr = x86addrSizeAttribute(ws);  if (sizeattr & DA_16BITMODE)    value = x86getImmediate(data, BITS16, &err);  else    value = x86getImmediate(data, BITS32, &err);  if (err)  {    sprintf(str,            "x86operandMemoryOffset: x86getImmediate failed");    return (0);  }  if (ws->prefixFlags & PX_SEGOVER)  {    assert(ws->segmentOverride != (-1));    str += sprintf(str, "%s:", x86RegistersDASM[ws->segmentOverride].name);  }  sprintf(str, "[+0x%lx]", value);  return (1);} /* x86operandMemoryOffset() *//*x86getImmediate()  Called when an operand has the IMMEDIATE bit set - obtain theimmediate byte value from 'data'Inputs: data  - actual opcode data stream where immediate byte(s) are stored        flags - bitmask variable containing size of immediate                value        err   - set to 1 if error occursReturn: value of the immediate byte(s)*/static unsigned longx86getImmediate(unsigned char **data, unsigned int flags, int *err){  unsigned long ret;  int length;  ret = 0;  length = 0;  /*   * Thank god for little endian :-)   */  if (flags & BITS8)  {    ret = (unsigned char) (*data)[length++];    ++(*data);  }  else if (flags & BITS16)  {    ret = (unsigned char) (*data)[length++];    ret += (unsigned char) (*data)[length++] * 256;    (*data) += 2;  }  else if (flags & BITS32)  {    ret = (unsigned char) (*data)[length++];    ret += (unsigned char) (*data)[length++] * 256;    ret += (unsigned char) (*data)[length++] * 65536;    ret += (unsigned char) (*data)[length++] * 16777216;    (*data) += 4;  }  else    *err = 1;  return (ret);} /* x86getImmediate() */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成a人v欧美综合天堂| 欧美bbbbb| 精品精品国产高清一毛片一天堂| 99热这里都是精品| 美国十次了思思久久精品导航| 亚洲欧美电影院| 国产亚洲一区二区三区四区 | 国产夫妻精品视频| 性感美女久久精品| 亚洲日本在线天堂| 久久久久国产一区二区三区四区 | 精品一区二区三区在线播放| 一区二区在线观看不卡| 国产日韩精品一区二区三区| 欧美成人一区二区三区| 欧美精品久久久久久久多人混战| 99久久精品国产一区二区三区| 国产一区二区三区香蕉| 麻豆国产欧美日韩综合精品二区 | 一级女性全黄久久生活片免费| 欧美极品xxx| 精品久久一区二区| 日韩欧美第一区| 在线观看免费视频综合| 91在线码无精品| 9人人澡人人爽人人精品| 国产福利一区二区三区在线视频| 精品写真视频在线观看| 美女网站视频久久| 久久66热re国产| 精久久久久久久久久久| 韩国一区二区三区| 国产一区二区电影| 国产精品亚洲综合一区在线观看| 国产资源在线一区| 国产一区二区三区| 国产精品456露脸| 国产成人一级电影| 成人不卡免费av| 99久久综合狠狠综合久久| 不卡高清视频专区| 91在线观看下载| 91久久精品日日躁夜夜躁欧美| 一本色道久久综合狠狠躁的推荐| 99久久精品一区二区| 91农村精品一区二区在线| 91久久国产综合久久| 欧美精品一二三四| 日韩一区二区三区电影| 久久亚洲影视婷婷| 国产日本一区二区| 成人欧美一区二区三区黑人麻豆| 综合激情成人伊人| 亚洲一区二区三区不卡国产欧美| 亚洲r级在线视频| 免费av成人在线| 国产成人在线看| 91理论电影在线观看| 欧美日韩国产电影| 精品裸体舞一区二区三区| 欧美国产日韩一二三区| 亚洲免费av在线| 日日夜夜精品免费视频| 国产在线播放一区二区三区| www.欧美日韩国产在线| 色婷婷久久99综合精品jk白丝| 欧美日韩高清一区| 精品成人免费观看| 亚洲欧洲www| 日韩综合一区二区| 国产98色在线|日韩| 91成人看片片| 久久久精品国产免费观看同学| 亚洲色图19p| 蜜桃精品视频在线| 91在线云播放| 欧美电视剧免费观看| 亚洲欧美偷拍三级| 久久精品国产亚洲aⅴ| 91伊人久久大香线蕉| 日韩欧美久久一区| 亚洲丝袜精品丝袜在线| 久久精品国产亚洲高清剧情介绍| 99精品久久免费看蜜臀剧情介绍| 91精品国模一区二区三区| 中文字幕一区在线观看| 美女网站视频久久| 欧洲在线/亚洲| 国产精品色呦呦| 免费在线观看精品| 91九色02白丝porn| 欧美经典一区二区| 伦理电影国产精品| 91成人在线免费观看| 国产精品视频看| 激情综合色丁香一区二区| 欧美体内she精视频| 国产日韩精品一区二区三区在线| 日本欧美韩国一区三区| 91丨porny丨首页| 久久久不卡影院| 蜜桃av一区二区| 欧美综合在线视频| 中文字幕在线视频一区| 久久国产精品99久久人人澡| 欧美自拍偷拍午夜视频| 国产精品久久久久久久久快鸭| 韩国av一区二区三区在线观看| 欧美区一区二区三区| 亚洲日本一区二区| 国产成人av福利| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 国产精品国产三级国产aⅴ原创| 麻豆久久久久久| 91精品国产乱码久久蜜臀| 亚洲一区影音先锋| 91老司机福利 在线| 最新国产成人在线观看| 国产999精品久久久久久绿帽| 精品国产乱码久久久久久1区2区| 天堂av在线一区| 欧美男人的天堂一二区| 亚洲在线观看免费| 91久久精品一区二区| 亚洲精品国产视频| 91美女片黄在线观看91美女| 国产精品久久免费看| 丁香婷婷综合色啪| 中文字幕不卡在线| 成人午夜av影视| 国产精品久久久久一区二区三区 | 久久99国产精品久久| 欧美大胆人体bbbb| 精品一区二区三区在线观看| 欧美成人欧美edvon| 精品一区二区三区久久| 精品精品欲导航| 国产呦萝稀缺另类资源| 久久亚洲一级片| 成人开心网精品视频| 国产精品第13页| 色综合久久综合网| 亚洲成av人片一区二区| 日韩一区二区精品葵司在线| 精品一区二区三区在线播放视频| 26uuu成人网一区二区三区| 国产成人免费在线视频| 日韩伦理电影网| 欧美性一二三区| 秋霞av亚洲一区二区三| 久久这里都是精品| 成人av动漫在线| 亚洲一区在线免费观看| 欧美一级高清大全免费观看| 黄色小说综合网站| 亚洲国产高清在线观看视频| 91啪亚洲精品| 日韩国产在线观看| 国产亚洲欧美在线| 在线中文字幕一区二区| 日韩av电影免费观看高清完整版| 精品国产一区久久| 不卡一区中文字幕| 视频一区中文字幕国产| 久久噜噜亚洲综合| 91看片淫黄大片一级在线观看| 亚洲成人一区二区在线观看| 欧美不卡一区二区三区| proumb性欧美在线观看| 亚洲国产视频a| 久久久国产一区二区三区四区小说| 成a人片亚洲日本久久| 丝袜诱惑亚洲看片| 国产欧美日韩视频在线观看| 色噜噜狠狠成人中文综合| 美女性感视频久久| 亚洲三级在线免费观看| 精品久久一区二区| 91久久国产最好的精华液| 国产曰批免费观看久久久| 亚洲青青青在线视频| 日韩欧美国产麻豆| 日本韩国一区二区三区视频| 狠狠色狠狠色综合系列| 一区二区三区日韩在线观看| 久久免费看少妇高潮| 欧美日韩久久一区| 成人性视频网站| 久久成人免费网站| 亚洲一区二区美女| 中文字幕第一页久久| 欧美成人三级电影在线| 欧美色综合天天久久综合精品| 国产精品亚洲а∨天堂免在线| 性感美女久久精品| 亚洲欧美一区二区久久| 国产欧美一区二区精品忘忧草| 777奇米四色成人影色区| 99久久99精品久久久久久| 国产一区二区三区黄视频 |