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

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

?? tc-avr.c

?? 基于4個mips核的noc設計
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* tc-avr.c -- Assembler code for the ATMEL AVR   Copyright 1999, 2000 Free Software Foundation, Inc.   Contributed by Denis Chertykov <denisc@overta.ru>   This file is part of GAS, the GNU Assembler.   GAS is free software; you can redistribute it and/or modify   it 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.   GAS is distributed in the hope that it 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 GAS; see the file COPYING.  If not, write to   the Free Software Foundation, 59 Temple Place - Suite 330,   Boston, MA 02111-1307, USA.  */#include <stdio.h>#include <ctype.h>#include "as.h"#include "subsegs.h"struct avr_opcodes_s{  char *name;  char *constraints;  int insn_size;		/* In words.  */  int isa;  unsigned int bin_opcode;};#define AVR_INSN(NAME, CONSTR, OPCODE, SIZE, ISA, BIN) \{#NAME, CONSTR, SIZE, ISA, BIN},struct avr_opcodes_s avr_opcodes[] ={  #include "opcode/avr.h"  {NULL, NULL, 0, 0, 0}};const char comment_chars[] = ";";const char line_comment_chars[] = "#";const char line_separator_chars[] = "$";const char *md_shortopts = "m:";struct mcu_type_s{  char *name;  int isa;  int mach;};static struct mcu_type_s mcu_types[] ={  {"avr1",      AVR_ISA_TINY1,    bfd_mach_avr1},  {"avr2",      AVR_ISA_2xxx,     bfd_mach_avr2},  {"avr3",      AVR_ISA_M103,     bfd_mach_avr3},  {"avr4",      AVR_ISA_M83,      bfd_mach_avr4},  {"avr5",      AVR_ISA_ALL,      bfd_mach_avr5},  {"at90s1200", AVR_ISA_1200,     bfd_mach_avr1},  {"attiny10",  AVR_ISA_TINY1,    bfd_mach_avr1},  {"attiny11",  AVR_ISA_TINY1,    bfd_mach_avr1},  {"attiny12",  AVR_ISA_TINY1,    bfd_mach_avr1},  {"attiny15",  AVR_ISA_TINY1,    bfd_mach_avr1},  {"attiny28",  AVR_ISA_TINY1,    bfd_mach_avr1},  {"at90s2313", AVR_ISA_2xxx,     bfd_mach_avr2},  {"at90s2323", AVR_ISA_2xxx,     bfd_mach_avr2},  {"at90s2333", AVR_ISA_2xxx,     bfd_mach_avr2},  {"attiny22" , AVR_ISA_2xxx,     bfd_mach_avr2},  {"at90s2343", AVR_ISA_2xxx,     bfd_mach_avr2},  {"at90s4433", AVR_ISA_2xxx,     bfd_mach_avr2},  {"at90s4414", AVR_ISA_2xxx,     bfd_mach_avr2},  {"at90s4434", AVR_ISA_2xxx,     bfd_mach_avr2},  {"at90s8515", AVR_ISA_2xxx,     bfd_mach_avr2},  {"at90s8535", AVR_ISA_2xxx,     bfd_mach_avr2},  {"at90c8534", AVR_ISA_2xxx,     bfd_mach_avr2},  {"atmega603", AVR_ISA_M603,     bfd_mach_avr3},  {"atmega103", AVR_ISA_M103,     bfd_mach_avr3},  {"atmega83",  AVR_ISA_M83,      bfd_mach_avr4},  {"atmega85",  AVR_ISA_M83,      bfd_mach_avr4},  {"atmega161", AVR_ISA_M161,     bfd_mach_avr5},  {"atmega163", AVR_ISA_M161,     bfd_mach_avr5},  {"atmega32",  AVR_ISA_M161,     bfd_mach_avr5},  {"at94k",     AVR_ISA_94K,      bfd_mach_avr5},  {NULL, 0, 0}};/* Current MCU type.  */static struct mcu_type_s default_mcu = {"avr2", AVR_ISA_2xxx,bfd_mach_avr2};static struct mcu_type_s *avr_mcu = &default_mcu;/* AVR target-specific switches.  */struct avr_opt_s{  int all_opcodes;  /* -mall-opcodes: accept all known AVR opcodes  */  int no_skip_bug;  /* -mno-skip-bug: no warnings for skipping 2-word insns  */  int no_wrap;      /* -mno-wrap: reject rjmp/rcall with 8K wrap-around  */};static struct avr_opt_s avr_opt = { 0, 0, 0 };const char EXP_CHARS[] = "eE";const char FLT_CHARS[] = "dD";static void avr_set_arch (int dummy);/* The target specific pseudo-ops which we support.  */const pseudo_typeS md_pseudo_table[] ={  {"arch", avr_set_arch,	0},  { NULL,	NULL,		0}};#define LDI_IMMEDIATE(x) (((x) & 0xf) | (((x) << 4) & 0xf00))static void show_mcu_list PARAMS ((FILE *));static char *skip_space PARAMS ((char *));static char *extract_word PARAMS ((char *, char *, int));static unsigned int avr_operand PARAMS ((struct avr_opcodes_s *,					 int, char *, char **));static unsigned int avr_operands PARAMS ((struct avr_opcodes_s *, char **));static unsigned int avr_get_constant PARAMS ((char *, int));static char *parse_exp PARAMS ((char *, expressionS *));static bfd_reloc_code_real_type avr_ldi_expression PARAMS ((expressionS *));#define EXP_MOD_NAME(i) exp_mod[i].name#define EXP_MOD_RELOC(i) exp_mod[i].reloc#define EXP_MOD_NEG_RELOC(i) exp_mod[i].neg_reloc#define HAVE_PM_P(i) exp_mod[i].have_pmstruct exp_mod_s{  char *name;  bfd_reloc_code_real_type reloc;  bfd_reloc_code_real_type neg_reloc;  int have_pm;};static struct exp_mod_s exp_mod[] ={  {"hh8",    BFD_RELOC_AVR_HH8_LDI,    BFD_RELOC_AVR_HH8_LDI_NEG,    1},  {"pm_hh8", BFD_RELOC_AVR_HH8_LDI_PM, BFD_RELOC_AVR_HH8_LDI_PM_NEG, 0},  {"hi8",    BFD_RELOC_AVR_HI8_LDI,    BFD_RELOC_AVR_HI8_LDI_NEG,    1},  {"pm_hi8", BFD_RELOC_AVR_HI8_LDI_PM, BFD_RELOC_AVR_HI8_LDI_PM_NEG, 0},  {"lo8",    BFD_RELOC_AVR_LO8_LDI,    BFD_RELOC_AVR_LO8_LDI_NEG,    1},  {"pm_lo8", BFD_RELOC_AVR_LO8_LDI_PM, BFD_RELOC_AVR_LO8_LDI_PM_NEG, 0},  {"hlo8",   -BFD_RELOC_AVR_LO8_LDI,   -BFD_RELOC_AVR_LO8_LDI_NEG,   0},  {"hhi8",   -BFD_RELOC_AVR_HI8_LDI,   -BFD_RELOC_AVR_HI8_LDI_NEG,   0},};/* Opcode hash table.  */static struct hash_control *avr_hash;/* Reloc modifiers hash control (hh8,hi8,lo8,pm_xx).  */static struct hash_control *avr_mod_hash;#define OPTION_MMCU 'm'#define OPTION_ALL_OPCODES (OPTION_MD_BASE + 1)#define OPTION_NO_SKIP_BUG (OPTION_MD_BASE + 2)#define OPTION_NO_WRAP     (OPTION_MD_BASE + 3)struct option md_longopts[] ={  { "mmcu",   required_argument, NULL, OPTION_MMCU        },  { "mall-opcodes", no_argument, NULL, OPTION_ALL_OPCODES },  { "mno-skip-bug", no_argument, NULL, OPTION_NO_SKIP_BUG },  { "mno-wrap",     no_argument, NULL, OPTION_NO_WRAP     },  { NULL, no_argument, NULL, 0 }};size_t md_longopts_size = sizeof (md_longopts);/* Display nicely formatted list of known MCU names.  */static voidshow_mcu_list (stream)     FILE *stream;{  int i, x;  fprintf (stream, _("Known MCU names:"));  x = 1000;  for (i = 0; mcu_types[i].name; i++)    {      int len = strlen (mcu_types[i].name);      x += len + 1;      if (x < 75)	fprintf (stream, " %s", mcu_types[i].name);      else	{	  fprintf (stream, "\n  %s", mcu_types[i].name);	  x = len + 2;	}    }  fprintf (stream, "\n");}static inline char *skip_space (s)     char *s;{  while (*s == ' ' || *s == '\t')    ++s;  return s;}/* Extract one word from FROM and copy it to TO.  */static char *extract_word (char *from, char *to, int limit){  char *op_start;  char *op_end;  int size = 0;  /* Drop leading whitespace.  */  from = skip_space (from);  *to = 0;  /* Find the op code end.  */  for (op_start = op_end = from; *op_end != 0 && is_part_of_name (*op_end);)    {      to[size++] = *op_end++;      if (size + 1 >= limit)	break;    }  to[size] = 0;  return op_end;}intmd_estimate_size_before_relax (fragp, seg)     fragS *fragp ATTRIBUTE_UNUSED;     asection *seg ATTRIBUTE_UNUSED;{  abort ();  return 0;}voidmd_show_usage (stream)     FILE *stream;{  fprintf (stream,      _("AVR options:\n"	"  -mmcu=[avr-name] select microcontroller variant\n"	"                   [avr-name] can be:\n"	"                   avr1 - AT90S1200, ATtiny1x, ATtiny28\n"	"                   avr2 - AT90S2xxx, AT90S4xxx, AT90S8xxx, ATtiny22\n"	"                   avr3 - ATmega103, ATmega603\n"	"                   avr4 - ATmega83, ATmega85\n"	"                   avr5 - ATmega161, ATmega163, ATmega32, AT94K\n"	"                   or immediate microcontroller name.\n"));  fprintf (stream,      _("  -mall-opcodes    accept all AVR opcodes, even if not supported by MCU\n"	"  -mno-skip-bug    disable warnings for skipping two-word instructions\n"	"                   (default for avr4, avr5)\n"	"  -mno-wrap        reject rjmp/rcall instructions with 8K wrap-around\n"	"                   (default for avr3, avr5)\n"));  show_mcu_list (stream);}static voidavr_set_arch (dummy)     int dummy ATTRIBUTE_UNUSED;{  char *str;  str = (char *) alloca (20);  input_line_pointer = extract_word (input_line_pointer, str, 20);  md_parse_option (OPTION_MMCU, str);  bfd_set_arch_mach (stdoutput, TARGET_ARCH, avr_mcu->mach);}intmd_parse_option (c, arg)     int c;     char *arg;{  switch (c)    {    case OPTION_MMCU:      {	int i;	char *s = alloca (strlen (arg) + 1);	{	  char *t = s;	  char *arg1 = arg;	  do	    *t = tolower (*arg1++);	  while (*t++);	}	for (i = 0; mcu_types[i].name; ++i)	  if (strcmp (mcu_types[i].name, s) == 0)	    break;	if (!mcu_types[i].name)	  {	    show_mcu_list (stderr);	    as_fatal (_("unknown MCU: %s\n"), arg);	  }	/* It is OK to redefine mcu type within the same avr[1-5] bfd machine	   type - this for allows passing -mmcu=... via gcc ASM_SPEC as well	   as .arch ... in the asm output at the same time.  */	if (avr_mcu == &default_mcu || avr_mcu->mach == mcu_types[i].mach)	  avr_mcu = &mcu_types[i];	else	  as_fatal (_("redefinition of mcu type `%s' to `%s'"),		    avr_mcu->name, mcu_types[i].name);	return 1;      }    case OPTION_ALL_OPCODES:      avr_opt.all_opcodes = 1;      return 1;    case OPTION_NO_SKIP_BUG:      avr_opt.no_skip_bug = 1;      return 1;    case OPTION_NO_WRAP:      avr_opt.no_wrap = 1;      return 1;    }  return 0;}symbolS *md_undefined_symbol (name)     char *name ATTRIBUTE_UNUSED;{  return 0;}/* Turn a string in input_line_pointer into a floating point constant   of type TYPE, and store the appropriate bytes in *LITP.  The number   of LITTLENUMS emitted is stored in *SIZEP.  An error message is   returned, or NULL on OK.  */char *md_atof (type, litP, sizeP)     int type;     char *litP;     int *sizeP;{  int prec;  LITTLENUM_TYPE words[4];  LITTLENUM_TYPE *wordP;  char *t;  switch (type)    {    case 'f':      prec = 2;      break;    case 'd':      prec = 4;      break;    default:      *sizeP = 0;      return _("bad call to md_atof");    }  t = atof_ieee (input_line_pointer, type, words);  if (t)    input_line_pointer = t;  *sizeP = prec * sizeof (LITTLENUM_TYPE);  /* This loop outputs the LITTLENUMs in REVERSE order.  */  for (wordP = words + prec - 1; prec--;)    {      md_number_to_chars (litP, (valueT) (*wordP--), sizeof (LITTLENUM_TYPE));      litP += sizeof (LITTLENUM_TYPE);    }  return NULL;}voidmd_convert_frag (abfd, sec, fragP)     bfd *abfd ATTRIBUTE_UNUSED;     asection *sec ATTRIBUTE_UNUSED;     fragS *fragP ATTRIBUTE_UNUSED;{  abort ();}voidmd_begin (){  unsigned int i;  struct avr_opcodes_s *opcode;  avr_hash = hash_new ();  /* Insert unique names into hash table.  This hash table then provides a     quick index to the first opcode with a particular name in the opcode     table.  */  for (opcode = avr_opcodes; opcode->name; opcode++)    hash_insert (avr_hash, opcode->name, (char *) opcode);  avr_mod_hash = hash_new ();  for (i = 0; i < sizeof (exp_mod) / sizeof (exp_mod[0]); ++i)    hash_insert (avr_mod_hash, EXP_MOD_NAME (i), (void *) (i + 10));  bfd_set_arch_mach (stdoutput, TARGET_ARCH, avr_mcu->mach);}/* Resolve STR as a constant expression and return the result.   If result greater than MAX then error.  */static unsigned intavr_get_constant (str, max)     char *str;     int max;{  expressionS ex;  str = skip_space (str);  input_line_pointer = str;  expression (&ex);  if (ex.X_op != O_constant)    as_bad (_("constant value required"));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美一区二区精品性| 国产曰批免费观看久久久| 精品国产123| 日韩美一区二区三区| 欧美高清一级片在线| 欧美伦理影视网| 欧美一区二区女人| 日韩欧美电影一区| 久久久久久久免费视频了| 日本一区二区三区在线不卡| 国产欧美一区二区在线观看| 亚洲国产精品精华液2区45| 国产精品网站一区| 亚洲欧洲成人精品av97| 亚洲一区二区三区四区的| 亚洲超丰满肉感bbw| 日本va欧美va精品发布| 极品少妇xxxx偷拍精品少妇| 成人免费毛片片v| 91丨porny丨最新| 6080日韩午夜伦伦午夜伦| 日韩一区二区中文字幕| 欧美经典三级视频一区二区三区| 日韩美女视频一区二区| 午夜私人影院久久久久| 毛片av一区二区| eeuss鲁片一区二区三区在线观看| 91久久精品一区二区| 欧美人与性动xxxx| 国产欧美一区二区精品性色| 亚洲一区二区在线观看视频| 日本特黄久久久高潮| 成人美女视频在线看| 欧美三级电影在线观看| 久久久久久免费网| 日欧美一区二区| 夫妻av一区二区| 在线日韩av片| 国产午夜精品一区二区三区视频| 玉足女爽爽91| 国产精品资源在线| 欧美三级蜜桃2在线观看| 国产日韩精品一区二区三区| 亚洲sss视频在线视频| 国产69精品久久777的优势| 欧美日韩电影在线播放| 久久九九99视频| 国产精品大尺度| 伊人性伊人情综合网| 五月天国产精品| 97se亚洲国产综合自在线不卡| 欧美一区二区三区电影| 亚洲精品欧美激情| 成人18视频在线播放| 精品国产电影一区二区| 日韩精品一二三| 欧美吻胸吃奶大尺度电影| 自拍偷拍欧美精品| 丁香婷婷深情五月亚洲| 国产夜色精品一区二区av| 久久国产精品一区二区| 欧美色倩网站大全免费| 一区二区三区在线看| 不卡在线观看av| 国产精品久久久久精k8| 国产suv精品一区二区6| 国产亚洲欧美日韩日本| 国产综合成人久久大片91| 日韩欧美不卡在线观看视频| 日韩精品国产精品| 欧美妇女性影城| 免费在线看成人av| 日韩欧美aaaaaa| 黄色精品一二区| 久久一二三国产| 国产一区二区电影| 欧美国产国产综合| 成人黄色网址在线观看| 亚洲欧洲国产日韩| 在线欧美一区二区| 热久久国产精品| 久久综合久久综合久久| 岛国av在线一区| 亚洲视频中文字幕| 欧美日韩国产综合一区二区三区| 亚洲成年人网站在线观看| 欧美日韩国产小视频在线观看| 日日夜夜精品视频天天综合网| 91精品国产综合久久久蜜臀图片 | 99精品久久免费看蜜臀剧情介绍| 精品欧美黑人一区二区三区| 狠狠色综合日日| 久久精品视频一区二区三区| 免费观看久久久4p| 在线观看亚洲一区| 欧美一级搡bbbb搡bbbb| 国产黄色精品视频| 亚洲男人的天堂一区二区| 在线观看一区日韩| 国内外成人在线| 国产精品久久久久久久久晋中 | 91伊人久久大香线蕉| 亚洲综合一区二区三区| 精品三级在线看| 不卡视频免费播放| 亚洲va在线va天堂| 国产日本一区二区| 欧美日韩一卡二卡三卡| 国产成人一区二区精品非洲| 亚洲乱码日产精品bd| 欧美一级黄色片| 91丝袜呻吟高潮美腿白嫩在线观看| 亚洲不卡在线观看| 中文字幕在线不卡视频| 欧美一级生活片| 欧洲人成人精品| 国产黄色精品网站| 蜜乳av一区二区| 亚洲乱码国产乱码精品精的特点| 精品国产欧美一区二区| 欧美在线免费播放| 成人黄色软件下载| 国产美女一区二区| 丝袜亚洲另类丝袜在线| 亚洲美女在线一区| 国产日韩欧美a| 精品久久久久久久久久久院品网| 91视频com| 粉嫩av亚洲一区二区图片| 免费成人在线视频观看| 亚洲自拍偷拍麻豆| 最新成人av在线| 国产性做久久久久久| 欧美成人三级在线| 欧美一区二区在线视频| 欧美性欧美巨大黑白大战| gogogo免费视频观看亚洲一| 国产成人精品www牛牛影视| 精品一区二区三区久久| 青椒成人免费视频| 五月天一区二区三区| 亚洲一区二区免费视频| 一区二区三区国产精品| 亚洲美女少妇撒尿| 亚洲女与黑人做爰| 亚洲欧洲日韩综合一区二区| 久久久久国产一区二区三区四区| 日韩三级在线观看| 欧美一级黄色大片| 日韩欧美一区二区三区在线| 91精品国产入口| 日韩欧美专区在线| 精品国产免费一区二区三区四区| 欧美大度的电影原声| 欧美成人国产一区二区| 久久综合视频网| 欧美国产日本韩| 亚洲精品五月天| 亚洲第一搞黄网站| 免费在线看一区| 亚洲电影一级黄| 亚洲成人高清在线| 毛片av一区二区| 国产精品一区二区三区四区| 成人久久久精品乱码一区二区三区 | 亚洲国产成人在线| 国产精品卡一卡二| 一区二区三区成人在线视频 | 91 com成人网| 日韩精品资源二区在线| 久久精品这里都是精品| 国产精品视频看| 亚洲影院理伦片| 麻豆成人免费电影| 成人一区二区在线观看| heyzo一本久久综合| 欧美日韩中文国产| 精品美女一区二区三区| 国产精品久久久久影院亚瑟| 亚洲自拍另类综合| 国产乱国产乱300精品| 91激情在线视频| 精品久久久三级丝袜| 亚洲女同女同女同女同女同69| 欧美a级一区二区| 成人精品在线视频观看| 在线播放国产精品二区一二区四区 | 国产精品国产精品国产专区不蜜| 亚洲在线观看免费视频| 国产一区二区三区黄视频| 在线观看av一区二区| 久久综合国产精品| 亚洲va天堂va国产va久| 成人久久视频在线观看| 欧美哺乳videos| 亚洲国产中文字幕在线视频综合| 久久99久国产精品黄毛片色诱| 色婷婷激情一区二区三区| 久久综合久久鬼色中文字| 天天色图综合网|