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

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

?? tm-tower-as.h

?? 這是完整的gcc源代碼
?? H
?? 第 1 頁 / 共 2 頁
字號:
/* Definitions of target machine for GNU compiler.   Copyright (C) 1990 Free Software Foundation, Inc.   Written by Robert Andersson, International Systems, Oslo, Norway.   Send bug reports, questions and improvements to ra@intsys.no.   For NCR Tower 32/4x0 and 32/6x0 running System V Release 3.   This file outputs assembler source suitable for the native Tower as   and with sdb debugging symbols.  See tm-tower.h for more comments.   This file was based on tm-m68k.h, tm-hp9k320.h and tm-3b1.h   as of the 1.37.1 version.This file is part of GNU CC.GNU CC is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 1, or (at your option)any later version.GNU CC is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with GNU CC; see the file COPYING.  If not, write tothe Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */#include "tm-tower.h"/* Define __HAVE_68881 in preprocessor only if -m68881 is specified.   This will control the use of inline 68881 insns in certain macros.   Also, define special define used to identify the Tower assembler.  */#define CPP_SPEC "-D__TOWER_ASM__ %{m68881:-D__HAVE_68881__}"/* The startfiles and libraries depend on the -p and -m68881 options.   The Tower does not support the -pg option.  */#define STARTFILE_SPEC                                         \"%{p:%{m68881:/usr/lib/fp/mcrt1.o}%{!m68881:/lib/mcrt1.o}}     \ %{!p:%{m68881:/usr/lib/fp/crt1.o}%{!m68881:/lib/crt1.o}}"/* These four macros control how m68k.md is expanded.  */#define MOTOROLA#define SGS#define SONY_ASM#define HPUX_ASM/* Turn on SDB debugging info.  */#define SDB_DEBUGGING_INFO/* This is only useful if gdb is changed, but doesn't harm anyway.  */#define ASM_IDENTIFY_GCC(FILE) \  fprintf (FILE, "gcc_compiled%%:\n")/* All the ASM_OUTPUT macros need to conform to the Tower as syntax.  */#define ASM_OUTPUT_SOURCE_FILENAME(FILE, FILENAME) \  fprintf (FILE, "\tfile\t\"%s\"\n", FILENAME)#define ASM_OUTPUT_SOURCE_LINE(FILE, LINENO)	\  fprintf (FILE, "\tln\t%d\n",			\	   (sdb_begin_function_line		\	    ? last_linenum - sdb_begin_function_line : 1))#define ASM_OUTPUT_IDENT(FILE, NAME) \  fprintf (FILE, "\tident\t\"%s\" \n", NAME)#define ASM_OUTPUT_ASCII(FILE,PTR,LEN) \  { register int sp = 0, lp = 0; \    fprintf (FILE, "\tbyte\t"); \  loop: \    if (PTR[sp] > ' ' && ! (PTR[sp] & 0x80) && PTR[sp] != '\\') \      { lp += 3; \	fprintf (FILE, "'%c", PTR[sp]); } \    else \      { lp += 5; \	fprintf (FILE, "0x%x", PTR[sp]); } \    if (++sp < LEN) \      {	if (lp > 60) \	  { lp = 0; \	    fprintf (FILE, "\n\tbyte\t"); }	\	else \	  putc (',', FILE); \	goto loop; } \    putc ('\n', FILE); }/* Translate Motorola opcodes such as `jbeq'   into SGS/Tower opcodes such as `beq.w'.   Change `move' to `mov'.   Change `cmpm' to `cmp'.   Change `divsl' to `tdivs'.   Change `divul' to `tdivu'.   Change `ftst' to `ftest'.   Change `fmove' to `fmov'.  */#define ASM_OUTPUT_OPCODE(FILE, PTR)			\{ if ((PTR)[0] == 'j' && (PTR)[1] == 'b')		\    { ++(PTR);						\      while (*(PTR) != ' ')				\	{ putc (*(PTR), (FILE)); ++(PTR); }		\      fprintf ((FILE), ".w"); }				\  else if ((PTR)[0] == 'm' && (PTR)[1] == 'o'		\	   && (PTR)[2] == 'v' && (PTR)[3] == 'e')	\    { fprintf ((FILE), "mov"); (PTR) += 4; }		\  else if ((PTR)[0] == 'c' && (PTR)[1] == 'm'		\	   && (PTR)[2] == 'p' && (PTR)[3] == 'm')	\    { fprintf ((FILE), "cmp"); (PTR) += 4; }		\  else if ((PTR)[0] == 'd' && (PTR)[1] == 'i'		\	   && (PTR)[2] == 'v' && (PTR)[3] == 's'	\	   && (PTR)[4] == 'l')				\    { fprintf ((FILE), "tdivs"); (PTR) += 5; }		\  else if ((PTR)[0] == 'd' && (PTR)[1] == 'i'		\	   && (PTR)[2] == 'v' && (PTR)[3] == 'u'	\	   && (PTR)[4] == 'l')				\    { fprintf ((FILE), "tdivu"); (PTR) += 5; }		\  else if ((PTR)[0] == 'f' && (PTR)[1] == 't'		\	   && (PTR)[2] == 's' && (PTR)[3] == 't')	\    { fprintf ((FILE), "ftest"); (PTR) += 4; }		\  else if ((PTR)[0] == 'f' && (PTR)[1] == 'm'		\	   && (PTR)[2] == 'o' && (PTR)[3] == 'v' 	\	   && (PTR)[4] == 'e')				\    { fprintf ((FILE), "fmov"); (PTR) += 5; }		\}/* Override parts of tm-m68k.h to fit the Tower assembler.   This section needs to track changes done to tm-m68k.h in the future.  */#undef TARGET_VERSION#define TARGET_VERSION fprintf (stderr, " (68k, Motorola/SGS/Tower32 syntax)");#undef BLOCK_PROFILER#undef FUNCTION_BLOCK_PROFILER#undef FUNCTION_PROFILER#define FUNCTION_PROFILER(FILE, LABEL_NO)	\    fprintf (FILE, "\tmov.l &LP%%%d,%%a0\n\tjsr mcount%%\n", (LABEL_NO))/* The prologue is identical to the one in tm-m68k.h except that the   assembler syntax is different.  */#undef FUNCTION_PROLOGUE#define FUNCTION_PROLOGUE(FILE, SIZE)     \{ register int regno;						\  register int mask = 0;					\  extern char call_used_regs[];					\  int fsize = ((SIZE) + 3) & -4;				\  if (frame_pointer_needed)					\    { if (TARGET_68020 || fsize < 0x8000)			\        fprintf (FILE, "\tlink %%a6,&%d\n", -fsize);		\      else							\	fprintf (FILE, "\tlink %%a6,&0\n\tsub.l &%d,%%sp\n", fsize); }  \  for (regno = 24; regno < 56; regno++)                         \    if (regs_ever_live[regno] && ! call_used_regs[regno])       \      fprintf(FILE, "\tfpmoved %s,-(%%sp)\n",                   \	      reg_names[regno]);                                \  for (regno = 16; regno < 24; regno++)				\    if (regs_ever_live[regno] && ! call_used_regs[regno])	\       mask |= 1 << (regno - 16);				\  if ((mask & 0xff) != 0)					\    fprintf (FILE, "\tfmovm &0x%x,-(%%sp)\n", mask & 0xff);     \  mask = 0;							\  for (regno = 0; regno < 16; regno++)				\    if (regs_ever_live[regno] && ! call_used_regs[regno])	\       mask |= 1 << (15 - regno);				\  if (frame_pointer_needed)					\    mask &= ~ (1 << (15-FRAME_POINTER_REGNUM));			\  if (exact_log2 (mask) >= 0)					\    fprintf (FILE, "\tmov.l %s,-(%%sp)\n", reg_names[15 - exact_log2 (mask)]); \  else if (mask) fprintf (FILE, "\tmovm.l &0x%x,-(%%sp)\n", mask); }/* The epilogue is identical to the one in tm-m68k.h except that:   a) The assembler syntax is different.   b) Pointers are returned both in %d0 and %a0.   c) FUNCTION_EXTRA_EPILOGUE is not needed.  */#undef FUNCTION_EPILOGUE#define FUNCTION_EPILOGUE(FILE, SIZE) \{ register int regno;						\  register int mask, fmask;					\  register int nregs;						\  int offset, foffset, fpoffset;   	                        \  extern char call_used_regs[];					\  extern int current_function_pops_args;			\  extern int current_function_args_size;			\  extern int current_function_returns_pointer;                  \  int fsize = ((SIZE) + 3) & -4;				\  int big = 0;							\  nregs = 0;  fmask = 0; fpoffset = 0;  			\  for (regno = 24 ; regno < 56 ; regno++)			\    if (regs_ever_live[regno] && ! call_used_regs[regno])	\      nregs++;							\  fpoffset = nregs*8;						\  nregs = 0;							\  for (regno = 16; regno < 24; regno++)				\    if (regs_ever_live[regno] && ! call_used_regs[regno])	\      { nregs++; fmask |= 1 << (23 - regno); }			\  foffset = fpoffset + nregs * 12;				\  nregs = 0;  mask = 0;						\  if (frame_pointer_needed) regs_ever_live[FRAME_POINTER_REGNUM] = 0; \  for (regno = 0; regno < 16; regno++)				\    if (regs_ever_live[regno] && ! call_used_regs[regno])	\      { nregs++; mask |= 1 << regno; }				\  offset = foffset + nregs * 4;					\  if (offset + fsize >= 0x8000 					\      && frame_pointer_needed 					\      && (mask || fmask || fpoffset)) 				\    { fprintf (FILE, "\tmov.l &%d,%%a0\n", -fsize);		\      fsize = 0, big = 1; }					\  if (exact_log2 (mask) >= 0) {					\    if (big)							\      fprintf (FILE, "\tmov.l -%d(%%a6,%%a0.l),%s\n",		\	       offset + fsize, reg_names[exact_log2 (mask)]);	\    else if (! frame_pointer_needed)				\      fprintf (FILE, "\tmov.l (%%sp)+,%s\n",			\	       reg_names[exact_log2 (mask)]);			\    else							\      fprintf (FILE, "\tmov.l -%d(%%a6),%s\n",			\	       offset + fsize, reg_names[exact_log2 (mask)]); }	\  else if (mask) {						\    if (big)							\      fprintf (FILE, "\tmovm.l -%d(%%a6,%%a0.l),&0x%x\n",	\	       offset + fsize, mask);				\    else if (! frame_pointer_needed)				\      fprintf (FILE, "\tmovm.l (%%sp)+,&0x%x\n", mask);		\    else							\      fprintf (FILE, "\tmovm.l -%d(%%a6),&0x%x\n",		\	       offset + fsize, mask); }				\  if (fmask) {							\    if (big)							\      fprintf (FILE, "\tfmovm -%d(%%a6,%%a0.l),&0x%x\n",	\	       foffset + fsize, fmask);				\    else if (! frame_pointer_needed)				\      fprintf (FILE, "\tfmovm (%%sp)+,&0x%x\n", fmask);		\    else							\      fprintf (FILE, "\tfmovm -%d(%%a6),&0x%x\n",		\	       foffset + fsize, fmask); }			\  if (fpoffset != 0)						\    for (regno = 55; regno >= 24; regno--)			\      if (regs_ever_live[regno] && ! call_used_regs[regno]) {	\	if (big)						\	  fprintf(FILE, "\tfpmoved -%d(%%a6,%%a0.l),%s\n",	\		  fpoffset + fsize, reg_names[regno]);		\	else if (! frame_pointer_needed)			\	  fprintf(FILE, "\tfpmoved (%%sp)+,%s\n",		\		  reg_names[regno]);				\	else							\	  fprintf(FILE, "\tfpmoved -%d(%%a6),%s\n",		\		  fpoffset + fsize, reg_names[regno]);		\	fpoffset -= 8;						\      }								\  if (current_function_returns_pointer)                         \    fprintf (FILE, "\tmov.l %%d0,%%a0\n");                      \  if (frame_pointer_needed)					\    fprintf (FILE, "\tunlk %%a6\n");				\  if (current_function_pops_args && current_function_args_size)	\    fprintf (FILE, "\trtd &%d\n", current_function_args_size);	\  else fprintf (FILE, "\trts\n"); }/* This is how to output an insn to push a register on the stack.   It need not be very fast code.  */#undef ASM_OUTPUT_REG_PUSH#define ASM_OUTPUT_REG_PUSH(FILE,REGNO)  \  fprintf (FILE, "\tmov.l %s,-(%%sp)\n", reg_names[REGNO])/* This is how to output an insn to pop a register from the stack.   It need not be very fast code.  */#undef ASM_OUTPUT_REG_POP#define ASM_OUTPUT_REG_POP(FILE,REGNO)  \  fprintf (FILE, "\tmov.l (%%sp)+,%s\n", reg_names[REGNO])#undef ASM_FILE_START#define ASM_FILE_START(FILE) \( fprintf (FILE, "#NO_APP\n"), \  sdbout_filename ((FILE), main_input_filename))#undef TEXT_SECTION_ASM_OP#define TEXT_SECTION_ASM_OP "\ttext"#undef DATA_SECTION_ASM_OP#define DATA_SECTION_ASM_OP "\tdata"/* This says how to output an assembler line to define a global common symbol.   We use SIZE rather than ROUNDED, as this is what the native cc does.  */#undef ASM_OUTPUT_COMMON#define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \( fputs ("\tcomm ", (FILE)),			\  assemble_name ((FILE), (NAME)),		\  fprintf ((FILE), ",%u\n", ((SIZE) == 0) ? (ROUNDED) : (SIZE)))/* This says how to output an assembler line to define a local common symbol.   We use SIZE rather than ROUNDED, as this is what the native cc does.  */#undef ASM_OUTPUT_LOCAL#define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \( fputs ("\tlcomm ", (FILE)),			\  assemble_name ((FILE), (NAME)),		\

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区在线免费观看 | 欧美网站大全在线观看| 免费成人av资源网| 午夜精品久久久久久久蜜桃app| 综合电影一区二区三区 | 一区二区欧美国产| 国产精品国产成人国产三级| 国产日韩欧美精品一区| 国产三级精品视频| 国产日本欧美一区二区| 中文字幕欧美三区| 中文字幕在线一区| 一区二区三区在线免费| 亚洲午夜免费电影| 日本伊人午夜精品| 国产一区二区三区久久悠悠色av| 国产一区二区不卡在线| 丁香亚洲综合激情啪啪综合| 国产成人精品综合在线观看| 99综合影院在线| 91国内精品野花午夜精品| 欧美乱妇20p| 日韩精品一区二区三区四区视频| 久久综合色播五月| 中文字幕视频一区| 婷婷综合在线观看| 国内欧美视频一区二区| 国v精品久久久网| 欧美性一级生活| 日韩午夜在线观看视频| 日本一区二区免费在线| 亚洲成人综合视频| 国产精品1区2区| 色成人在线视频| 日韩精品一区二| 亚洲理论在线观看| 国产综合久久久久影院| 日本国产一区二区| 久久综合丝袜日本网| 一区二区三区在线观看国产 | 久久久亚洲国产美女国产盗摄| 欧美国产乱子伦 | 国产精品天美传媒| 五月天婷婷综合| 成人蜜臀av电影| 欧美一区二区日韩一区二区| 国产精品五月天| 青青草成人在线观看| 成人av手机在线观看| 91精品婷婷国产综合久久竹菊| 国产日韩欧美a| 免费精品99久久国产综合精品| 成人晚上爱看视频| 精品久久久久久久久久久久久久久 | 亚洲男同性恋视频| 国产精品 日产精品 欧美精品| 欧美日韩高清不卡| 中文字幕亚洲精品在线观看| 激情文学综合丁香| 欧美久久久久久蜜桃| 一区二区三区免费在线观看| 国产91丝袜在线播放九色| 日韩一区和二区| 亚洲va天堂va国产va久| 日本精品一区二区三区高清| 欧美韩日一区二区三区四区| 久久99国产精品久久| 91精品国产麻豆| 日韩不卡免费视频| 欧美精品日韩一本| 亚洲高清免费观看高清完整版在线观看 | 婷婷久久综合九色国产成人 | 欧美大片拔萝卜| 天天综合色天天| 欧美亚洲自拍偷拍| 一区二区三区视频在线看| 99视频超级精品| 亚洲欧洲另类国产综合| 成人综合婷婷国产精品久久免费| 久久综合一区二区| 国产成人午夜精品影院观看视频| 日韩精品一区二区三区中文精品| 免费成人在线网站| 精品久久久久久久久久久久久久久久久 | 久久久噜噜噜久久中文字幕色伊伊| 五月婷婷久久综合| 日韩免费高清视频| 国产在线播放一区二区三区| 精品久久一二三区| 国产大陆亚洲精品国产| 日本一区二区三区在线观看| 成人a级免费电影| 亚洲日本中文字幕区| 色噜噜狠狠色综合中国| 亚洲午夜一区二区三区| 91精品视频网| 国产精品白丝jk白祙喷水网站 | 1区2区3区精品视频| 色婷婷精品久久二区二区蜜臂av| 一区二区国产视频| 欧美一区二区福利在线| 国产老女人精品毛片久久| 国产精品麻豆久久久| 色av一区二区| 日韩成人一级大片| 国产精品美女久久久久久久久久久| 99热在这里有精品免费| 日韩福利电影在线观看| 久久久影视传媒| 欧美在线观看一二区| 美国十次综合导航| 国产精品乱子久久久久| 欧美日韩中文另类| 国产成人免费视频一区| 亚洲成人精品影院| 欧美国产一区二区在线观看| 欧美日韩精品二区第二页| 国产.精品.日韩.另类.中文.在线.播放| 国产精品久久久久影院亚瑟| 欧美日韩一二区| av中文字幕一区| 久久精品国产在热久久| 亚洲丝袜制服诱惑| 久久综合一区二区| 91精品黄色片免费大全| 成人aa视频在线观看| 日本最新不卡在线| 亚洲精品ww久久久久久p站| 精品国产sm最大网站| 欧美日韩国产中文| 91亚洲永久精品| 国产综合色产在线精品| 日本欧美一区二区三区乱码| 亚洲欧美色图小说| 国产精品全国免费观看高清 | 日韩综合在线视频| 亚洲男女一区二区三区| 国产精品久久久久影视| xfplay精品久久| 日韩午夜在线播放| 在线不卡a资源高清| 欧美亚洲图片小说| 91浏览器入口在线观看| 成人ar影院免费观看视频| 国产成人夜色高潮福利影视| 久久国产夜色精品鲁鲁99| 日韩在线a电影| 五月天激情综合网| 亚洲成av人片在线观看| 一区二区三区欧美亚洲| 亚洲私人黄色宅男| 亚洲欧美偷拍卡通变态| 综合中文字幕亚洲| 亚洲欧美电影一区二区| 中文字幕在线不卡视频| 国产精品福利av| 国产欧美日韩三区| 国产精品素人视频| 中文字幕一区二区三区视频| 国产精品久久久久精k8| 国产精品久久久久久久岛一牛影视 | 99re这里都是精品| 99国产精品久| 在线观看91精品国产入口| 欧洲亚洲精品在线| 欧美日韩国产一级| 337p亚洲精品色噜噜狠狠| 欧美精品在线观看一区二区| 欧美日韩亚洲国产综合| 日韩视频在线观看一区二区| 亚洲精品在线免费播放| 久久精品男人天堂av| 国产精品高清亚洲| 午夜精品久久久久久久久 | 26uuu另类欧美亚洲曰本| 国产婷婷精品av在线| 自拍av一区二区三区| 亚洲成人www| 精品一二三四区| av资源站一区| 宅男噜噜噜66一区二区66| 日韩精品一区二区三区老鸭窝| 国产亚洲欧洲一区高清在线观看| 国产网红主播福利一区二区| 亚洲婷婷国产精品电影人久久| 一区二区三区四区在线免费观看| 偷拍一区二区三区| 国产精品99久| 欧美日免费三级在线| 久久综合色婷婷| 一区二区在线看| 国产美女精品在线| 在线免费观看日本欧美| 欧美成人欧美edvon| 亚洲视频资源在线| 成人av电影在线| 91精品国产一区二区三区香蕉| 亚洲国产精品高清| 日日夜夜精品视频免费| 色综合久久久久综合体桃花网|