Annotation of researchv9/cmd/sun/c2/awkprog, revision 1.1.1.1

1.1       root        1: #
                      2: # @(#)awkprog 1.1 86/02/03 SMI
                      3: #
                      4: 
                      5: BEGIN{
                      6:        flavor = "AS"
                      7:        FS = " "
                      8:        MNEMONIC = 1
                      9:        OPTYPE = 2
                     10:        SUBOP = 3
                     11:        OPCODES = 4
                     12:        TOUCHOP = 5
                     13:        OPACCESS = 6
                     14:        CCODES = 7
                     15:        NASSOC = 8
                     16:        MACHINE  = 9
                     17: }
                     18: {
                     19:        if (NF == 0){
                     20:                printf("\n")
                     21:                next
                     22:        }
                     23:        if ($MNEMONIC == "FLAVOR"){
                     24:                flavor = $OPTYPE
                     25:                next
                     26:        }
                     27:        if ($MNEMONIC == "##"){
                     28:                next
                     29:        }
                     30:        nop = split( $OPTYPE, op, "," )
                     31:        noperand = split( $TOUCHOP, touch, ",")
                     32:        if (flavor == "C2"){
                     33:            if ( $OPTYPE == "PSEUDO" ){
                     34:                # flavor is C2, and this is a pseudoop
                     35:                nop = split( $3, op, "," )
                     36:                printf( "P(\"%s\", OP_%s, %d, %d, SUBOP_%s )\n", $MNEMONIC, op[2], $5, $7, $4 )
                     37:                next
                     38:            }
                     39:            # flavor is C2, this is a machine instruction.
                     40:            if ( nop == 2){
                     41:                $OPTYPE = op[2]
                     42:            } else if ( $OPTYPE == "JBRNCH" || $OPTYPE == "cp_branch" ) {
                     43:                $OPTYPE = "BRANCH"
                     44:            } else if ( $OPTYPE != "BRANCH" && $OPTYPE != "DBRA" ) {
                     45:                $OPTYPE = "OTHER"
                     46:            } 
                     47:            if ( $OPTYPE != "BRANCH" && $OPTYPE != "DBRA" && $OPTYPE != "FBRANCH" && $OPTYPE != "FDBRA" ) {
                     48:                $SUBOP = "SUBOP_" $SUBOP
                     49:            }
                     50:            printf( "I(\"%s\", OP_%s, %s, ", $MNEMONIC, $OPTYPE, $SUBOP )
                     51:            if (touch[1] == "X"){
                     52:                printf("T_X, ")
                     53:                noperand = 0
                     54:            } else {
                     55:                if (noperand == 1){
                     56:                    printf("T_ONE(%s),", $TOUCHOP)
                     57:                } else if (noperand == 2){
                     58:                    printf("T_TWO(%s),", $TOUCHOP)
                     59:                } else {
                     60:                    printf("T_THREE(%s),",$TOUCHOP)
                     61:                }
                     62:            }
                     63:            printf( "%d, %s, %d, ", noperand, $CCODES, $NASSOC )
                     64:            naccess = split( $OPACCESS, access, ",")
                     65:            # next, go print OPACCESS info.
                     66:        } else if (flavor == "AS"){
                     67:            if ( $OPTYPE == "PSEUDO"){
                     68:                # flavor is AS, this is a pseodoop
                     69:                nop = split( $3, op, "," )
                     70:                if ($8 == "") $8 = "0"
                     71:                naccess = split( $8, access, ",")
                     72:                printf( "P(\"%s\", %s, OP_%s, SUBOP_%s, %d, %d, %d, ", $MNEMONIC, op[1], op[2], $4, $5, $6, $7 )
                     73:                if (naccess==1){
                     74:                    printf("A_ONE( %s )", $8 )
                     75:                } else if (naccess==2){
                     76:                    printf("A_TWO( %s )", $8 )
                     77:                } else printf("help")
                     78:                print ")\n"
                     79:                next
                     80:            }
                     81:            # flavor is AS, and this is a machine instruction.
                     82:            naccess = split( $OPACCESS, access, ",")
                     83:            ncode = split( $OPCODES, code, "," )
                     84:            if (touch[1] == "X"){
                     85:                noperand = 0
                     86:                $OPACCESS = 0
                     87:            }
                     88:            if (op[1] == "BRANCH" ){
                     89:                if ($MNEMONIC ~ /b..s/ ){
                     90:                    op[1] = "BRNCHS"
                     91:                } else if ( $MNEMONIC ~ /b..l/){
                     92:                    op[1] = "BRNCHL"
                     93:                }
                     94:                if (op[2]==""){
                     95:                    op[2] = "BRANCH"
                     96:                }
                     97:            }
                     98:            if (op[2] == "") op[2] = "OTHER"
                     99:            if (length($SUBOP) == 1) $SUBOP = "SUBOP_" $SUBOP
                    100:            printf("I(\"%s\", %s, OP_%s, %s, ", $MNEMONIC, op[1], op[2], $SUBOP )
                    101:            printf("%d, ", noperand)
                    102:            if (touch[1] == "X"){
                    103:                printf("T_X, ")
                    104:            } else {
                    105:                if (noperand == 1){
                    106:                    printf("T_ONE(%s),", $TOUCHOP)
                    107:                } else if (noperand == 2){
                    108:                    printf("T_TWO(%s),", $TOUCHOP)
                    109:                } else {
                    110:                    printf("T_THREE(%s),",$TOUCHOP)
                    111:                }
                    112:            }
                    113:            if (ncode==1) {
                    114:                printf("A_ONE(%s), ",$OPCODES)
                    115:            } else if (ncode==2){
                    116:                printf("A_TWO(%s, %s), ",code[1], code[2])
                    117:            } else if (ncode==3){
                    118:                printf("A_TH3(%s, %s, %s), ",code[1], code[2], code[3] )
                    119:            } else if (ncode==4){
                    120:                printf("A_4R(%s, %s, %s, %s), ", code[1], code[2], code[3], code[4] )
                    121:            } else {
                    122:                printf("A_5V(%s, %s, %s, %s, %s), ", code[1], code[2], code[3], code[4], code[5] )
                    123:            }
                    124:        } else {
                    125:            print "FLAVOR IS " flavor
                    126:            exit
                    127:        }
                    128:        # here we print the OPACCESS stuff for any flavor.
                    129:        if (naccess == 1){
                    130:            printf("A_ONE(%s) ", access[1] )
                    131:        } else if (naccess==2){
                    132:            printf("A_TWO(%s, %s) ", access[1], access[2] )
                    133:        } else if (naccess==3){
                    134:            printf("A_TH3(%s, %s, %s) ", access[1], access[2], access[3] )
                    135:        } else if (naccess==4){
                    136:            printf("A_4R(%s, %s, %s, %s) ", access[1], access[2], access[3], access[4] )
                    137:        } else if (naccess==5){
                    138:            printf("A_5V(%s, %s, %s, %s, %s) ", access[1], access[2], access[3], access[4], access[5] )
                    139:        } else if (naccess==6){
                    140:            printf("A_6X(%s, %s, %s, %s, %s, %s) ", access[1], access[2], access[3], access[4], access[5], access[6] )
                    141:        } else if (naccess==8){
                    142:            printf("A_8T(%s, %s, %s, %s, %s, %s, %s, %s) ", access[1], access[2], access[3], access[4], access[5], access[6], access[7], access[8] )
                    143:        } else {
                    144:            printf("\n#include NACCESS==%d NOT DEALT WITH IN AWK PROG",naccess)
                    145:        }
                    146:        print " )"
                    147:        next
                    148: }

unix.superglobalmegacorp.com

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