📄 table.c
字号:
# include "mfile2"# define AWD SNAME|SOREG|SCON|STARNM|STARREG|SAREG# define LWD SNAME|SOREG|SCON|SAREGstruct optab table[] = {ASSIGN, INAREG|FOREFF|FORCC, AWD, TPOINT|TINT|TUNSIGNED|TCHAR|TUCHAR, SZERO, TANY, 0, RLEFT|RRIGHT|RESCC, " clrZB AL\n",ASSIGN, INAREG|FOREFF|FORCC, AWD, TINT|TUNSIGNED, AWD, TCHAR, NAREG|NASR, RLEFT|RESC1|RESCC, " movb AR,A1\n mov A1,AL\n",ASSIGN, INAREG|FOREFF|FORCC, AWD, TINT|TUNSIGNED, AWD, TUCHAR, 0, RLEFT|RESCC, " movb AR,AL\n bic $!377,AL\n",ASSIGN, INAREG|FOREFF|FORCC, AWD, TPOINT|TINT|TUNSIGNED|TCHAR|TUCHAR, AWD, TPOINT|TINT|TUNSIGNED|TCHAR|TUCHAR, 0, RLEFT|RRIGHT|RESCC, " movZB AR,AL\n",ASSIGN, INAREG|FOREFF, LWD, TLONG|TULONG, SZERO, TANY, 0, RLEFT|RRIGHT, " clr AL\n clr UL\n",ASSIGN, INAREG|FOREFF, LWD, TLONG|TULONG, LWD, TLONG|TULONG, 0, RLEFT|RRIGHT, " mov AR,AL\n mov UR,UL\n",ASSIGN, FOREFF|INAREG, STARNM, TLONG|TULONG, LWD, TLONG|TULONG, NAREG|NASL, RRIGHT, " mov ZU,A1\n mov AR,(A1)+\n mov UR,(A1)\n",ASSIGN, FOREFF, STARNM, TLONG|TULONG, AWD, TUNSIGNED|TPOINT, NAREG|NASL, RRIGHT, " mov ZU,A1\n clr (A1)+\n mov AR,(A1)\n",ASSIGN, FOREFF, STARNM, TLONG|TULONG, AWD, TINT, NAREG|NASL, RRIGHT, " mov ZU,A1\n mov AR,2(A1)\n sxt (A1)\n", /* PANIC! */ASSIGN, FOREFF|INAREG, STARNM, TLONG|TULONG, AWD, TUNSIGNED|TPOINT, NAREG|NASL|NASR, RESC1, "\tmov\tAR,-(sp)\n\tmov\tZU,A1\n\tclr\t(A1)+\n\tmov\t(sp)+,(A1)\ \nF\tmov\t(A1),U1\nF\tclr\tA1\n",ASSIGN, FOREFF|INAREG, STARNM, TLONG|TULONG, AWD, TINT, NAREG|NASL|NASR, RESC1, "\tmov\tAR,-(sp)\n\tmov\tZU,A1\n\tmov\t(sp)+,2(A1)\nF\tmov\t2(A1),U1\ \n\tsxt\t(A1)\nF\tsxt\tA1\n",ASSIGN, FOREFF|INAREG, STARNM, TLONG|TULONG, SAREG, TLONG|TULONG, 0, RRIGHT, " mov AR,AL\n mov ZU,AR\n mov UR,2(AR)\nF mov (AR),AR\n",ASSIGN, INAREG|FOREFF, LWD, TLONG|TULONG, AWD, TCHAR, NAREG, RESC1, " movb AR,U1\n mov U1,UL\n sxt AL\nF sxt A1\n",ASSIGN, INAREG|FOREFF, LWD, TLONG|TULONG, AWD, TUCHAR, 0, RLEFT, " movb AR,UL\n bic $!377,UL\n clr AL\n",ASSIGN, INAREG|FOREFF, LWD, TLONG|TULONG, AWD, TINT, 0, RLEFT, " mov AR,UL\n sxt AL\n",ASSIGN, INAREG|FOREFF, LWD, TLONG|TULONG, AWD, TUNSIGNED|TPOINT, 0, RLEFT, " mov AR,UL\n clr AL\n",ASSIGN, INBREG|INTBREG|FOREFF, AWD, TDOUBLE, SBREG, TDOUBLE, 0, RRIGHT, " movf AR,AL\n",ASSIGN, INBREG|INTBREG|FOREFF, AWD, TFLOAT, SBREG, TDOUBLE, 0, RRIGHT, " movfo AR,AL\n",ASSIGN, INAREG|FOREFF, SFLD, TANY, SZERO, TANY, 0, RRIGHT, " bic $M.,AL\n",ASSIGN, INTAREG|INAREG|FOREFF, SFLD, TANY, STAREG, TANY, 0, RRIGHT, "F\tmov\tAR,-(sp)\n\tash\t$H.,AR\n\tbic\t$!M.,AR\n\tbic\t$M.,AL\n\tbis\tAR,AL\nF\tmov\t(sp)+,AR\n",ASSIGN, INAREG|FOREFF, SFLD, TANY, AWD, TANY, NAREG, RRIGHT, "\tmov\tAR,A1\n\tash\t$H.,A1\n\tbic\t$!M.,A1\n\tbic\t$M.,AL\n\tbis\tA1,AL\n",ASSIGN, FOREFF, AWD, TFLOAT, AWD, TFLOAT, NBREG, RESC1, " movof AR,A1\n movfo A1,AL\n",/* put this here so UNARY MUL nodes match OPLTYPE when appropriate */UNARY MUL, INTAREG|INAREG, SANY, TANY, STARNM, TLONG|TULONG, NAREG|NASR, RESC1, " mov AL,U1\n mov (U1)+,A1\n mov (U1),U1\n",OPLTYPE, FOREFF, SANY, TANY, LWD, TANY, 0, RRIGHT, "", /* this entry throws away computations which don't do anything */OPLTYPE, INTAREG|INAREG, SANY, TANY, SZERO, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR, NAREG|NASR, RESC1, " clr A1\n",OPLTYPE, INTAREG|INAREG, SANY, TANY, SZERO, TLONG|TULONG, NAREG|NASR, RESC1, " clr A1\n clr U1\n",OPLTYPE, INTAREG|INAREG, SANY, TANY, SANY, TINT|TUNSIGNED|TPOINT|TCHAR, NAREG|NASR, RESC1, " movZB AR,A1\n",OPLTYPE, INTEMP, SANY, TANY, SANY, TINT|TUNSIGNED|TPOINT, NTEMP, RESC1, " mov AR,A1\n",OPLTYPE, FORCC, SANY, TANY, SANY, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR, 0, RESCC, " tstZB AR\n",OPLTYPE, FORARG, SANY, TANY, SANY, TINT|TUNSIGNED|TPOINT, 0, RNULL, " mov AR,Z-\n",OPLTYPE, INTAREG|INAREG, SANY, TANY, AWD, TUCHAR, NAREG|NASR, RESC1, " movb AR,A1\n bic $!377,A1\n",OPLTYPE, INTAREG|INAREG, SANY, TANY, LWD, TLONG|TULONG, NAREG, RESC1, " mov UR,U1\n mov AR,A1\n",OPLTYPE, INTAREG|INAREG, /* for use when there are no free regs */ SANY, TANY, LWD, TLONG|TULONG, NAREG|NASR, RESC1, " mov AR,-(sp)\n mov UR,U1\n mov (sp)+,A1\n",OPLTYPE, INTEMP, SANY, TANY, LWD, TLONG|TULONG, 2*NTEMP, RESC1, " mov AR,A1\n mov UR,U1\n",OPLTYPE, FORCC, SANY, TANY, LWD, TLONG|TULONG, 0, RESCC, "ZA",OPLTYPE, FORARG, SANY, TANY, LWD, TLONG|TULONG, 0, RNULL, " mov UR,Z-\n mov AR,Z-\n",UNARY MUL, FORARG, STARNM, TANY, SANY, TLONG|TULONG, NAREG|NASR, RNULL, " mov AL,A1\n mov 2(A1),Z-\n mov (A1),Z-\n",OPLTYPE, FORARG, SANY, TANY, SBREG, TDOUBLE, 0, RNULL, " movf AR,Z4\n",OPLTYPE, INTBREG|INBREG, SANY, TANY, AWD, TDOUBLE, NBREG, RESC1, " movf AR,A1\n",OPLTYPE, INTEMP, SANY, TANY, SBREG, TDOUBLE, 4*NTEMP, RESC1, " movf AR,A1\n",OPLTYPE, FORCC, SANY, TANY, AWD, TDOUBLE, 0, RESCC, " tstf AR\n cfcc\n",OPLTYPE, INTBREG|INBREG, SANY, TANY, AWD, TFLOAT, NBREG, RESC1, " movof AR,A1\n",OPLTYPE, FORCC, SANY, TANY, AWD, TFLOAT, NBREG, RESCC, " movof AR,A1\n cfcc\n",OPLOG, FORCC, AWD, TPOINT|TINT|TUNSIGNED, AWD, TPOINT|TINT|TUNSIGNED, 0, RESCC, " cmp AL,AR\nZI",OPLOG, FORCC, AWD, TCHAR|TUCHAR, AWD, TCHAR|TUCHAR, 0, RESCC, " cmpb AL,AR\nZI",OPLOG, FORCC, AWD, TCHAR|TUCHAR, SCCON, TINT, /* look for constants between -128 and 127 */ 0, RESCC, " cmpb AL,AR\nZI",OPLOG, FORCC, LWD, TLONG|TULONG, LWD, TLONG|TULONG, 0, RESCC, "ZCZI",OPLOG, FORCC, SBREG, TDOUBLE, AWD, TFLOAT, NBREG, RESCC, " movof AR,A1\n cmpf A1,AL\n cfcc\nZF",OPLOG, FORCC, SBREG, TDOUBLE, SBREG|AWD, TDOUBLE, 0, RESCC, " cmpf AR,AL\n cfcc\nZF",CCODES, INTAREG|INAREG, SANY, TANY, SANY, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR, NAREG, RESC1, " mov $1,A1\nZN",CCODES, INTAREG|INAREG, SANY, TANY, SANY, TLONG|TULONG, NAREG, RESC1, " clr A1\n mov $1,U1\nZN",UNARY MINUS, INTAREG|INAREG, STAREG, TINT|TUNSIGNED, SANY, TANY, 0, RLEFT, " neg AL\n",UNARY MINUS, INTAREG|INAREG, STAREG, TLONG|TULONG, SANY, TANY, 0, RLEFT, " neg AL\n neg UL\n sbc AL\n",UNARY MINUS, INTBREG|INBREG, STBREG, TDOUBLE, SANY, TANY, 0, RLEFT, " negf AL\n",COMPL, INTAREG|INAREG, STAREG, TINT|TUNSIGNED, SANY, TANY, 0, RLEFT, " com AL\n",INCR, INTAREG|INAREG|FOREFF, AWD, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR, SONE, TANY, NAREG, RESC1, "F movZB AL,A1\n incZB AL\n",DECR, INTAREG|INAREG|FOREFF, AWD, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR, SONE, TANY, NAREG, RESC1, "F movZB AL,A1\n decZB AL\n",INCR, INTAREG|INAREG|FOREFF, AWD, TINT|TUNSIGNED|TPOINT, SCON, TANY, NAREG, RESC1, "F mov AL,A1\n add AR,AL\n",DECR, INTAREG|INAREG|FOREFF, AWD, TINT|TUNSIGNED|TPOINT, SCON, TANY, NAREG, RESC1, "F mov AL,A1\n sub AR,AL\n",INCR, INTAREG|INAREG|FOREFF, LWD, TLONG|TULONG, SCON, TANY, NAREG, RESC1, "F mov AL,A1\nF mov UL,U1\n add AR,AL\n add UR,UL\n adc AL\n",DECR, INTAREG|INAREG|FOREFF, LWD, TLONG|TULONG, SCON, TANY, NAREG, RESC1, "F mov AL,A1\nF mov UL,U1\n sub AR,AL\n sub UR,UL\n sbc AL\n",COMPL, INTAREG|INAREG, STAREG, TLONG|TULONG, SANY, TANY, 0, RLEFT, " com AL\n com UL\n",AND, FORCC, AWD, TINT|TUNSIGNED|TPOINT, SCON, TANY, 0, RESCC, " bit AL,$Z~\n",ASG MUL, INAREG, STAREG, TINT|TUNSIGNED|TPOINT, AWD, TINT|TUNSIGNED|TPOINT, NAREG, RLEFT, " mul AR,AL\n",ASG DIV, INAREG, STAREG, TINT|TUNSIGNED|TPOINT, AWD, TINT|TUNSIGNED|TPOINT, NAREG, RESC1, "ZV div AR,r0\n", /* since lhs must be in r1 */ASG MOD, INAREG, STAREG, TINT|TUNSIGNED|TPOINT, AWD, TINT|TUNSIGNED|TPOINT, NAREG, RLEFT, "ZV div AR,r0\n", /* since lhs must be in r1 */ASG PLUS, INAREG|FORCC, AWD, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR, SONE, TINT, 0, RLEFT|RESCC, " incZB AL\n",ASG PLUS, INAREG|FORCC, AWD, TINT|TUNSIGNED|TPOINT, AWD, TINT|TUNSIGNED|TPOINT, 0, RLEFT|RESCC, " add AR,AL\n",ASG MINUS, INAREG|FORCC, AWD, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR, SONE, TINT, 0, RLEFT|RESCC, " decZB AL\n",ASG MINUS, INAREG|FORCC, AWD, TINT|TUNSIGNED|TPOINT,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -