Annotation of coherent/b/bin/c/n1/i8086/tables/sub.t, revision 1.1

1.1     ! root        1: /////////
        !             2: / 
        !             3: / Subtraction.
        !             4: / Similar (at least in spirit) to addition.
        !             5: / Some of the very strange cases are not required,
        !             6: / since subtraction is not as reorderable as addition.
        !             7: / Special stuff for LARGE model pointers.
        !             8: /
        !             9: /////////
        !            10: 
        !            11: SUB:
        !            12: %      PEFFECT|PRVALUE|PSREL|P_SLT
        !            13:        WORD            ANYR    ANYR    *       TEMP
        !            14:                TREG            WORD
        !            15:                1|MMX           *
        !            16: %      PLVALUE|P_SLT
        !            17:        WORD            ANYL    ANYL    *       TEMP
        !            18:                TREG            WORD
        !            19:                1|MMX           *
        !            20:                        [ZDEC]  [R]
        !            21:                [IFR]   [REL0]  [LAB]
        !            22: 
        !            23: #ifndef ONLYSMALL
        !            24: %      PEFFECT|PRVALUE|P_SLT
        !            25:        LPTX            ANYR    ANYR    *       TEMP
        !            26:                TREG            LPTX
        !            27:                1|MMX           *
        !            28: %      PLVALUE|P_SLT
        !            29:        LPTX            ANYL    ANYL    *       TEMP
        !            30:                TREG            LPTX
        !            31:                1|MMX           *
        !            32:                        [ZDEC]  [LO R]
        !            33: #endif
        !            34: 
        !            35: /////////
        !            36: /
        !            37: / A strange optimization for the i8086.
        !            38: / It is just as fast as the subtract, and it is smaller.
        !            39: / Thanks to Bob McNamara at Digital.
        !            40: /
        !            41: /////////
        !            42: 
        !            43: %      PEFFECT|PRVALUE|PSREL|P_SLT
        !            44:        WORD            ANYR    ANYR    *       TEMP
        !            45:                TREG            WORD
        !            46:                2|MMX           *
        !            47: %      PLVALUE|P_SLT
        !            48:        WORD            ANYL    ANYL    *       TEMP
        !            49:                TREG            WORD
        !            50:                2|MMX           *
        !            51:                        [ZDEC]  [R]
        !            52:                        [ZDEC]  [R]
        !            53:                [IFR]   [REL0]  [LAB]
        !            54: 
        !            55: #ifndef ONLYSMALL
        !            56: %      PEFFECT|PRVALUE|P_SLT
        !            57:        LPTX            ANYR    ANYR    *       TEMP
        !            58:                TREG            LPTX
        !            59:                2|MMX           *
        !            60: %      PLVALUE|P_SLT
        !            61:        LPTX            ANYL    ANYL    *       TEMP
        !            62:                TREG            LPTX
        !            63:                2|MMX           *
        !            64:                        [ZDEC]  [LO R]
        !            65:                        [ZDEC]  [LO R]
        !            66: #endif
        !            67: 
        !            68: /////////
        !            69: /
        !            70: / Old fashoned subtraction.
        !            71: /
        !            72: /////////
        !            73: 
        !            74: %      PEFFECT|PRVALUE|PSREL|P_SLT
        !            75:        WORD            ANYR    ANYR    *       TEMP
        !            76:                TREG            WORD
        !            77:                ADR|IMM         WORD
        !            78: %      PLVALUE|P_SLT
        !            79:        WORD            ANYL    ANYL    *       TEMP
        !            80:                TREG            WORD
        !            81:                ADR|IMM         WORD
        !            82:                        [ZSUB]  [R],[AR]
        !            83:                [IFR]   [REL0]  [LAB]
        !            84: 
        !            85: #ifndef ONLYSMALL
        !            86: %      PEFFECT|PRVALUE|P_SLT
        !            87:        LPTX            ANYR    ANYR    *       TEMP
        !            88:                TREG            LPTX
        !            89:                ADR|IMM         WORD
        !            90: %      PLVALUE|P_SLT
        !            91:        LPTX            ANYL    ANYL    *       TEMP
        !            92:                TREG            LPTX
        !            93:                ADR|IMM         WORD
        !            94:                        [ZSUB]  [LO R],[AR]
        !            95: #endif
        !            96: 
        !            97: %      PEFFECT|PRVALUE|PGE|PLT|P_SLT
        !            98:        LONG            DXAX    DXAX    *       DXAX
        !            99:                TREG            LONG
        !           100:                ADR|IMM         LONG
        !           101:                        [ZSUB]  [LO R],[LO AR]
        !           102:                        [ZSBB]  [HI R],[HI AR]
        !           103:                [IFR]   [REL1]  [LAB]
        !           104: 
        !           105: #ifndef ONLYSMALL
        !           106: %      PEFFECT|PRVALUE|P_SLT
        !           107:        LPTX            ANYR    ANYR    *       TEMP
        !           108:                TREG            LPTX
        !           109:                ADR|IMM         LONG
        !           110: %      PLVALUE|P_SLT
        !           111:        LPTX            ANYL    ANYL    *       TEMP
        !           112:                TREG            LPTX
        !           113:                ADR|IMM         LONG
        !           114:                        [ZSUB]  [LO R],[LO AR]
        !           115: #endif
        !           116: 
        !           117: /////////
        !           118: /
        !           119: / LARGE model pointer-pointer yields 1 word of result.
        !           120: / Only RVALUE contexts need to be done.
        !           121: /
        !           122: /////////
        !           123: 
        !           124: #ifndef ONLYSMALL
        !           125: %      PRVALUE
        !           126:        WORD            ANYR    *       *       TEMP
        !           127:                DIR|IMM|MMX     LPTX
        !           128:                DIR|IMM|MMX     LPTX
        !           129:                        [ZMOV]  [R],[LO AL]
        !           130:                        [ZSUB]  [R],[LO AR]
        !           131: 
        !           132: %      PRVALUE
        !           133:        WORD            DXAX    DXAX    *       AX
        !           134:                TREG            LPTX
        !           135:                ADR|IMM         LPTX
        !           136:                        [ZSUB]  [LO R],[LO AR]
        !           137: #endif
        !           138: 
        !           139: ////////
        !           140: /
        !           141: / Floating point, using the numeric data coprocessor (8087).
        !           142: /
        !           143: ////////
        !           144: 
        !           145: #ifdef NDPDEF
        !           146: %      PRVALUE|P_SLT
        !           147:        FF32|FF64       FPAC    FPAC    *       FPAC
        !           148:                TREG            FF64
        !           149:                ADR             FS16
        !           150:                        [ZFSUBI] [AR]
        !           151: 
        !           152: %      PRVALUE|P_SLT
        !           153:        FF32|FF64       FPAC    FPAC    *       FPAC
        !           154:                TREG            FF64
        !           155:                ADR             FS32
        !           156:                        [ZFSUBL] [AR]
        !           157: 
        !           158: %      PRVALUE|P_SLT
        !           159:        FF32|FF64       FPAC    FPAC    *       FPAC
        !           160:                TREG            FF64
        !           161:                ADR             FF32
        !           162:                        [ZFSUBF] [AR]
        !           163: 
        !           164: %      PRVALUE|P_SLT
        !           165:        FF32|FF64       FPAC    FPAC    *       FPAC
        !           166:                TREG            FF64
        !           167:                ADR             FF64
        !           168:                        [ZFSUBD] [AR]
        !           169: #endif

unix.superglobalmegacorp.com

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