Annotation of coherent/b/bin/c/n1/i8086/tables/assign.t, revision 1.1.1.1

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

unix.superglobalmegacorp.com

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