Annotation of GNUtools/cctools/as/m88k-check.c, revision 1.1

1.1     ! root        1: #include <stdio.h>
        !             2: #include "m88k-opcode.h"
        !             3: 
        !             4: static int reg(void);
        !             5: static int creg(void);
        !             6: static int cnst(void);
        !             7: static void print_cond(void);
        !             8: static void print_cmp(void);
        !             9: 
        !            10: void
        !            11: main(
        !            12: int argc,
        !            13: char *argv[],
        !            14: char *envp[])
        !            15: {
        !            16:     long i, j;
        !            17: 
        !            18:        for(i = 0; i < NUMOPCODES - 1; i++){
        !            19:            printf("\t%s\t", m88k_opcodes[i].name);
        !            20:            if(m88k_opcodes[i].op[0].type == NIL)
        !            21:                printf("\n");
        !            22:            for(j = 0; j < 3 && m88k_opcodes[i].op[j].type != NIL; j++){
        !            23:                switch(m88k_opcodes[i].op[j].type){
        !            24:                case CNST:
        !            25: #ifdef SIGNED_IMMEDIATES
        !            26:                case SCNST:
        !            27: #endif
        !            28:                    printf("0x%04x", cnst() );
        !            29:                    break;
        !            30:                case REG:
        !            31:                    printf("r%d", reg() );
        !            32:                    break;
        !            33:                case BF:
        !            34:                    printf("%d<%d>", reg(), reg() );
        !            35:                    break;
        !            36:                case REGSC:
        !            37:                    printf("[r%d]", reg() );
        !            38:                    break;
        !            39:                case CRREG:
        !            40:                    printf("cr%d", creg() );
        !            41:                    break;
        !            42:                case FCRREG:
        !            43:                    printf("fcr%d", creg() );
        !            44:                    break;
        !            45:                case PCREL:
        !            46:                    printf("undef");
        !            47:                    break;
        !            48:                case CONDMASK:
        !            49:                    print_cond();
        !            50:                    break;
        !            51:                case CMPRSLT:
        !            52:                    print_cmp();
        !            53:                    break;
        !            54:                case ROT:
        !            55:                    printf("<%d>", reg() );
        !            56:                    break;
        !            57:                case E4ROT:
        !            58:                    printf("<%d>", creg() & ~0x3);
        !            59:                    break;
        !            60:                case EREG:
        !            61:                    printf("r%d", reg() & ~0x1);
        !            62:                    break;
        !            63:                case XREG:
        !            64:                    printf("x%d", reg());
        !            65:                    break;
        !            66:                }
        !            67:                if(j == 2 || m88k_opcodes[i].op[j+1].type == NIL)
        !            68:                    printf("\n");
        !            69:                else if(m88k_opcodes[i].op[j+1].type != REGSC)
        !            70:                    printf(",");
        !            71:            }
        !            72:        }
        !            73: }
        !            74: 
        !            75: static
        !            76: int
        !            77: reg(void)
        !            78: {
        !            79:      static int x = 1;
        !            80: 
        !            81:        x = (x + 1) & 0x1f;
        !            82:        return(x);
        !            83: }
        !            84: 
        !            85: static
        !            86: int
        !            87: creg(void)
        !            88: {
        !            89:      static int x = 1;
        !            90: 
        !            91:        x = (x + 1) & 0x3f;
        !            92:        return(x);
        !            93: }
        !            94: 
        !            95: static
        !            96: int
        !            97: cnst(void)
        !            98: {
        !            99:      static int x = 1;
        !           100: 
        !           101:        x = (x + 1) & 0xffff;
        !           102:        return(x);
        !           103: }
        !           104: 
        !           105: static
        !           106: void
        !           107: print_cond(void)
        !           108: {
        !           109:      static int x = 1;
        !           110: 
        !           111:        x = (x + 1) & 0x1f;
        !           112:        switch(x){
        !           113:        case 0x02:
        !           114:            printf("eq0");
        !           115:            break;
        !           116:        case 0x0d:
        !           117:            printf("ne0");
        !           118:            break;
        !           119:        case 0x01:
        !           120:            printf("gt0");
        !           121:            break;
        !           122:        case 0x0c:
        !           123:            printf("lt0");
        !           124:            break;
        !           125:        case 0x03:
        !           126:            printf("ge0");
        !           127:            break;
        !           128:        case 0x0e:
        !           129:            printf("le0");
        !           130:            break;
        !           131:        default:
        !           132:            printf("%d", x);
        !           133:        }
        !           134: }
        !           135: 
        !           136: static
        !           137: char *cmpslot[] = { "**", "**", "eq", "ne", "gt", "le", "lt", "ge",
        !           138:                    "hi", "ls", "lo", "hs", "be", "nb", "he", "nh" };
        !           139: static
        !           140: void
        !           141: print_cmp(void)
        !           142: {
        !           143:      static int x = 1;
        !           144: 
        !           145:        x = (x + 1) & 0x1f;
        !           146:        if(x < 2 || x > 15)
        !           147:            printf("%d", x);
        !           148:        else
        !           149:            printf("%s", cmpslot[x]);
        !           150: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.