Annotation of coherent/b/bin/c/n1/i386/tables/arem.t, revision 1.1

1.1     ! root        1: //////////
        !             2: / n1/i386/tables/arem.t
        !             3: //////////
        !             4: 
        !             5: /////////
        !             6: /
        !             7: / Assigned remainder (%=).
        !             8: / Just like /=, except the result is in EDX instead of EAX.
        !             9: / Use unsigned divide if either left or right operand is unsigned.
        !            10: / No doubles, since the operation is not defined on doubles.
        !            11: /
        !            12: /////////
        !            13: 
        !            14: AREM:
        !            15: 
        !            16: / Unsigned integer by unsigned.
        !            17: / The result word or byte does not have to be sign- or zero-extended
        !            18: / in value context, the result is already correct.
        !            19: %      PEFFECT|PVALUE
        !            20:        LONG            EDXEAX  *       *       EDX
        !            21:                ADR|LV          UINT
        !            22:                ADR             LONG
        !            23: / Signed long by unsigned.
        !            24: %      PEFFECT|PVALUE
        !            25:        LONG            EDXEAX  *       *       EDX
        !            26:                ADR|LV          FS32
        !            27:                ADR             FU32
        !            28:                        [TL ZMOVSX]     [REGNO EAX], [AL]
        !            29:                        [ZSUB]          [REGNO EDX], [REGNO EDX]
        !            30:                        [ZDIV]          [AR]
        !            31:                        [TL ZMOV]       [AL], [TL REGNO EDX]
        !            32: 
        !            33: / Signed word or byte by unsigned.
        !            34: / The result must be sign- or zero-extended in value context.
        !            35: %      PEFFECT|PVALUE
        !            36:        LONG            EDXEAX  *       *       EDX
        !            37:                ADR|LV          FS16|FS8
        !            38:                ADR             FU32
        !            39:                        [TL ZMOVSX]     [REGNO EAX], [AL]
        !            40:                        [ZSUB]          [REGNO EDX], [REGNO EDX]
        !            41:                        [ZDIV]          [AR]
        !            42:                        [TL ZMOV]       [AL], [TL REGNO EDX]
        !            43:                [IFV]   [TL ZMOVSX]     [REGNO EDX], [TL REGNO EDX]
        !            44: 
        !            45: / Signed integer by signed.
        !            46: / The result word or byte does not have to be sign- or zero-extended
        !            47: / in value context, the result is already correct.
        !            48: %      PEFFECT|PVALUE
        !            49:        LONG            EDXEAX  *       *       EDX
        !            50:                ADR|LV          SINT
        !            51:                ADR             FS32
        !            52:                        [TL ZMOVSX]     [REGNO EAX], [AL]
        !            53:                        [ZCDQ]
        !            54:                        [ZIDIV]         [AR]
        !            55:                        [TL ZMOV]       [AL], [TL REGNO EDX]
        !            56: 
        !            57: //////////
        !            58: / Fields.
        !            59: / The right hand operand of the field is not preshifted
        !            60: / like it is for add, subtract and the increment/decrement ops. 
        !            61: //////////
        !            62: 
        !            63: / Field.
        !            64: %      PEFFECT|PVALUE
        !            65:        LONG            EDXEAX  *       *       EDX
        !            66:                ADR|LV          FLD
        !            67:                ADR             LONG
        !            68:                        [TL ZMOVZX]     [REGNO EAX],[AL]        / fetch
        !            69:                        [ZAND]          [REGNO EAX],[EMASK]     / extract
        !            70:                        [ZSUB]          [REGNO EDX],[REGNO EDX] / widen
        !            71:                        [ZDIV]          [AR]                    / divide
        !            72:                        [ZAND]          [REGNO EAX],[EMASK]     / mask
        !            73:                        [TL ZAND]       [AL],[TL CMASK]         / clear
        !            74:                        [TL ZOR]        [AL],[TL REGNO EDX]     / store
        !            75: 
        !            76: //////////
        !            77: / end of n1/i386/tables/arem.t
        !            78: //////////

unix.superglobalmegacorp.com

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