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

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

?? ia64-opc.c

?? xen虛擬機(jī)源代碼安裝包
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/* ia64-opc.c -- Functions to access the compacted opcode table   Copyright 1999, 2000, 2001, 2003, 2005 Free Software Foundation, Inc.   Written by Bob Manson of Cygnus Solutions, <manson@cygnus.com>   This file is part of GDB, GAS, and the GNU binutils.   GDB, GAS, and the GNU binutils are free software; you can redistribute   them and/or modify them under the terms of the GNU General Public   License as published by the Free Software Foundation; either version   2, or (at your option) any later version.   GDB, GAS, and the GNU binutils are distributed in the hope that they   will be useful, but WITHOUT ANY WARRANTY; without even the implied   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See   the GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with this file; see the file COPYING.  If not, write to the   Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA   02110-1301, USA.  */#include "ia64-asmtab.h"#include "ia64-asmtab.c"static void get_opc_prefix (const char **, char *);static short int find_string_ent (const char *);static short int find_main_ent (short int);static short int find_completer (short int, short int, const char *);static ia64_insn apply_completer (ia64_insn, int);static int extract_op_bits (int, int, int);static int extract_op (int, int *, unsigned int *);static int opcode_verify (ia64_insn, int, enum ia64_insn_type);static int locate_opcode_ent (ia64_insn, enum ia64_insn_type);static struct ia64_opcode *make_ia64_opcode  (ia64_insn, const char *, int, int);static struct ia64_opcode *ia64_find_matching_opcode  (const char *, short int);const struct ia64_templ_desc ia64_templ_desc[16] =  {    { 0, { IA64_UNIT_M, IA64_UNIT_I, IA64_UNIT_I }, "MII" },	/* 0 */    { 2, { IA64_UNIT_M, IA64_UNIT_I, IA64_UNIT_I }, "MII" },    { 0, { IA64_UNIT_M, IA64_UNIT_L, IA64_UNIT_X }, "MLX" },    { 0, { 0, },				    "-3-" },    { 0, { IA64_UNIT_M, IA64_UNIT_M, IA64_UNIT_I }, "MMI" },	/* 4 */    { 1, { IA64_UNIT_M, IA64_UNIT_M, IA64_UNIT_I }, "MMI" },    { 0, { IA64_UNIT_M, IA64_UNIT_F, IA64_UNIT_I }, "MFI" },    { 0, { IA64_UNIT_M, IA64_UNIT_M, IA64_UNIT_F }, "MMF" },    { 0, { IA64_UNIT_M, IA64_UNIT_I, IA64_UNIT_B }, "MIB" },	/* 8 */    { 0, { IA64_UNIT_M, IA64_UNIT_B, IA64_UNIT_B }, "MBB" },    { 0, { 0, },				    "-a-" },    { 0, { IA64_UNIT_B, IA64_UNIT_B, IA64_UNIT_B }, "BBB" },    { 0, { IA64_UNIT_M, IA64_UNIT_M, IA64_UNIT_B }, "MMB" },	/* c */    { 0, { 0, },				    "-d-" },    { 0, { IA64_UNIT_M, IA64_UNIT_F, IA64_UNIT_B }, "MFB" },    { 0, { 0, },				    "-f-" },  };/* Copy the prefix contained in *PTR (up to a '.' or a NUL) to DEST.   PTR will be adjusted to point to the start of the next portion   of the opcode, or at the NUL character. */static voidget_opc_prefix (const char **ptr, char *dest){  char *c = strchr (*ptr, '.');  if (c != NULL)    {      memcpy (dest, *ptr, c - *ptr);      dest[c - *ptr] = '\0';      *ptr = c + 1;    }  else    {      int l = strlen (*ptr);      memcpy (dest, *ptr, l);      dest[l] = '\0';      *ptr += l;    }}/* Find the index of the entry in the string table corresponding to   STR; return -1 if one does not exist. */static shortfind_string_ent (const char *str){  short start = 0;  short end = sizeof (ia64_strings) / sizeof (const char *);  short i = (start + end) / 2;  if (strcmp (str, ia64_strings[end - 1]) > 0)    {      return -1;    }  while (start <= end)    {      int c = strcmp (str, ia64_strings[i]);      if (c < 0)	{	  end = i - 1;	}      else if (c == 0)	{	  return i;	}      else	{	  start = i + 1;	}      i = (start + end) / 2;    }  return -1;}/* Find the opcode in the main opcode table whose name is STRINGINDEX, or   return -1 if one does not exist. */static shortfind_main_ent (short nameindex){  short start = 0;  short end = sizeof (main_table) / sizeof (struct ia64_main_table);  short i = (start + end) / 2;  if (nameindex < main_table[0].name_index      || nameindex > main_table[end - 1].name_index)    {      return -1;    }  while (start <= end)    {      if (nameindex < main_table[i].name_index)	{	  end = i - 1;	}      else if (nameindex == main_table[i].name_index)	{	  while (i > 0 && main_table[i - 1].name_index == nameindex)	    {	      i--;	    }	  return i;	}      else	{	  start = i + 1;	}      i = (start + end) / 2;    }  return -1;}/* Find the index of the entry in the completer table that is part of   MAIN_ENT (starting from PREV_COMPLETER) that matches NAME, or   return -1 if one does not exist. */static shortfind_completer (short main_ent, short prev_completer, const char *name){  short name_index = find_string_ent (name);  if (name_index < 0)    {      return -1;    }  if (prev_completer == -1)    {      prev_completer = main_table[main_ent].completers;    }  else    {      prev_completer = completer_table[prev_completer].subentries;    }  while (prev_completer != -1)    {      if (completer_table[prev_completer].name_index == name_index)	{	  return prev_completer;	}      prev_completer = completer_table[prev_completer].alternative;    }  return -1;}/* Apply the completer referred to by COMPLETER_INDEX to OPCODE, and   return the result. */static ia64_insnapply_completer (ia64_insn opcode, int completer_index){  ia64_insn mask = completer_table[completer_index].mask;  ia64_insn bits = completer_table[completer_index].bits;  int shiftamt = (completer_table[completer_index].offset & 63);  mask = mask << shiftamt;  bits = bits << shiftamt;  opcode = (opcode & ~mask) | bits;  return opcode;}/* Extract BITS number of bits starting from OP_POINTER + BITOFFSET in   the dis_table array, and return its value.  (BITOFFSET is numbered   starting from MSB to LSB, so a BITOFFSET of 0 indicates the MSB of the   first byte in OP_POINTER.) */static intextract_op_bits (int op_pointer, int bitoffset, int bits){  int res = 0;  op_pointer += (bitoffset / 8);  if (bitoffset % 8)    {      unsigned int op = dis_table[op_pointer++];      int numb = 8 - (bitoffset % 8);      int mask = (1 << numb) - 1;      int bata = (bits < numb) ? bits : numb;      int delta = numb - bata;      res = (res << bata) | ((op & mask) >> delta);      bitoffset += bata;      bits -= bata;    }  while (bits >= 8)    {      res = (res << 8) | (dis_table[op_pointer++] & 255);      bits -= 8;    }  if (bits > 0)    {      unsigned int op = (dis_table[op_pointer++] & 255);      res = (res << bits) | (op >> (8 - bits));    }  return res;}/* Examine the state machine entry at OP_POINTER in the dis_table   array, and extract its values into OPVAL and OP.  The length of the   state entry in bits is returned. */static intextract_op (int op_pointer, int *opval, unsigned int *op){  int oplen = 5;  *op = dis_table[op_pointer];  if ((*op) & 0x40)    {      opval[0] = extract_op_bits (op_pointer, oplen, 5);      oplen += 5;    }  switch ((*op) & 0x30)    {    case 0x10:      {	opval[1] = extract_op_bits (op_pointer, oplen, 8);	oplen += 8;	opval[1] += op_pointer;	break;      }    case 0x20:      {	opval[1] = extract_op_bits (op_pointer, oplen, 16);	if (! (opval[1] & 32768))	  {	    opval[1] += op_pointer;	  }	oplen += 16;	break;      }    case 0x30:      {	oplen--;	opval[2] = extract_op_bits (op_pointer, oplen, 12);	oplen += 12;	opval[2] |= 32768;	break;      }    }  if (((*op) & 0x08) && (((*op) & 0x30) != 0x30))    {      opval[2] = extract_op_bits (op_pointer, oplen, 16);      oplen += 16;      if (! (opval[2] & 32768))	{	  opval[2] += op_pointer;	}    }  return oplen;}/* Returns a non-zero value if the opcode in the main_table list at   PLACE matches OPCODE and is of type TYPE. */static intopcode_verify (ia64_insn opcode, int place, enum ia64_insn_type type){  if (main_table[place].opcode_type != type)    {      return 0;    }  if (main_table[place].flags      & (IA64_OPCODE_F2_EQ_F3 | IA64_OPCODE_LEN_EQ_64MCNT))    {      const struct ia64_operand *o1, *o2;      ia64_insn f2, f3;      if (main_table[place].flags & IA64_OPCODE_F2_EQ_F3)	{	  o1 = elf64_ia64_operands + IA64_OPND_F2;	  o2 = elf64_ia64_operands + IA64_OPND_F3;	  (*o1->extract) (o1, opcode, &f2);	  (*o2->extract) (o2, opcode, &f3);	  if (f2 != f3)	    return 0;	}      else	{	  ia64_insn len, count;	  /* length must equal 64-count: */	  o1 = elf64_ia64_operands + IA64_OPND_LEN6;	  o2 = elf64_ia64_operands + main_table[place].operands[2];	  (*o1->extract) (o1, opcode, &len);	  (*o2->extract) (o2, opcode, &count);	  if (len != 64 - count)	    return 0;	}    }  return 1;}/* Find an instruction entry in the ia64_dis_names array that matches   opcode OPCODE and is of type TYPE.  Returns either a positive index   into the array, or a negative value if an entry for OPCODE could   not be found.  Checks all matches and returns the one with the highest   priority. */static intlocate_opcode_ent (ia64_insn opcode, enum ia64_insn_type type){  int currtest[41];  int bitpos[41];  int op_ptr[41];  int currstatenum = 0;  short found_disent = -1;  short found_priority = -1;  currtest[currstatenum] = 0;  op_ptr[currstatenum] = 0;  bitpos[currstatenum] = 40;  while (1)    {      int op_pointer = op_ptr[currstatenum];      unsigned int op;      int currbitnum = bitpos[currstatenum];      int oplen;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产色婷婷亚洲99精品小说| 亚洲精品一区二区三区精华液| 26uuu色噜噜精品一区二区| 亚洲精品精品亚洲| 国产一区二区电影| 7777精品伊人久久久大香线蕉经典版下载 | 中文字幕亚洲在| 久久不见久久见免费视频7| 欧美在线免费视屏| 亚洲视频图片小说| 国产精品综合一区二区| 在线电影国产精品| 亚洲黄色尤物视频| 成人av免费在线| 久久―日本道色综合久久 | 久久综合九色综合97婷婷女人| 午夜欧美一区二区三区在线播放| 99亚偷拍自图区亚洲| 久久午夜国产精品| 久久精品国产精品亚洲红杏| 欧美电影在哪看比较好| 亚洲综合免费观看高清完整版| 成人黄色综合网站| 欧美国产精品一区二区三区| 精品亚洲国内自在自线福利| 欧美一区二区黄色| 日本aⅴ亚洲精品中文乱码| 欧美欧美欧美欧美首页| 亚洲综合男人的天堂| 色综合色综合色综合| 国产精品电影一区二区三区| 国产不卡高清在线观看视频| 久久精品视频免费| 国产成人午夜99999| 久久久美女毛片| 精品亚洲免费视频| 精品电影一区二区三区| 精品无人区卡一卡二卡三乱码免费卡| 3d动漫精品啪啪| 日韩精品一级二级| 91精品麻豆日日躁夜夜躁| 日本欧洲一区二区| 欧美一区二区三区视频在线观看| 丝袜国产日韩另类美女| 91精品国产一区二区三区香蕉| 日本中文一区二区三区| 8v天堂国产在线一区二区| 五月天激情综合网| 在线不卡a资源高清| 美腿丝袜亚洲综合| 欧美精品一区二区三区一线天视频 | 亚洲乱码国产乱码精品精小说 | 北岛玲一区二区三区四区| 国产精品久久久久久户外露出| 99精品欧美一区二区三区小说 | 国产精品久久久久一区二区三区 | 91美女片黄在线观看91美女| 亚洲精品国产a久久久久久| 91精品办公室少妇高潮对白| 一区二区视频在线| 欧美日韩一级大片网址| 天天操天天干天天综合网| 91精品国产综合久久久蜜臀粉嫩| 精品亚洲aⅴ乱码一区二区三区| 久久久久久久久久久久久夜| 99久久婷婷国产综合精品电影| 亚洲视频狠狠干| 欧美日韩国产综合一区二区三区| 日本不卡视频在线| 久久―日本道色综合久久| 成人av电影在线网| 亚洲大片在线观看| 精品久久久久久久久久久久包黑料| 国产精品影音先锋| 亚洲人精品午夜| 欧美一区二区三区公司| 国产伦精品一区二区三区免费 | 欧美变态tickle挠乳网站| 国产精品自拍在线| 亚洲欧美另类小说| 555www色欧美视频| 国产成人自拍网| 亚洲一区二区四区蜜桃| 日韩欧美在线影院| 成年人网站91| 丝袜国产日韩另类美女| 国产欧美精品一区aⅴ影院| 欧美在线观看18| 麻豆国产91在线播放| 国产精品传媒入口麻豆| 欧美日本在线视频| 成人午夜免费电影| 亚洲r级在线视频| 久久久国产精品麻豆| 欧美中文字幕一二三区视频| 激情av综合网| 亚洲激情图片小说视频| 日韩精品一区二区三区视频在线观看| 从欧美一区二区三区| 午夜亚洲福利老司机| 欧美国产日产图区| 日韩午夜在线观看| 91在线精品秘密一区二区| 麻豆精品精品国产自在97香蕉| 中文字幕在线观看不卡视频| 欧美一级片在线| 99久久精品费精品国产一区二区| 青青青伊人色综合久久| ...xxx性欧美| 精品福利在线导航| 精品婷婷伊人一区三区三| 成人免费视频一区| 久久av老司机精品网站导航| 樱花草国产18久久久久| 国产午夜亚洲精品羞羞网站| 欧美精品国产精品| 99精品国产99久久久久久白柏| 久久99久久精品欧美| 亚洲国产日韩一级| 亚洲三级在线免费观看| 久久九九全国免费| 91精品国产免费久久综合| 91蜜桃视频在线| 成人激情免费网站| 国产黄色成人av| 久久国产剧场电影| 日韩精品成人一区二区在线| 一区二区三区中文免费| 国产精品第13页| 中文字幕 久热精品 视频在线| 日韩欧美国产一区在线观看| 欧美亚洲高清一区二区三区不卡| 成人国产精品免费观看| 国产精品一二三四| 国产在线精品免费av| 人人狠狠综合久久亚洲| 亚洲成av人片一区二区| 亚洲免费av观看| 亚洲图片欧美激情| 中文字幕免费不卡| 国产亚洲综合色| wwwwww.欧美系列| 精品国产乱码久久久久久蜜臀| 欧美日韩国产乱码电影| 91福利国产精品| 日本韩国一区二区三区| 91丨porny丨户外露出| caoporm超碰国产精品| 国产成人在线电影| 成人一级视频在线观看| 国产精品一区一区| 国产精品一品二品| 国产a久久麻豆| 成人黄色在线网站| av不卡一区二区三区| 91在线视频网址| 日本韩国欧美国产| 欧美日韩在线电影| 欧美挠脚心视频网站| 91麻豆精品国产91久久久资源速度 | 亚洲18女电影在线观看| 亚洲五月六月丁香激情| 亚洲国产精品一区二区www| 亚洲国产精品久久久久婷婷884 | 亚洲欧洲性图库| 亚洲欧洲韩国日本视频| 综合欧美一区二区三区| 亚洲激情在线播放| 亚洲成人午夜电影| 日韩电影免费在线观看网站| 蜜臀av一区二区在线免费观看| 琪琪一区二区三区| 精品影院一区二区久久久| 国产一区二区三区免费看| 国产精品乡下勾搭老头1| 国产91精品在线观看| 高清国产一区二区三区| a级精品国产片在线观看| 色哟哟在线观看一区二区三区| 欧美午夜精品久久久| 欧美久久久久久蜜桃| 欧美大片一区二区| 久久这里只精品最新地址| 国产精品视频一区二区三区不卡| 亚洲欧洲精品一区二区三区不卡| 亚洲卡通欧美制服中文| 天堂va蜜桃一区二区三区| 麻豆国产91在线播放| 成人午夜精品一区二区三区| 色噜噜久久综合| 欧美一区二区三区婷婷月色| 久久久久高清精品| 亚洲少妇中出一区| 日本伊人精品一区二区三区观看方式| 激情六月婷婷久久| 一本高清dvd不卡在线观看| 日韩一区二区免费高清| 国产精品视频一区二区三区不卡| 一区二区三区不卡视频| 久久精品噜噜噜成人av农村|