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