Annotation of coherent/b/bin/c/n1/i8086/tables/amul.t, revision 1.1.1.1

1.1       root        1: /////////
                      2: /
                      3: / Assigned multiply.
                      4: / Not a lot of special cases. The fixed register requirements of
                      5: / byte operations and the multiply instruction make it not very
                      6: / necessary. Also handles fields.
                      7: /
                      8: /////////
                      9: 
                     10: AMUL:
                     11: %      PEFFECT|PRVALUE|PLVALUE|P80186
                     12:        WORD            ANYR    *       *       TEMP
                     13:                ADR|LV          WORD
                     14:                IMM|MMX         WORD
                     15:                        [ZIMULI]        [R],[AL],[AR]
                     16:                        [ZMOV]  [AL],[R]
                     17: 
                     18: %      PEFFECT|PRVALUE|PLVALUE
                     19:        WORD            DXAX    *       *       AX
                     20:                ADR|LV          FS16
                     21:                ADR             WORD
                     22:                        [ZMOV]  [LO R],[AL]
                     23:                        [ZIMUL] [AR]
                     24:                        [ZMOV]  [AL],[LO R]
                     25: 
                     26: %      PEFFECT|PRVALUE|PLVALUE
                     27:        WORD            DXAX    *       *       AX
                     28:                ADR|LV          UWORD
                     29:                ADR             WORD
                     30:                        [ZMOV]  [LO R],[AL]
                     31:                        [ZMUL]  [AR]
                     32:                        [ZMOV]  [AL],[LO R]
                     33: 
                     34: %      PEFFECT|PRVALUE
                     35:        WORD            DXAX    *       *       AX
                     36:                ADR|LV          FFLD16
                     37:                ADR             WORD
                     38:                        [ZMOV]  [LO R],[AL]
                     39:                        [ZAND]  [LO R],[LO EMASK]
                     40:                        [ZMUL]  [AR]
                     41:                        [ZAND]  [LO R],[LO EMASK]
                     42:                        [ZAND]  [AL],[LO CMASK]
                     43:                        [ZOR]   [AL],[LO R]
                     44: 
                     45: %      PEFFECT|PRVALUE
                     46:        WORD            DXAX    *       *       AX
                     47:                ADR|LV          FS8
                     48:                ADR             WORD
                     49:                        [ZMOVB] [LO LO R],[AL]
                     50:                        [ZCBW]
                     51:                        [ZIMUL] [AR]
                     52:                        [ZMOVB] [AL],[LO LO R]
                     53:                [IFV]   [ZCBW]
                     54: 
                     55: %      PEFFECT|PRVALUE
                     56:        WORD            DXAX    *       *       AX
                     57:                ADR|LV          FU8
                     58:                ADR             WORD
                     59:                        [ZMOVB] [LO LO R],[AL]
                     60:                        [ZSUBB] [HI LO R],[HI LO R]
                     61:                        [ZMUL]  [AR]
                     62:                        [ZMOVB] [AL],[LO LO R]
                     63:                [IFV]   [ZSUBB] [HI LO R],[HI LO R]
                     64: 
                     65: %      PEFFECT|PRVALUE
                     66:        WORD            DXAX    *       *       AX
                     67:                ADR|LV          FFLD8
                     68:                ADR             WORD
                     69:                        [ZMOVB] [LO LO R],[AL]
                     70:                        [ZAND]  [LO R],[LO EMASK]       / Clear AH too.
                     71:                        [ZMUL]  [AR]
                     72:                        [ZAND]  [LO R],[LO EMASK]
                     73:                        [ZANDB] [AL],[LO CMASK]
                     74:                        [ZORB]  [AL],[LO LO R]
                     75: 
                     76: %      PEFFECT|PRVALUE
                     77:        LONG            DXAX    *       DXAX    DXAX
                     78:                ADR|LV          FS32
                     79:                TREG            LONG
                     80:                        [ZPUSH] [HI R]
                     81:                        [ZPUSH] [LO R]
                     82:                        [ZPUSH] [HI AL]
                     83:                        [ZPUSH] [LO AL]
                     84:                        [CALL]  [GID lrmul]
                     85:                        [ZADD]  [REGNO SP],[CONST 8]
                     86:                        [ZMOV]  [LO AL],[LO R]
                     87:                        [ZMOV]  [HI AL],[HI R]
                     88: 
                     89: %      PEFFECT|PRVALUE
                     90:        LONG            DXAX    *       DXAX    DXAX
                     91:                ADR|LV          FU32
                     92:                TREG    LONG
                     93:                        [ZPUSH] [HI R]
                     94:                        [ZPUSH] [LO R]
                     95:                        [ZPUSH] [HI AL]
                     96:                        [ZPUSH] [LO AL]
                     97:                        [CALL]  [GID vrmul]
                     98:                        [ZADD]  [REGNO SP],[CONST 8]
                     99:                        [ZMOV]  [LO AL],[LO R]
                    100:                        [ZMOV]  [HI AL],[HI R]
                    101: 
                    102: %      PEFFECT|PRVALUE
                    103:        LONG            DXAX    *       *       DXAX
                    104:                ADR|LV          FS32
                    105:                ADR             LONG
                    106:                        [ZPUSH] [HI AR]
                    107:                        [ZPUSH] [LO AR]
                    108:                        [ZPUSH] [HI AL]
                    109:                        [ZPUSH] [LO AL]
                    110:                        [CALL]  [GID lrmul]
                    111:                        [ZADD]  [REGNO SP],[CONST 8]
                    112:                        [ZMOV]  [LO AL],[LO R]
                    113:                        [ZMOV]  [HI AL],[HI R]
                    114: 
                    115: %      PEFFECT|PRVALUE
                    116:        LONG            DXAX    *       *       DXAX
                    117:                ADR|LV          FU32
                    118:                ADR     LONG
                    119:                        [ZPUSH] [HI AR]
                    120:                        [ZPUSH] [LO AR]
                    121:                        [ZPUSH] [HI AL]
                    122:                        [ZPUSH] [LO AL]
                    123:                        [CALL]  [GID vrmul]
                    124:                        [ZADD]  [REGNO SP],[CONST 8]
                    125:                        [ZMOV]  [LO AL],[LO R]
                    126:                        [ZMOV]  [HI AL],[HI R]
                    127: 
                    128: ////////
                    129: /
                    130: / Floating point, using the numeric
                    131: / data coprocessor (8087).
                    132: /
                    133: ////////
                    134: 
                    135: #ifdef NDPDEF
                    136: %      PEFFECT|PRVALUE
                    137:        FF32|FF64       FPAC    *       FPAC    FPAC
                    138:                ADR|LV          FF32
                    139:                TREG            FF64
                    140:                        [ZFMULF] [AL]
                    141:                [IFV]   [ZFSTF] [AL]
                    142:                [IFE]   [ZFSTPF] [AL]
                    143: 
                    144: %      PEFFECT|PRVALUE
                    145:        FF32|FF64       FPAC    *       FPAC    FPAC
                    146:                ADR|LV          FF64
                    147:                TREG            FF64
                    148:                        [ZFMULD] [AL]
                    149:                [IFV]   [ZFSTD] [AL]
                    150:                [IFE]   [ZFSTPD] [AL]
                    151: #endif

unix.superglobalmegacorp.com

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