Annotation of coherent/b/bin/c/n1/i8086/tables/sub.t, revision 1.1.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.