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

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

?? i386.md

?? 這是完整的gcc源代碼
?? MD
?? 第 1 頁 / 共 4 頁
字號:
;; GCC machine description for Intel 80386.;; Copyright (C) 1988 Free Software Foundation, Inc.;; Mostly by William Schelter.;; This file is part of GNU CC.;; GNU CC 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 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 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 GNU CC; see the file COPYING.  If not, write to;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.;;- instruction definitions;;- @@The original PO technology requires these to be ordered by speed,;;- @@    so that assigner will pick the fastest.;;- See file "rtl.def" for documentation on define_insn, match_*, et. al.;;- When naming insn's (operand 0 of define_insn) be careful about using;;- names from other targets machine descriptions.;;- cpp macro #define NOTICE_UPDATE_CC in file tm.h handles condition code;;- updates for most instructions.;;- Operand classes for the register allocator:;;- 'a' for eax;;- 'd' for edx;;- 'c' for ecx;;- 'b' for ebx;;- 'f' for anything in FLOAT_REGS;;- 'r' any (non-floating-point) register;;- 'q' regs that allow byte operations (A, B, C and D);;- 'A' A and D registers;; the special asm out single letter directives following a '%' are:;; 'z' mov%z1 would be movl, movw, or movb depending on the mode of operands[1];; 's' output a '*';; 'w' If the operand is a REG, it uses the mode size to determine the;;      printing of the reg;; Put tstsi first among test insns so it matches a CONST_INT operand.(define_insn "tstsi"  [(set (cc0)	(match_operand:SI 0 "general_operand" "rm"))]  ""  "*{  operands[1] = const0_rtx;  if (REG_P (operands[0]))    return AS2 (test%L0,%0,%0);  return AS2 (cmp%L0,%1,%0);}")(define_insn "tsthi"  [(set (cc0)	(match_operand:HI 0 "general_operand" "rm"))]  ""  "*{  operands[1] = const0_rtx;  if (REG_P (operands[0]))    return AS2 (test%W0,%0,%0);  return AS2 (cmp%W0,%1,%0);}")(define_insn "tstqi"  [(set (cc0)	(match_operand:QI 0 "general_operand" "qm"))]  ""  "*{  operands[1] = const0_rtx;  if (REG_P (operands[0]))    return AS2 (test%B0,%0,%0);  return AS2 (cmp%B0,%1,%0);}")(define_insn "tstsf"  [(set (cc0)	(match_operand:SF 0 "general_operand" "rm,f"))   (clobber (reg:SI 0))]  "TARGET_80387"  "*{  rtx xops[1];  if (!FP_REG_P (operands[0]))    fp_push_sf (operands[0]);/*  fp_pop_level--; */  xops[0] = FP_TOP;  cc_status.flags |= CC_IN_80387;  if (FP_REG_P (operands[0]) && ! top_dead_p (insn))    output_asm_insn (\"ftst\;fnstsw %R0ax\;sahf\", xops);  else    output_asm_insn (\"ftst\;fstp %0(0)\;fnstsw %R0ax\;sahf\", xops);  RETCOM (testsf);}")(define_insn "tstdf"  [(set (cc0)	(match_operand:DF 0 "general_operand" "rm,f"))   (clobber (reg:SI 0))   ]  "TARGET_80387"  "*{  rtx xops[1];  if (!FP_REG_P (operands[0]))    fp_push_df (operands[0]);/*  fp_pop_level--; */  xops[0] = FP_TOP;  cc_status.flags |= CC_IN_80387;  if (FP_REG_P (operands[0]) && ! top_dead_p (insn))    output_asm_insn (\"ftst\;fnstsw %R0ax\;sahf\", xops);  else    output_asm_insn (\"ftst\;fstp %0(0)\;fnstsw %R0ax\;sahf\", xops);  RETCOM (testdf);}");;- compare instructions;; Put cmpsi first among compare insns so it matches two CONST_INT operands.(define_insn "cmpsi"  [(set (cc0)	(compare (match_operand:SI 0 "general_operand" "mr,ri")		 (match_operand:SI 1 "general_operand" "ri,mr")))]  ""  "*{  if (REG_P (operands[1])      || (!REG_P (operands[0]) && GET_CODE (operands[0]) != MEM))    {      cc_status.flags |= CC_REVERSED;      return AS2 (cmp%L0,%0,%1);    }  return AS2 (cmp%L0,%1,%0);}")(define_insn "cmphi"  [(set (cc0)	(compare (match_operand:HI 0 "general_operand" "mr,ri")		 (match_operand:HI 1 "general_operand" "ri,mr")))]  ""  "*{  if (REG_P (operands[1])      || (!REG_P (operands[0]) && GET_CODE (operands[0]) != MEM))    {      cc_status.flags |= CC_REVERSED;      return AS2 (cmp%W0,%0,%1);    }  return AS2 (cmp%W0,%1,%0);}")(define_insn "cmpqi"  [(set (cc0)	(compare (match_operand:QI 0 "general_operand" "qn,mq")		 (match_operand:QI 1 "general_operand" "qm,nq")))]  ""  "*{  if (REG_P (operands[1])      || (!REG_P (operands[0]) && GET_CODE (operands[0]) != MEM))    {      cc_status.flags |= CC_REVERSED;      return AS2 (cmp%B0,%0,%1);    }  return AS2 (cmp%B0,%1,%0);}")(define_insn "cmpdf"  [(set (cc0)	(compare (match_operand:DF 0 "general_operand" "m,f*r,m,f,r,!*r")		 (match_operand:DF 1 "general_operand" "m,m,f*r,r,f,*r")))      (clobber (reg:SI 0))]  "TARGET_80387"  "*{  if (FP_REG_P (operands[0]))    {      rtx tem = operands[1];      operands[1] = operands[0];      operands[0] = tem;      cc_status.flags |= CC_REVERSED;    }  if (! FP_REG_P (operands[1]))    output_movdf (FP_TOP, operands[1]);  output_movdf (FP_TOP, operands[0]);/*  fp_pop_level--;  fp_pop_level--; */  cc_status.flags |= CC_IN_80387;  return \"fcompp\;fnstsw %R0ax\;sahf\";}")(define_insn "cmpsf"  [(set (cc0)	(compare (match_operand:SF 0 "general_operand" "m,f*r,m,f,r,!*r")		 (match_operand:SF 1 "general_operand" "m,m,f*r,r,f,*r")))   (clobber (reg:SI 0))]  "TARGET_80387"  "*{  if (FP_REG_P (operands[0]))    {      rtx tem = operands[1];      operands[1] = operands[0];      operands[0] = tem;      cc_status.flags |= CC_REVERSED;    }  if (! FP_REG_P (operands[1]))    output_movsf (FP_TOP, operands[1]);  output_movsf (FP_TOP, operands[0]);/*  fp_pop_level--;  fp_pop_level--; */  cc_status.flags |= CC_IN_80387;  return \"fcompp\;fnstsw %R0ax\;sahf\";}");; logical compare(define_insn ""  [(set (cc0)	(and:SI (match_operand:SI 0 "general_operand" "rm,ri")		(match_operand:SI 1 "general_operand" "ri,rm")))]  ""  "*{  if (CONSTANT_P (operands[1]) || GET_CODE (operands[0]) == MEM)    return AS2 (test%L0,%1,%0);  return AS2 (test%L0,%0,%1);}")(define_insn ""  [(set (cc0)	(and:HI (match_operand:HI 0 "general_operand" "rm,ri")		(match_operand:HI 1 "general_operand" "ri,rm")))]  ""  "*{  if (CONSTANT_P (operands[1]) || GET_CODE (operands[0]) == MEM)    return AS2 (test%W0,%1,%0);  return AS2 (test%W0,%0,%1);}")(define_insn ""  [(set (cc0)	(and:QI (match_operand:QI 0 "general_operand" "qm,qi")		(match_operand:QI 1 "general_operand" "qi,qm")))]  ""  "*{  if (CONSTANT_P (operands[1]) || GET_CODE (operands[0]) == MEM)    return AS2 (test%B0,%1,%0);  return AS2 (test%B0,%0,%1);}");; move instructions.;; There is one for each machine mode,;; and each is preceded by a corresponding push-insn pattern;; (since pushes are not general_operands on the 386).(define_insn ""  [(set (match_operand:SI 0 "push_operand" "=<")	(match_operand:SI 1 "general_operand" "g"))]  ""  "push%L0 %1");; General case of fullword move.(define_insn "movsi"  [(set (match_operand:SI 0 "general_operand" "=g,r")	(match_operand:SI 1 "general_operand" "ri,m"))]  ""  "*{  rtx link;  if (operands[1] == const0_rtx && REG_P (operands[0]))    return \"xor%L0 %0,%0\";  if (operands[1] == const1_rtx      && (link = find_reg_note (insn, REG_WAS_0, 0))      /* Make sure the insn that stored the 0 is still present.  */      && ! XEXP (link, 0)->volatil      && GET_CODE (XEXP (link, 0)) != NOTE      /* Make sure cross jumping didn't happen here.  */      && no_labels_between_p (XEXP (link, 0), insn))    /* Fastest way to change a 0 to a 1.  */    return \"inc%L0 %0\";  return \"mov%L0 %1,%0\";}")(define_insn ""  [(set (match_operand:HI 0 "push_operand" "=<")	(match_operand:HI 1 "general_operand" "g"))]  ""  "push%W0 %1")(define_insn "movhi"  [(set (match_operand:HI 0 "general_operand" "=g,r")	(match_operand:HI 1 "general_operand" "ri,m"))]  ""  "*{  rtx link;  if (operands[1] == const0_rtx && REG_P (operands[0]))    return \"xor%W0 %0,%0\";  if (operands[1] == const1_rtx      && (link = find_reg_note (insn, REG_WAS_0, 0))      /* Make sure the insn that stored the 0 is still present.  */      && ! XEXP (link, 0)->volatil      && GET_CODE (XEXP (link, 0)) != NOTE      /* Make sure cross jumping didn't happen here.  */      && no_labels_between_p (XEXP (link, 0), insn))    /* Fastest way to change a 0 to a 1.  */    return \"inc%W0 %0\";  return \"mov%W0 %1,%0\";}");; emit_push_insn when it calls move_by_pieces;; requires an insn to "push a byte".;; But actually we use pushw, which has the effect of rounding;; the amount pushed up to a halfword.(define_insn ""  [(set (match_operand:QI 0 "push_operand" "=<")	(match_operand:QI 1 "general_operand" "q"))]  ""  "*{  operands[1] = gen_rtx (REG, HImode, REGNO (operands[1]));  return \"push%W0 %1\";}")(define_insn "movqi"  [(set (match_operand:QI 0 "general_operand" "=q,*r,m")	(match_operand:QI 1 "general_operand" "*g,q,qi"))]  ""  "*{  rtx link;  if (operands[1] == const0_rtx && REG_P (operands[0]))    return \"xor%B0 %0,%0\";  if (operands[1] == const1_rtx      && (link = find_reg_note (insn, REG_WAS_0, 0))      /* Make sure the insn that stored the 0 is still present.  */      && ! XEXP (link, 0)->volatil      && GET_CODE (XEXP (link, 0)) != NOTE      /* Make sure cross jumping didn't happen here.  */      && no_labels_between_p (XEXP (link, 0), insn))    /* Fastest way to change a 0 to a 1.  */    return \"inc%B0 %0\";  /* If mov%B0 isn't allowed for one of these regs, use mov%W0.  */  if (NON_QI_REG_P (operands[0]) || NON_QI_REG_P (operands[1]))    return (AS2 (mov%W0,%w1,%w0));  return (AS2 (mov%B0,%1,%0));}"); I suspect nothing can ever match this ???;(define_insn "";  [(set (match_operand:SF 0 "general_operand" "rm");	(match_operand:SF 1 "general_operand" "f"));   (clobber (reg:SF 8))];  "";  "*;{;  output_asm_insn ("???", operands);;  fpop_sf (operands[0]);;  RETCOM (movsf_clobber);;}")(define_insn ""  [(set (match_operand:SF 0 "push_operand" "=<,<")	(match_operand:SF 1 "general_operand" "gF,f"))]  ""  "*{  if (FP_REG_P (operands[1]))    {      rtx xops[3];      xops[0] = AT_SP (SFmode);      xops[1] = gen_rtx (CONST_INT, VOIDmode, 4);      xops[2] = stack_pointer_rtx;/*      fp_pop_level--; */      output_asm_insn (AS2 (sub%L0,%1,%2), xops);      if (top_dead_p (insn))        output_asm_insn (\"fstp%S0 %0\", xops);      else        output_asm_insn (\"fst%S0 %0\", xops);      RET;    }  return \"push%L0 %1\";}")(define_insn "movsf"  ;; `rf' is duplicated in the second alternative  ;; to make sure an optional reload is generated  ;; for the memref in operand 0.  Otherwise  ;; we could use too many hard regs.  [(set (match_operand:SF 0 "general_operand" "=rf,mrf,!rm")	(match_operand:SF 1 "general_operand" "mrf,rf,F"))]  ""  "*{  if (FP_REG_P (operands[1])      && !FP_REG_P (operands[0])      && !top_dead_p (insn))    fp_store_sf (operands[0]);  else    output_movsf (operands[0], operands[1]);  RETCOM (movsf);}");;should change to handle the memory operands[1] without doing df push..(define_insn ""  [(set (match_operand:DF 0 "push_operand" "=<,<")	(match_operand:DF 1 "general_operand" "gF,f"))]  ""  "*{  if (FP_REG_P (operands[1]))    {      rtx xops[3];      xops[0] = AT_SP (DFmode);      xops[1] = gen_rtx (CONST_INT, VOIDmode, 8);      xops[2] = stack_pointer_rtx;/*      fp_pop_level--; */      output_asm_insn (AS2 (sub%L0,%1,%2), xops);      if (top_dead_p(insn))        output_asm_insn (\"fstp%Q0 %0\", xops);      else        output_asm_insn (\"fst%Q0 %0\", xops);      RETCOM (pushdf);    }  else    return output_move_double (operands);}")(define_insn "movdf"  [(set (match_operand:DF 0 "general_operand" "=rmf,&fr,!rm")	;; `rf' is duplicated in the second alternative	;; to make sure that optional reloads are generated	;; for the memory reference in operand 1.	(match_operand:DF 1 "general_operand" "fr,mrf,F"))]  ""  "*{  if (FP_REG_P (operands[1])      && ! FP_REG_P (operands[0])      && ! top_dead_p (insn))    fp_store_df (operands[0]);  else    output_movdf (operands[0], operands[1]);  RETCOM (movdf);}")(define_insn ""  [(set (match_operand:DI 0 "push_operand" "=<")	(match_operand:DI 1 "general_operand" "roiF"))]  ""  "*{  return output_move_double (operands);}")(define_insn "movdi"  [(set (match_operand:DI 0 "general_operand" "=&r,rm")	(match_operand:DI 1 "general_operand" "m,riF"))]  ""  "*{   return output_move_double (operands);}");; These go after the move instructions;; because the move instructions are better (require no spilling);; when they can apply.  But these go before the add and subtract insns;; because it is often shorter to use these when both apply.;Lennart Augustsson <augustss@cs.chalmers.se>;says this pattern just makes slower code:;	pushl	%ebp;	addl	$-80,(%esp);instead of;	leal	-80(%ebp),%eax;	pushl	%eax;;(define_insn "";  [(set (match_operand:SI 0 "push_operand" "=<");	(plus:SI (match_operand:SI 1 "general_operand" "%r");		 (match_operand:SI 2 "general_operand" "ri")))];  "";  "*;{;  rtx xops[4];;  xops[0] = operands[0];;  xops[1] = operands[1];;  xops[2] = operands[2];;  xops[3] = gen_rtx (MEM, SImode, stack_pointer_rtx);;  output_asm_insn (\"push%z1 %1\", xops);;  output_asm_insn (AS2 (add%z3,%2,%3), xops);;  RET;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久久一| 麻豆一区二区在线| 午夜视频一区在线观看| 久久草av在线| 91黄视频在线| 欧美高清在线视频| 蓝色福利精品导航| 在线视频你懂得一区| 国产亚洲欧美激情| 日韩国产欧美在线观看| 一本大道久久a久久精二百| 精品成人私密视频| 视频一区二区中文字幕| 91蜜桃免费观看视频| 国产日韩欧美一区二区三区乱码 | 欧美日韩亚洲另类| 国产欧美精品一区aⅴ影院| 三级在线观看一区二区| 色婷婷综合久久久中文字幕| 久久久一区二区| 另类欧美日韩国产在线| 欧美精品久久一区二区三区| 亚洲免费观看视频| av一本久道久久综合久久鬼色| 精品剧情在线观看| 日本不卡免费在线视频| 欧美精选午夜久久久乱码6080| 伊人性伊人情综合网| 91视频观看免费| 国产精品久久久久久久久免费相片| 麻豆一区二区在线| 精品入口麻豆88视频| 麻豆精品视频在线观看免费 | 欧美疯狂性受xxxxx喷水图片| 亚洲老司机在线| 色婷婷国产精品久久包臀| 自拍偷拍国产亚洲| 97成人超碰视| 亚洲人成精品久久久久久| 99久久久无码国产精品| 成人欧美一区二区三区| 色综合久久综合网欧美综合网| 国产精品素人一区二区| 欧美老人xxxx18| 日韩和欧美一区二区| 337p亚洲精品色噜噜噜| 日韩av一区二区在线影视| 欧美一区二区日韩| 国内久久精品视频| 久久久夜色精品亚洲| 成人精品视频.| 综合激情网...| 欧美午夜精品免费| 青青青爽久久午夜综合久久午夜 | 在线观看日韩av先锋影音电影院| 亚洲啪啪综合av一区二区三区| 色综合久久久久网| 日韩高清不卡一区二区三区| 日韩欧美一区二区免费| 国产精品1区二区.| 亚洲欧美日韩国产另类专区| 欧美绝品在线观看成人午夜影视| 久久精品国产第一区二区三区| 亚洲精品一区二区三区在线观看 | 色综合一个色综合亚洲| 午夜不卡av在线| 2019国产精品| 91麻豆免费在线观看| 午夜精品福利一区二区三区av| 日韩美女天天操| 91亚洲国产成人精品一区二区三| 午夜久久久影院| 国产午夜精品一区二区三区嫩草 | 亚洲在线观看免费| 久久蜜桃av一区二区天堂| 97久久人人超碰| 日本视频免费一区| 中文字幕在线观看一区二区| 欧美精品 国产精品| av一区二区三区| 久久精品99国产国产精| 亚洲色图清纯唯美| 欧美www视频| 欧美日韩精品一区二区天天拍小说 | 久久―日本道色综合久久| 99久久精品国产毛片| 免费的国产精品| 亚洲一区二区三区中文字幕在线| 精品国产乱码久久| 欧美日韩一级黄| eeuss鲁一区二区三区| 久久99九九99精品| 一区二区不卡在线播放| 国产欧美日韩综合| 精品福利视频一区二区三区| 在线观看日韩一区| 成人av在线播放网址| 久久精品久久综合| 日本成人在线电影网| 国产精品一区二区x88av| 婷婷久久综合九色国产成人 | 丝瓜av网站精品一区二区 | 国产精品系列在线| 日韩精品在线看片z| 欧美天堂亚洲电影院在线播放| 99久久er热在这里只有精品66| 国内不卡的二区三区中文字幕| 奇米精品一区二区三区在线观看 | 国产精品国产自产拍高清av王其| 精品国内二区三区| 精品国产乱码久久久久久久| 精品日本一线二线三线不卡| 欧美一区二区精品在线| 欧美日韩电影在线播放| 欧美亚洲日本一区| 色婷婷精品大在线视频| 在线免费精品视频| 欧美日韩一区三区| 欧美日韩中文字幕精品| 精品视频在线免费观看| 欧美日韩五月天| 欧美日韩mp4| 日韩欧美123| 久久婷婷综合激情| 亚洲国产精品ⅴa在线观看| 国产亚洲制服色| 国产精品免费人成网站| 亚洲欧洲另类国产综合| 亚洲欧美一区二区三区极速播放| 亚洲天堂免费看| 亚洲天堂精品视频| 亚洲国产日韩a在线播放性色| 亚洲va欧美va人人爽午夜 | 欧美久久久久中文字幕| 91精品国产麻豆国产自产在线 | 欧美嫩在线观看| 日韩欧美黄色影院| 国产日本一区二区| 中文天堂在线一区| 夜夜嗨av一区二区三区网页| 日韩成人精品在线观看| 国产高清久久久| 色婷婷av一区二区三区大白胸| 欧美日韩精品欧美日韩精品| 日韩精品一区二区三区蜜臀 | 欧美激情在线观看视频免费| 国产精品久久精品日日| 亚洲成人精品一区| 经典三级视频一区| 色婷婷av久久久久久久| 欧美一区二区啪啪| 亚洲三级久久久| 日本v片在线高清不卡在线观看| 国模冰冰炮一区二区| 91香蕉视频mp4| 日韩美女视频一区二区在线观看| 国产日韩三级在线| 亚洲电影激情视频网站| 国产成人精品免费| 欧美日韩中文字幕精品| 欧美国产精品一区二区| 日韩国产在线观看一区| 波多野结衣一区二区三区| 欧美三级电影精品| 国产精品久久久久毛片软件| 日韩成人av影视| 91亚洲男人天堂| 欧美精品一区二区在线观看| 一区二区三区四区视频精品免费 | 亚洲狼人国产精品| 激情小说欧美图片| 欧美日韩国产电影| 自拍av一区二区三区| 九一九一国产精品| 欧美日韩亚洲丝袜制服| 国产精品久久毛片| 国产在线播放一区二区三区| 欧美日本国产视频| 亚洲香蕉伊在人在线观| 成av人片一区二区| 久久久久九九视频| 久久66热re国产| 日韩午夜精品视频| 精品一区二区三区香蕉蜜桃 | 91国产视频在线观看| 久久久激情视频| 久久69国产一区二区蜜臀| 欧美日韩第一区日日骚| 一区二区三区欧美| av成人动漫在线观看| 国产亚洲欧美激情| 国产麻豆日韩欧美久久| 精品国产一区二区三区忘忧草| 午夜精品视频在线观看| 日本道免费精品一区二区三区| 日韩毛片视频在线看| 成人一级视频在线观看| 2023国产精品| 韩国av一区二区| 国产无人区一区二区三区|