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