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

1.1     ! root        1: //////////
        !             2: / n1/i386/tables/assign.t
        !             3: //////////
        !             4: 
        !             5: /////////
        !             6: /
        !             7: / Assignment (=).
        !             8: / Longs, pointers, words, bytes, fields, doubles.
        !             9: / The '=' operator is a non-conversion operator for integer types and pointers.
        !            10: / There must be some special entries here to handle the cross type cases.
        !            11: /
        !            12: /////////
        !            13: 
        !            14: ASSIGN:
        !            15: 
        !            16: //////////
        !            17: /
        !            18: / Simple integer assignment.
        !            19: /
        !            20: //////////
        !            21: 
        !            22: //////////
        !            23: / Longs and pointers.
        !            24: //////////
        !            25: 
        !            26: / Register dword = 0 or NULL.
        !            27: %      PEFFECT
        !            28:        DWORD           NONE    *       *       NONE
        !            29:                REG|MMX         DWORD
        !            30:                0|MMX           *
        !            31:                        [ZSUB]  [AL],[AL]
        !            32: 
        !            33: / Register dword = dword.
        !            34: %      PEFFECT
        !            35:        DWORD           NONE    *       *       NONE
        !            36:                REG|MMX         DWORD
        !            37:                EASY|MMX        DWORD
        !            38: / Dword = register dword.
        !            39: %      PEFFECT
        !            40:        DWORD           NONE    *       *       NONE
        !            41:                ADR|LV          DWORD
        !            42:                REG|MMX         DWORD
        !            43:                        [ZMOV]  [AL],[AR]
        !            44: 
        !            45: / Register dword = effective address.
        !            46: %      PEFFECT
        !            47:        DWORD           NONE    *       *       NONE
        !            48:                REG|MMX         DWORD
        !            49:                LEA|MMX         DWORD
        !            50:                        [ZLEA]  [AL],[NSE AR]
        !            51: 
        !            52: / Integer or pointer = immediate.
        !            53: %      PEFFECT
        !            54:        DWORD           NONE    *       *       NONE
        !            55:                ADR|LV          DWORD|SHORT
        !            56:                IMM|MMX         DWORD
        !            57:                        [TL ZMOV]       [AL],[TL AR]
        !            58: 
        !            59: / Dword = dword.
        !            60: %      PEFFECT|PVALUE|P_SRT
        !            61:        DWORD           ANYR    *       ANYR    TEMP
        !            62:                ADR|LV          DWORD
        !            63:                TREG            DWORD
        !            64:                        [ZMOV]  [AL],[AR]
        !            65: 
        !            66: //////////
        !            67: / Words.
        !            68: //////////
        !            69: 
        !            70: / Word = immediate word.
        !            71: %      PEFFECT
        !            72:        DWORD           NONE    *       *       NONE
        !            73:                ADR|LV          WORD
        !            74:                IMM|MMX         WORD
        !            75:                        [ZMOVW] [AL],[AR]
        !            76: 
        !            77: / Word = word.
        !            78: %      PEFFECT|PVALUE|PREL|P_SRT
        !            79:        LONG            ANYR    *       ANYR    TEMP
        !            80:                ADR|LV          WORD
        !            81:                TREG            WORD
        !            82:                [IFV]   [TL ZMOVSX]     [R],[LO RR]
        !            83:                        [ZMOVW]         [AL],[LO R]
        !            84:                [IFR]   [ZCMPW]         [LO R],[CONST 0]
        !            85:                [IFR]   [REL0]          [LAB]
        !            86: 
        !            87: //////////
        !            88: / Bytes.
        !            89: //////////
        !            90: 
        !            91: / Byte = immediate byte.
        !            92: %      PEFFECT
        !            93:        LONG            NONE    *       *       NONE
        !            94:                ADR|LV          BYTE
        !            95:                IMM|MMX         BYTE
        !            96:                        [ZMOVB] [AL], [AR]
        !            97: 
        !            98: / Byte = byte.
        !            99: %      PEFFECT|PVALUE|PREL|P_SRT|PBYTE
        !           100:        LONG            ANYR    *       ANYR    TEMP
        !           101:                ADR|LV          BYTE
        !           102:                TREG            BYTE
        !           103:                [IFV]   [TL ZMOVSX]     [R],[LO LO RR]
        !           104:                        [ZMOVB]         [AL],[LO LO R]
        !           105:                [IFR]   [ZCMPB]         [LO LO R],[CONST 0]
        !           106:                [IFR]   [REL0]          [LAB]
        !           107: 
        !           108: //////////
        !           109: /
        !           110: / Mixed type assignment.
        !           111: /
        !           112: //////////
        !           113: 
        !           114: / Dword = short.
        !           115: %      PEFFECT|PVALUE|P_SRT|PBYTE
        !           116:        DWORD           ANYR    *       ANYR    TEMP
        !           117:                ADR|LV          DWORD
        !           118:                TREG            SHORT
        !           119:                        [TR ZMOVSX]     [R],[TR RR]
        !           120:                        [ZMOV]          [AL],[R]
        !           121: 
        !           122: / Short = long or pointer.
        !           123: %      PEFFECT|PVALUE|P_SRT|PBYTE
        !           124:        LONG            ANYR    *       ANYR    TEMP
        !           125:                ADR|LV          SHORT
        !           126:                TREG            DWORD
        !           127:                        [TL ZMOV]       [AL],[TL AR]
        !           128:                [IFV]   [TL ZMOVSX]     [R], [TL AR]
        !           129: 
        !           130: /////////
        !           131: /
        !           132: / Field assignment.
        !           133: / The right operand has been preshifted and masked,
        !           134: / just like the right side of an '|=' or '^=' operation.
        !           135: / All you do is clear the junk and OR it in.
        !           136: / In value context, unsigned result must be masked;
        !           137: / signed result mask is unnecessary because of sign-extend shifts.
        !           138: /
        !           139: /////////
        !           140: 
        !           141: / Immediate to signed field.
        !           142: %      PEFFECT|PVALUE
        !           143:        FS32            ANYR    *       *       TEMP
        !           144:                ADR|LV          FLD
        !           145:                IMM|MMX         LONG
        !           146:                        [TL ZAND]       [AL],[TL CMASK]         / clear
        !           147:                        [TL ZOR]        [AL],[TL AR]            / store
        !           148:                [IFV]   [TL ZMOVZX]     [R],[AL]                / fetch
        !           149: 
        !           150: / Immediate to unsigned field.
        !           151: %      PEFFECT|PVALUE
        !           152:        FU32            ANYR    *       *       TEMP
        !           153:                ADR|LV          FLD
        !           154:                IMM|MMX         LONG
        !           155:                        [TL ZAND]       [AL],[TL CMASK]         / clear
        !           156:                        [TL ZOR]        [AL],[TL AR]            / store
        !           157:                [IFV]   [TL ZMOVZX]     [R],[AL]                / fetch
        !           158:                [IFV]   [ZAND]          [R],[EMASK]             / mask
        !           159: 
        !           160: / Signed field.
        !           161: %      PEFFECT|PVALUE|P_SRT|PBYTE
        !           162:        FS32            ANYR    *       ANYR    TEMP
        !           163:                ADR|LV          FLD
        !           164:                TREG            LONG
        !           165:                        [TL ZAND]       [AL],[TL CMASK]
        !           166:                        [TL ZOR]        [AL],[TL R]
        !           167:                [IFV]   [TL ZMOVSX]     [R],[AL]
        !           168: 
        !           169: / Unsigned field.
        !           170: %      PEFFECT|PVALUE|P_SRT|PBYTE
        !           171:        FU32            ANYR    *       ANYR    TEMP
        !           172:                ADR|LV          FLD
        !           173:                TREG            LONG
        !           174:                        [TL ZAND]       [AL],[TL CMASK]
        !           175:                        [TL ZOR]        [AL],[TL R]
        !           176:                [IFV]   [TL ZMOVSX]     [R],[AL]
        !           177:                [IFV]   [ZAND]          [R],[EMASK]
        !           178: 
        !           179: //////////
        !           180: / Floating point.
        !           181: //////////
        !           182: 
        !           183: / DECVAX and IEEE software floating point assignment.
        !           184: / Zero and immediates are special.
        !           185: / Floats are different for DECVAX and IEEE. 
        !           186: 
        !           187: / Double = 0.
        !           188: %      PEFFECT|PIEEE|PDECVAX
        !           189:        FF64            EAX     *       *       NONE
        !           190:                ADR|LV          FF64
        !           191:                0|MMX           *
        !           192:                        [ZSUB]  [R],[R]
        !           193:                        [ZMOV]  [HI AL],[R]
        !           194:                        [ZMOV]  [LO AL],[R]
        !           195: 
        !           196: / Double = constant.
        !           197: %      PEFFECT|PIEEE|PDECVAX
        !           198:        FF64            NONE    *       *       NONE
        !           199:                ADR|LV          FF64
        !           200:                IMM|MMX         FF64
        !           201:                        [ZMOV]  [HI AL],[HI AR]
        !           202:                        [ZMOV]  [LO AL],[LO AR]
        !           203: 
        !           204: / Double = double.
        !           205: %      PEFFECT|PVALUE|P_SRT|PIEEE|PDECVAX
        !           206:        FF64            EDXEAX  *       EDXEAX  EDXEAX
        !           207:                ADR|LV          FF64
        !           208:                TREG            FF64
        !           209:                        [ZMOV]  [HI AL],[HI R]
        !           210:                        [ZMOV]  [LO AL],[LO R]
        !           211: 
        !           212: / Assignment to 32-bit floats.
        !           213: / Float = 0.
        !           214: %      PEFFECT|PDECVAX|PIEEE
        !           215:        FF64            EAX     *       *       NONE
        !           216:                ADR|LV          FF32
        !           217:                0|MMX           *
        !           218:                        [ZSUB]  [R],[R]
        !           219:                        [ZMOV]  [AL],[R]
        !           220: 
        !           221: / Float = constant, DECVAX.
        !           222: %      PEFFECT|PDECVAX
        !           223:        FF64            NONE    *       *       NONE
        !           224:                ADR|LV          FF32
        !           225:                IMM|MMX         FF64
        !           226:                        [ZMOV]  [AL],[LO AR]
        !           227: 
        !           228: / Float = constant, IEEE.
        !           229: %      PEFFECT|PVALUE|PDECVAX
        !           230:        FF64            EDXEAX  *       *       TEMP
        !           231:                ADR|LV          FF32
        !           232:                IMM|MMX         FF64
        !           233:                        [ZMOV]  [HI R], [HI AR]
        !           234:                        [ZMOV]  [LO R], [LO AR]
        !           235:                        [ZCALL] [GID _fdcvt]
        !           236:                        [ZMOV]  [AL],[LO R]
        !           237:                [IFV]   [ZCALL] [GID _dfcvt]
        !           238: 
        !           239: / Float = double or float, DECVAX.
        !           240: %      PEFFECT|PVALUE|P_SRT|PDECVAX
        !           241:        FF64            EDXEAX  *       EDXEAX  EDXEAX
        !           242:                ADR|LV          FF32
        !           243:                TREG            FLOAT
        !           244:                        [ZMOV]  [AL],[HI R]
        !           245: 
        !           246: / Float = double or float, IEEE.
        !           247: %      PEFFECT|PVALUE|P_SRT|PIEEE
        !           248:        FF64            EDXEAX  *       EDXEAX  EDXEAX
        !           249:                ADR|LV          FF32
        !           250:                TREG            FLOAT
        !           251:                        [ZCALL] [GID _fdcvt]
        !           252:                        [ZMOV]  [AL],[LO R]
        !           253:                [IFV]   [ZCALL] [GID _dfcvt]
        !           254: 
        !           255: / Hardware coprocessor (NDP) floating point.
        !           256: / Pop the NDP stack on assignment for effect.
        !           257: %      PEFFECT|P_SRT|PNDP
        !           258:        FF64            FPAC    *       FPAC    NONE
        !           259:                ADR|LV          FLOAT
        !           260:                TREG            FLOAT
        !           261:                        [TL ZFSTPD]     [AL]
        !           262: 
        !           263: / Leave the value on the NDP stack on assignment for value.
        !           264: %      PVALUE|P_SRT|PNDP
        !           265:        FF64            FPAC    *       FPAC    FPAC
        !           266:                ADR|LV          FLOAT
        !           267:                TREG            FLOAT
        !           268:                        [TL ZFSTD]      [AL]
        !           269: 
        !           270: //////////
        !           271: / end of n1/i386/tables/assign.t
        !           272: //////////

unix.superglobalmegacorp.com

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