⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ops

📁 c语言编译器
💻
字号:
#line 2 "etc/ops.nw"#include "../rcc/c.h"/* ops [ {csilhfdxp}=n ]... * prints lcc dag operator set for a given set of type sizes. */static char rcsid[] = "$Id: ops.nw,v 1.2 1997/07/03 16:17:11 drh Exp $";static char list[] = { 'c', 's', 'i', 'l', 'h', 'f', 'd', 'x', 'p', 0 };static int sizes[] = {  1,   2,   4,   4,   8,   4,   8,  16,   8 };static int doop(int op, int type, const char *sz, const char *opname) {        int count = 0;        static int last;        if (op == LOAD)                return 0;        if (last != 0 && last != op)                printf("\n");        last = op;        if (type == B || type == V) {                printf(" %s=%d", opname, op + type);                count++;        } else {                int i, done = 0;                const char *s;                for (i = 0; sz[i] != '\0' && (s = strchr(list, sz[i])) != NULL; i++) {                        int n = sizes[s-list];                        if ((done&(1<<n)) == 0) {                                printf(" %s%d=%d", opname, n, op + type + sizeop(n));                                count++;                        }                        done |= 1<<n;                }        }        printf("\n");        return count;}int main(int argc, char *argv[]) {        int i, count = 0;        for (i = 1; i < argc; i++) {                char c, *s;                int n;                if (sscanf(argv[i], "%c=%d", &c, &n) == 2                && n > 0 && (s = strchr(list, c)) != NULL)                        sizes[s-list] = n;                else {                        fprintf(stderr, "usage: %s [ {csilhfdxp}=n ]...\n", argv[0]);                        exit(EXIT_FAILURE);                }        }#define gop(x,n)#define op(x,t,s) count += doop(x,t,#s,#x #t);#line 246 "book/inter.nw"gop(CNST,1)        op(CNST,F,fdx)        op(CNST,I,csilh)        op(CNST,P,p)        op(CNST,U,csilh)gop(ARG,2)        op(ARG,B,-)        op(ARG,F,fdx)        op(ARG,I,ilh)        op(ARG,P,p)        op(ARG,U,ilh)gop(ASGN,3)        op(ASGN,B,-)        op(ASGN,F,fdx)        op(ASGN,I,csilh)        op(ASGN,P,p)        op(ASGN,U,csilh)gop(INDIR,4)        op(INDIR,B,-)        op(INDIR,F,fdx)        op(INDIR,I,csilh)        op(INDIR,P,p)        op(INDIR,U,csilh)gop(CVF,7)        op(CVF,F,fdx)        op(CVF,I,ilh)gop(CVI,8)        op(CVI,F,fdx)        op(CVI,I,csilh)        op(CVI,U,csilhp)gop(CVP,9)        op(CVP,U,p)gop(CVU,11)        op(CVU,I,csilh)        op(CVU,P,p)        op(CVU,U,csilh)gop(NEG,12)        op(NEG,F,fdx)        op(NEG,I,ilh)gop(CALL,13)        op(CALL,B,-)        op(CALL,F,fdx)        op(CALL,I,ilh)        op(CALL,P,p)        op(CALL,U,ilh)        op(CALL,V,-)gop(RET,15)        op(RET,F,fdx)        op(RET,I,ilh)        op(RET,P,p)        op(RET,U,ilh)        op(RET,V,-)gop(ADDRG,16)        op(ADDRG,P,p)gop(ADDRF,17)        op(ADDRF,P,p)gop(ADDRL,18)        op(ADDRL,P,p)gop(ADD,19)        op(ADD,F,fdx)        op(ADD,I,ilh)        op(ADD,P,p)        op(ADD,U,ilhp)gop(SUB,20)        op(SUB,F,fdx)        op(SUB,I,ilh)        op(SUB,P,p)        op(SUB,U,ilhp)gop(LSH,21)        op(LSH,I,ilh)        op(LSH,U,ilh)gop(MOD,22)        op(MOD,I,ilh)        op(MOD,U,ilh)gop(RSH,23)        op(RSH,I,ilh)        op(RSH,U,ilh)gop(BAND,24)        op(BAND,I,ilh)        op(BAND,U,ilh)gop(BCOM,25)        op(BCOM,I,ilh)        op(BCOM,U,ilh)gop(BOR,26)        op(BOR,I,ilh)        op(BOR,U,ilh)gop(BXOR,27)        op(BXOR,I,ilh)        op(BXOR,U,ilh)gop(DIV,28)        op(DIV,F,fdx)        op(DIV,I,ilh)        op(DIV,U,ilh)gop(MUL,29)        op(MUL,F,fdx)        op(MUL,I,ilh)        op(MUL,U,ilh)gop(EQ,30)        op(EQ,F,fdx)        op(EQ,I,ilh)        op(EQ,U,ilhp)gop(GE,31)        op(GE,F,fdx)        op(GE,I,ilh)        op(GE,U,ilhp)gop(GT,32)        op(GT,F,fdx)        op(GT,I,ilh)        op(GT,U,ilhp)gop(LE,33)        op(LE,F,fdx)        op(LE,I,ilh)        op(LE,U,ilhp)gop(LT,34)        op(LT,F,fdx)        op(LT,I,ilh)        op(LT,U,ilhp)gop(NE,35)        op(NE,F,fdx)        op(NE,I,ilh)        op(NE,U,ilhp)gop(JUMP,36)        op(JUMP,V,-)gop(LABEL,37)        op(LABEL,V,-)gop(LOAD,14)        op(LOAD,B,-)        op(LOAD,F,fdx)        op(LOAD,I,csilh)        op(LOAD,P,p)        op(LOAD,U,csilhp)#line 58 "etc/ops.nw"#undef gop#undef op        fprintf(stderr, "%d operators\n", count);        return EXIT_SUCCESS;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -