Annotation of coherent/b/bin/c/n1/i8086/tables/assign.265, revision 1.1

1.1     ! root        1: /////////
        !             2: /
        !             3: / Plain and simple assignment. Handles doubles, longs, fields, bytes
        !             4: / and words. This table does not handle doubles. It is not clear if some
        !             5: / kinds of double assignments should be done with move instructions to
        !             6: / save the overhead of loading the 8087 emulator, since the emulator is
        !             7: / big and fat. More complex double assignments, like the ones that must
        !             8: / return a value, use the 8087.
        !             9: / The `=' operator is a non conversion operator for pointers, words and
        !            10: / longs. There must be some special tables here to handle the cross type
        !            11: / cases. This approach makes everything appear to work in a rational
        !            12: / fashion.
        !            13: /
        !            14: /////////
        !            15: 
        !            16: ASSIGN:
        !            17: %      PEFFECT
        !            18:        WORD            NONE    *       *       NONE
        !            19:                REG|MMX         WORD
        !            20:                0|MMX           *
        !            21:                        [ZSUB]  [AL],[AL]
        !            22: 
        !            23: %      PEFFECT
        !            24:        WORD            NONE    *       *       NONE
        !            25:                REG|MMX         WORD
        !            26:                EASY|MMX        WORD
        !            27: %      PEFFECT
        !            28:        WORD            NONE    *       *       NONE
        !            29:                ADR|LV          WORD
        !            30:                REG|MMX         WORD
        !            31: %      PEFFECT
        !            32:        WORD            NONE    *       *       NONE
        !            33:                ADR|LV          WORD
        !            34:                IMM|MMX         WORD
        !            35:                        [ZMOV]  [AL],[AR]
        !            36: 
        !            37: %      PEFFECT
        !            38:        WORD            NONE    *       *       NONE
        !            39:                REG|MMX         WORD
        !            40:                EASY|MMX        LONG
        !            41:                        [ZMOV]  [AL],[LO AR]
        !            42: 
        !            43: %      PEFFECT
        !            44:        WORD            NONE    *       *       NONE
        !            45:                RREG|MMX        WORD
        !            46:                LEA|MMX         WORD
        !            47:                        [ZLEA]  [AL],[NSE AR]
        !            48: 
        !            49: %      PEFFECT
        !            50:        WORD            NONE    *       *       NONE
        !            51:                ADR|LV          BYTE
        !            52:                IMM|MMX         WORD
        !            53:                        [ZMOVB] [AL],[AR]
        !            54: 
        !            55: %      PEFFECT
        !            56:        LONG            NONE    *       *       NONE
        !            57:                ADR|LV          LONG
        !            58:                IMM|MMX         LONG
        !            59:                        [ZMOV]  [LO AL],[LO AR]
        !            60:                        [ZMOV]  [HI AL],[HI AR]
        !            61: 
        !            62: %      PEFFECT|PRVALUE|PEREL
        !            63:        WORD            AX      *       *       AX
        !            64:                ADR|LV          FS8
        !            65:                ADR             BYTE
        !            66:                        [ZMOVB] [LO R],[AR]
        !            67:                        [ZMOVB] [AL],[LO R]
        !            68:                [IFV]   [ZCBW]
        !            69:                [IFR]   [ZORB]  [LO R],[LO R]
        !            70:                [IFR]   [REL0]  [LAB]
        !            71: 
        !            72: %      PEFFECT|PRVALUE|PEREL
        !            73:        WORD            AX      *       *       AX
        !            74:                ADR|LV          FU8
        !            75:                ADR             BYTE
        !            76:                        [ZMOVB] [LO R],[AR]
        !            77:                        [ZMOVB] [AL],[LO R]
        !            78:                [IFV]   [ZSUBB] [HI R],[HI R]
        !            79:                [IFR]   [ZORB]  [LO R],[LO R]
        !            80:                [IFR]   [REL0]  [LAB]
        !            81: 
        !            82: %      PEFFECT
        !            83:        WORD            AX      *       *       NONE
        !            84:                ADR|LV          WORD
        !            85:                EASY|MMX        WORD
        !            86:                        [ZMOV]  [R],[AR]
        !            87:                        [ZMOV]  [AL],[R]
        !            88: 
        !            89: %      PEFFECT|PRVALUE|P_SRT
        !            90:        WORD            ANYR    *       ANYR    TEMP
        !            91:                ADR|LV          WORD
        !            92:                TREG            WORD
        !            93: %      PLVALUE|P_SRT
        !            94:        WORD            ANYL    *       ANYL    TEMP
        !            95:                ADR|LV          WORD
        !            96:                TREG            WORD
        !            97:                        [ZMOV]  [AL],[R]
        !            98: 
        !            99: %      PEFFECT|PRVALUE|P_SRT
        !           100:        WORD            AX      *       AX      AX
        !           101:                ADR|LV          FS8
        !           102:                TREG            WORD
        !           103:                        [ZMOVB] [AL],[LO R]
        !           104:                [IFV]   [ZCBW]
        !           105: 
        !           106: %      PEFFECT|PRVALUE|P_SRT
        !           107:        WORD            AX      *       AX      AX
        !           108:                ADR|LV          FU8
        !           109:                TREG            WORD
        !           110:                        [ZMOVB] [AL],[LO R]
        !           111:                [IFV]   [ZSUBB] [HI R],[HI R]
        !           112: 
        !           113: %      PRVALUE|P_SRT
        !           114:        LONG            ANYR    *       ANYR    TEMP
        !           115:                ADR|LV          LONG
        !           116:                TREG            LONG
        !           117:                        [ZMOV]  [LO AL],[LO R]
        !           118:                        [ZMOV]  [HI AL],[HI R]
        !           119: 
        !           120: %      PEFFECT|PRVALUE
        !           121:        WORD            AX      *       DXAX    AX
        !           122:                ADR|LV          WORD
        !           123:                TREG            LONG
        !           124:                        [ZMOV]  [AL],[R]
        !           125: 
        !           126: %      PEFFECT|PRVALUE|P_SRT
        !           127:        WORD            DXAX    *       DXAX    AX
        !           128:                ADR|LV          FS8
        !           129:                TREG            LONG
        !           130:                        [ZMOVB] [AL],[LO R]
        !           131:                [IFV]   [ZCBW]
        !           132: 
        !           133: %      PEFFECT|PRVALUE|P_SRT
        !           134:        WORD            DXAX    *       DXAX    AX
        !           135:                ADR|LV          FU8
        !           136:                TREG            LONG
        !           137:                        [ZMOVB] [AL],[LO LO R]
        !           138:                [IFV]   [ZSUBB] [HI LO R],[HI LO R]
        !           139: 
        !           140: /////////
        !           141: /
        !           142: / Assignment between pointers and integer types. These are all set up
        !           143: / as no conversion operations in the parser. We attempt to do a reasonably
        !           144: / good job on the common cases, like setting a pointer to NULL.
        !           145: /
        !           146: /////////
        !           147: 
        !           148: #ifndef ONLYSMALL
        !           149: %      PEFFECT
        !           150:        LPTX            NONE    *       *       NONE
        !           151:                ADR|LV          LPTX
        !           152:                0|MMX           *
        !           153:                        [ZMOV]  [LO AL],[CONST 0]
        !           154:                        [ZMOV]  [HI AL],[CONST 0]
        !           155: 
        !           156: %      PRVALUE
        !           157:        LPTX            ANYR    *       *       TEMP
        !           158:                ADR|LV          LPTX
        !           159:                0|MMX           *
        !           160:                        [ZSUB]  [LO R],[LO R]
        !           161:                        [ZMOV]  [HI R],[LO R]
        !           162:                        [ZMOV]  [LO AL],[LO R]
        !           163:                        [ZMOV]  [HI AL],[LO R]
        !           164: 
        !           165: %      PRVALUE
        !           166:        LPTX            ANYR    *       *       TEMP
        !           167:                ADR|LV          LPTX
        !           168:                ICN|MMX         LPTX
        !           169:                        [ZMOV]  [LO R],[AR]
        !           170:                        [ZSUB]  [HI R],[HI R]
        !           171:                        [ZMOV]  [LO AL],[LO R]
        !           172:                        [ZMOV]  [HI AL],[HI R]
        !           173: 
        !           174: %      PLVALUE|PEFFECT
        !           175:        LPTX            ANYL    *       *       TEMP
        !           176:                ADR|LV          LPTX
        !           177:                ICN|MMX         LPTX
        !           178:                        [ZMOV]  [LO AL],[AR]
        !           179:                        [ZMOV]  [HI AL],[CONST 0]
        !           180:                [IFV]   [ZLDES] [LO R],[AL]
        !           181: 
        !           182: %      PRVALUE
        !           183:        LPTX            ANYR    *       *       TEMP
        !           184:                ADR|LV          LPTX
        !           185:                LCN|MMX         LPTX
        !           186:                        [ZMOV]  [LO R],[LO AR]
        !           187:                        [ZMOV]  [HI R],[HI AR]
        !           188:                        [ZMOV]  [LO AL],[LO R]
        !           189:                        [ZMOV]  [HI AL],[HI R]
        !           190: 
        !           191: %      PLVALUE|PEFFECT
        !           192:        LPTX            ANYL    *       *       TEMP
        !           193:                ADR|LV          LPTX
        !           194:                LCN|MMX         LPTX
        !           195:                        [ZMOV]  [LO AL],[LO AR]
        !           196:                        [ZMOV]  [HI AL],[HI AR]
        !           197:                [IFV]   [ZLDES] [LO R],[AL]
        !           198: 
        !           199: %      PRVALUE
        !           200:        LPTX            ANYR    *       *       TEMP
        !           201:                ADR|LV          LPTX
        !           202:                ACS|MMX         LPTX
        !           203:                        [ZMOV]  [LO R],[AR]
        !           204:                        [ZMOV]  [HI R],[REGNO CS]
        !           205:                        [ZMOV]  [LO AL],[LO R]
        !           206:                        [ZMOV]  [HI AL],[HI R]
        !           207: 
        !           208: %      PRVALUE
        !           209:        LPTX            ANYR    *       *       TEMP
        !           210:                ADR|LV          LPTX
        !           211:                ADS|MMX         LPTX
        !           212:                        [ZMOV]  [LO R],[AR]
        !           213:                        [ZMOV]  [HI R],[REGNO DS]
        !           214:                        [ZMOV]  [LO AL],[LO R]
        !           215:                        [ZMOV]  [HI AL],[HI R]
        !           216: 
        !           217: %      PLVALUE|PEFFECT
        !           218:        LPTX            ANYL    *       *       TEMP
        !           219:                ADR|LV          LPTX
        !           220:                ACS|MMX         LPTX
        !           221:                        [ZMOV]  [LO AL],[AR]
        !           222:                        [ZMOV]  [HI AL],[REGNO CS]
        !           223:                [IFV]   [ZLDES] [LO R],[AL]
        !           224: 
        !           225: %      PLVALUE|PEFFECT
        !           226:        LPTX            ANYL    *       *       TEMP
        !           227:                ADR|LV          LPTX
        !           228:                ADS|MMX         LPTX
        !           229:                        [ZMOV]  [LO AL],[AR]
        !           230:                        [ZMOV]  [HI AL],[REGNO DS]
        !           231:                [IFV]   [ZLDES] [LO R],[AL]
        !           232: 
        !           233: %      PRVALUE
        !           234:        LPTX            ANYR    *       *       TEMP
        !           235:                ADR|LV          LPTX
        !           236:                DIR|MMX         WORD
        !           237:                        [ZMOV]  [LO R],[AR]
        !           238:                        [ZSUB]  [HI R],[HI R]
        !           239:                        [ZMOV]  [LO AL],[LO R]
        !           240:                        [ZMOV]  [HI AL],[HI R]
        !           241: 
        !           242: %      PLVALUE|PEFFECT
        !           243:        LPTX            ANYL    *       *       TEMP
        !           244:                ADR|LV          LPTX
        !           245:                DIR|MMX         WORD
        !           246:                        [ZMOV]  [LO R],[AR]
        !           247:                        [ZMOV]  [LO AL],[LO R]
        !           248:                        [ZMOV]  [HI AL],[CONST 0]
        !           249:                [IFV]   [ZLDES] [LO R],[AL]
        !           250: 
        !           251: %      PRVALUE
        !           252:        LPTX            ANYR    *       ANYR    TEMP
        !           253:                ADR|LV          LPTX
        !           254:                TREG            WORD
        !           255:                        [ZMOV]  [LO AL],[RR]
        !           256:                        [ZMOV]  [HI AL],[CONST 0]
        !           257:                        [ZMOV]  [LO R],[LO AL]
        !           258:                        [ZMOV]  [HI R],[HI AL]
        !           259: 
        !           260: %      PLVALUE|PEFFECT
        !           261:        LPTX            ANYL    *       ANYR    TEMP
        !           262:                ADR|LV          LPTX
        !           263:                TREG            WORD
        !           264:                        [ZMOV]  [LO AL],[RR]
        !           265:                        [ZMOV]  [HI AL],[CONST 0]
        !           266:                [IFV]   [ZLDES] [LO R],[AL]
        !           267: 
        !           268: %      PRVALUE
        !           269:        LPTX            ANYR    *       *       TEMP
        !           270:                ADR|LV          LPTX
        !           271:                DIR|MMX         LONG
        !           272: %      PRVALUE
        !           273:        LONG            ANYR    *       *       TEMP
        !           274:                ADR|LV          LONG
        !           275:                DIR|MMX         LPTX
        !           276:                        [ZMOV]  [LO R],[LO AR]
        !           277:                        [ZMOV]  [HI R],[HI AR]
        !           278:                        [ZMOV]  [LO AL],[LO R]
        !           279:                        [ZMOV]  [HI AL],[HI R]
        !           280: 
        !           281: %      PRVALUE
        !           282:        LPTX            ANYR    *       ANYR    TEMP
        !           283:                ADR|LV          LPTX
        !           284:                TREG            LONG
        !           285:                        [ZMOV]  [LO AL],[LO RR]
        !           286:                        [ZMOV]  [HI AL],[HI RR]
        !           287:                        [ZMOV]  [LO R],[LO AL]
        !           288:                        [ZMOV]  [HI R],[HI AL]
        !           289: 
        !           290: %      PLVALUE|PEFFECT
        !           291:        LPTX            ANYL    *       ANYR    TEMP
        !           292:                ADR|LV          LPTX
        !           293:                TREG            LONG
        !           294:                        [ZMOV]  [LO AL],[LO RR]
        !           295:                        [ZMOV]  [HI AL],[HI RR]
        !           296:                [IFV]   [ZLDES] [LO R],[AL]
        !           297: 
        !           298: %      PRVALUE|P_SRT
        !           299:        LPTX            ANYR    *       ANYR    TEMP
        !           300:                ADR|LV          LPTX
        !           301:                TREG            LPTX
        !           302: %      PLVALUE|P_SRT
        !           303:        LPTX            ANYL    *       ANYL    TEMP
        !           304:                ADR|LV          LPTX
        !           305:                TREG            LPTX
        !           306:                        [ZMOV]  [LO AL],[LO R]
        !           307:                        [ZMOV]  [HI AL],[HI R]
        !           308: 
        !           309: %      PRVALUE|PEFFECT|P_SRT
        !           310:        LONG            ANYR    *       ANYR    TEMP
        !           311:                ADR|LV          LONG
        !           312:                TREG            LPTX
        !           313:                        [ZMOV]  [LO AL],[LO RR]
        !           314:                        [ZMOV]  [HI AL],[HI RR]
        !           315: 
        !           316: %      PRVALUE|PEFFECT
        !           317:        WORD            ESAX    *       ESAX    AX
        !           318:                ADR|LV          WORD
        !           319:                TREG            LPTX
        !           320:                        [ZMOV]  [AL],[LO R]
        !           321: 
        !           322: %      PRVALUE|PEFFECT
        !           323:        WORD            DXAX    *       DXAX    AX
        !           324:                ADR|LV          FS8
        !           325:                TREG            LPTX
        !           326:                        [ZMOVB] [AL],[LO LO R]
        !           327:                [IFV]   [ZCBW]
        !           328: 
        !           329: %      PRVALUE|PEFFECT
        !           330:        WORD            DXAX    *       DXAX    AX
        !           331:                ADR|LV          FU8
        !           332:                TREG            LPTX
        !           333:                        [ZMOVB] [AL],[LO LO R]
        !           334:                [IFV]   [ZSUBB] [HI LO R],[HI LO R]
        !           335: #endif
        !           336: 
        !           337: /////////
        !           338: /
        !           339: / Do a reasonably sleazy job on field assignment. The right operand has
        !           340: / been preshifted and masked (just like the right side of an |= or ^=
        !           341: / operation. All you do is clear the junk and OR it in.
        !           342: /
        !           343: /////////
        !           344: 
        !           345: %      PEFFECT|PRVALUE
        !           346:        FS16            ANYR    *       *       TEMP
        !           347:                ADR|LV          FFLD16
        !           348:                IMM|MMX         WORD
        !           349:                        [ZAND]  [AL],[LO CMASK]
        !           350:                        [ZOR]   [AL],[AR]
        !           351:                [IFV]   [ZMOV]  [R],[AL]
        !           352: 
        !           353: %      PEFFECT|PRVALUE
        !           354:        UWORD           ANYR    *       *       TEMP
        !           355:                ADR|LV          FFLD16
        !           356:                IMM|MMX         WORD
        !           357:                        [ZAND]  [AL],[LO CMASK]
        !           358:                        [ZOR]   [AL],[AR]
        !           359:                [IFV]   [ZMOV]  [R],[AL]
        !           360:                [IFV]   [ZAND]  [R],[LO EMASK]
        !           361: 
        !           362: %      PEFFECT|PRVALUE|P_SRT
        !           363:        FS16            ANYR    *       ANYR    TEMP
        !           364:                ADR|LV          FFLD16
        !           365:                TREG            WORD
        !           366:                        [ZAND]  [AL],[LO CMASK]
        !           367:                        [ZOR]   [AL],[R]
        !           368:                [IFV]   [ZMOV]  [R],[AL]
        !           369: 
        !           370: %      PEFFECT|PRVALUE|P_SRT
        !           371:        UWORD           ANYR    *       ANYR    TEMP
        !           372:                ADR|LV          FFLD16
        !           373:                TREG            WORD
        !           374:                        [ZAND]  [AL],[LO CMASK]
        !           375:                        [ZOR]   [AL],[R]
        !           376:                [IFV]   [ZMOV]  [R],[AL]
        !           377:                [IFV]   [ZAND]  [R],[LO EMASK]
        !           378: 
        !           379: %      PEFFECT|PRVALUE|P_SRT
        !           380:        FS16            AX      *       AX      TEMP
        !           381:                ADR|LV          FFLD8
        !           382:                TREG            WORD
        !           383:                        [ZANDB] [AL],[LO CMASK]
        !           384:                        [ZORB]  [AL],[LO R]
        !           385:                [IFV]   [ZMOVB] [LO R],[AL]
        !           386: 
        !           387: %      PEFFECT|PRVALUE|P_SRT
        !           388:        UWORD           AX      *       AX      TEMP
        !           389:                ADR|LV          FFLD8
        !           390:                TREG            WORD
        !           391:                        [ZANDB] [AL],[LO CMASK]
        !           392:                        [ZORB]  [AL],[LO R]
        !           393:                [IFV]   [ZMOVB] [LO R],[AL]
        !           394:                [IFV]   [ZAND]  [R],[LO EMASK]
        !           395: 
        !           396: /////////
        !           397: /
        !           398: / Floating point. Immediate moves, and direct/direct moves
        !           399: / are special. Otherwise we load the "fpac" and move from it.
        !           400: / We know that the "fpac" is actually memory!!
        !           401: /
        !           402: / If IEEE, a runtime routine handles 32 bit float assignment.
        !           403: / If DECVAX, we compile it inline because it is easy.
        !           404: /
        !           405: /////////
        !           406: 
        !           407: #ifndef NDPDEF
        !           408: #ifndef IEEE
        !           409: %      PEFFECT
        !           410:        FF64            AX      *       *       NONE
        !           411:                ADR|LV          FF32
        !           412:                0|MMX           *
        !           413:                        [ZSUB]  [R],[R]
        !           414:                        [ZMOV]  [HI AL],[R]
        !           415:                        [ZMOV]  [LO AL],[R]
        !           416: 
        !           417: %      PEFFECT
        !           418:        FF64            NONE    *       *       NONE
        !           419:                ADR|LV          FF32
        !           420:                IMM|MMX         FF64
        !           421:                        [ZMOV]  [HI AL],[LO LO AR]
        !           422:                        [ZMOV]  [LO AL],[HI LO AR]
        !           423: 
        !           424: %      PEFFECT|PRVALUE|P_SRT
        !           425:        FF64            AX      *       FPAC    FPAC
        !           426:                ADR|LV          FF32
        !           427:                TREG            FF64
        !           428: %      PEFFECT|PRVALUE|P_SRT
        !           429:        FF64            AX      *       FPAC    FPAC
        !           430:                ADR|LV          FF32
        !           431:                TREG            FF32
        !           432:                        [ZMOV]  [R],[HI LO RR]
        !           433:                        [ZMOV]  [HI AL],[R]
        !           434:                        [ZMOV]  [R],[LO LO RR]
        !           435:                        [ZMOV]  [LO AL],[R]
        !           436: 
        !           437: #endif
        !           438: 
        !           439: %      PEFFECT
        !           440:        FF64            AX      *       *       NONE
        !           441:                ADR|LV          FF64
        !           442:                0|MMX           *
        !           443:                        [ZSUB]  [R],[R]
        !           444:                        [ZMOV]  [HI LO AL],[R]
        !           445:                        [ZMOV]  [LO LO AL],[R]
        !           446:                        [ZMOV]  [HI HI AL],[R]
        !           447:                        [ZMOV]  [LO HI AL],[R]
        !           448: 
        !           449: %      PEFFECT
        !           450:        FF64            NONE    *       *       NONE
        !           451:                ADR|LV          FF64
        !           452:                IMM|MMX         FF64
        !           453:                        [ZMOV]  [HI LO AL],[LO LO AR]
        !           454:                        [ZMOV]  [LO LO AL],[HI LO AR]
        !           455:                        [ZMOV]  [HI HI AL],[LO HI AR]
        !           456:                        [ZMOV]  [LO HI AL],[HI HI AR]
        !           457: 
        !           458: %      PEFFECT|PRVALUE|P_SRT
        !           459:        FF64            AX      *       FPAC    FPAC
        !           460:                ADR|LV          FF64
        !           461:                TREG            FF64
        !           462:                        [ZMOV]  [R],[HI LO RR]
        !           463:                        [ZMOV]  [HI LO AL],[R]
        !           464:                        [ZMOV]  [R],[LO LO RR]
        !           465:                        [ZMOV]  [LO LO AL],[R]
        !           466:                        [ZMOV]  [R],[HI HI RR]
        !           467:                        [ZMOV]  [HI HI AL],[R]
        !           468:                        [ZMOV]  [R],[LO HI RR]
        !           469:                        [ZMOV]  [LO HI AL],[R]
        !           470: #endif
        !           471: #ifdef  NDPDEF
        !           472: %      PEFFECT|P_SRT
        !           473:        FF64            FPAC    *       FPAC    NONE
        !           474:                ADR|LV          FF32
        !           475:                TREG            FF64
        !           476: %      PEFFECT|P_SRT
        !           477:        FF64            FPAC    *       FPAC    NONE
        !           478:                ADR|LV          FF32
        !           479:                TREG            FF32
        !           480:                        [ZFSTPF] [AL]
        !           481: 
        !           482: %      PRVALUE|P_SRT
        !           483:        FF64            FPAC    *       FPAC    FPAC
        !           484:                ADR|LV          FF32
        !           485:                TREG            FF64
        !           486: %      PRVALUE|P_SRT
        !           487:        FF64            FPAC    *       FPAC    FPAC
        !           488:                ADR|LV          FF32
        !           489:                TREG            FF32
        !           490:                        [ZFSTF] [AL]
        !           491: 
        !           492: %      PEFFECT|P_SRT
        !           493:        FF64            FPAC    *       FPAC    NONE
        !           494:                ADR|LV          FF64
        !           495:                TREG            FF64
        !           496:                        [ZFSTPD] [AL]
        !           497: 
        !           498: %      PRVALUE|P_SRT
        !           499:        FF64            FPAC    *       FPAC    FPAC
        !           500:                ADR|LV          FF64
        !           501:                TREG            FF64
        !           502:                        [ZFSTD] [AL]
        !           503: #endif

unix.superglobalmegacorp.com

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