Annotation of coherent/b/bin/c/n1/i386/tables/aadd.t, revision 1.1.1.1

1.1       root        1: //////////
                      2: / n1/i386/tables/aadd.t
                      3: //////////
                      4: 
                      5: /////////
                      6: /
                      7: / Assigned add (+=).
                      8: / [OP0] is ZADD, [OP1] is ZINC.
                      9: / Identical to asub.t except for the _dadd and _fadd calls,
                     10: / I would like them to be one file again but don't see how to do it.
                     11: /
                     12: /////////
                     13: 
                     14: AADD:
                     15: 
                     16: / Integer or pointer op= 1.
                     17: %      PEFFECT|PVALUE|PREL
                     18:        DWORD           ANYR    *       *       TEMP
                     19:                ADR|LV          DWORD|SHORT
                     20:                1|MMX           *
                     21:                        [TL OP1]        [AL]
                     22:                [IFV]   [TL ZMOVSX]     [R],[AL]
                     23:                [IFR]   [REL0]          [LAB]
                     24: 
                     25: / Integer or pointer op= immediate long.
                     26: %      PEFFECT|PVALUE|PREL
                     27:        DWORD           ANYR    *       *       TEMP
                     28:                ADR|LV          DWORD|SHORT
                     29:                IMM|MMX         LONG
                     30: / Dword op= register long.
                     31: %      PEFFECT|PVALUE|PREL
                     32:        DWORD           ANYR    *       *       TEMP
                     33:                ADR|LV          DWORD
                     34:                REG|MMX         DWORD
                     35:                        [TL OP0]        [AL],[AR]
                     36:                [IFV]   [TL ZMOVSX]     [R],[AL]
                     37:                [IFR]   [REL0]          [LAB]
                     38: 
                     39: / Integer or pointer op= long.
                     40: %      PEFFECT|PVALUE|PREL|P_SRT|PBYTE
                     41:        DWORD           ANYR    *       ANYR    TEMP
                     42:                ADR|LV          DWORD|SHORT
                     43:                TREG            DWORD
                     44:                        [TL OP0]        [AL],[TL R]
                     45:                [IFV]   [TL ZMOVSX]     [R],[AL]
                     46:                [IFR]   [REL0]          [LAB]
                     47: 
                     48: /////////
                     49: / Fields.
                     50: / The left hand operand is an lvalue bit field.
                     51: / The right operand has been preshifted to the appropriate place.
                     52: / If the value is required, there is a shift on top of the 'op=' node.
                     53: / Grab the machine object that holds the field,
                     54: / add the right operand to it,
                     55: / extract the result and replace the value in the machine object.
                     56: /////////
                     57: 
                     58: %      PVALUE|PBYTE
                     59:        LONG            ANYR    *       *       TEMP
                     60:                ADR|LV          FLD
                     61:                ADR|IMM         LONG
                     62:                        [TL ZMOVZX]     [R],[AL]                / fetch
                     63:                        [OP0]           [R],[AR]                / op
                     64:                        [ZAND]          [R],[EMASK]             / extract
                     65:                        [TL ZAND]       [AL],[TL CMASK]         / clear
                     66:                        [TL ZOR]        [AL],[TL R]             / store
                     67: 
                     68: //////////
                     69: / Floating point.
                     70: //////////
                     71: 
                     72: / IEEE or DECVAX software floating point.
                     73: / Double op= double.
                     74: %      PEFFECT|PVALUE|P_SRT|PDECVAX|PIEEE
                     75:        FF64            EDXEAX  *       EDXEAX  TEMP
                     76:                ADR|LV          FF64
                     77:                TREG            FF64
                     78:                        [ZPUSH] [HI AL]
                     79:                        [ZPUSH] [LO AL]
                     80:                        [ZCALL] [GID _dadd]
                     81:                        [ZADD]  [REGNO ESP],[CONST 8]
                     82:                        [ZMOV]  [HI AL],[HI R]
                     83:                        [ZMOV]  [LO AL],[LO R]
                     84: 
                     85: / Float op= double.
                     86: %      PEFFECT|PVALUE|P_SRT|PDECVAX|PIEEE
                     87:        FF64            EDXEAX  *       EDXEAX  TEMP
                     88:                ADR|LV          FF32
                     89:                TREG            FF64
                     90:                        [ZPUSH] [AL]
                     91:                        [ZCALL] [GID _fadd]
                     92:                        [ZADD]  [REGNO ESP],[CONST 4]
                     93:                        [ZCALL] [GID _fdcvt]
                     94:                        [ZMOV]  [AL], [LO R]
                     95:                [IFV]   [ZCALL] [GID _dfcvt]
                     96: 
                     97: / Hardware coprocessor (NDP) floating point.
                     98: %      PEFFECT|PVALUE|PNDP
                     99:        FLOAT           FPAC    *       FPAC    FPAC
                    100:                ADR|LV          FLOAT
                    101:                TREG            FF64
                    102:                        [TL ZFADDD]     [AL]
                    103:                [IFV]   [TL ZFSTD]      [AL]
                    104:                [IFE]   [TL ZFSTPD]     [AL]
                    105: 
                    106: //////////
                    107: / end of n1/i386/tables/aadd.t
                    108: //////////

unix.superglobalmegacorp.com

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