|
|
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: //////////
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.