|
|
1.1 root 1: //////////
2: / n1/i386/tables/mul.t
3: //////////
4:
5: /////////
6: /
7: / Multiplication (*).
8: / Immediate byte operands use the three-operand multiply immediate form.
9: / Otherwise, the multiply is done in EDX:EAX.
10: / The multiply instruction does not set any flags.
11: / Signed multiply should use the new i386 two-operand MUL
12: / but currently does not.
13: /
14: /////////
15:
16: MUL:
17:
18: / Long * byte constant.
19: % PEFFECT|PVALUE
20: DWORD ANYR * * TEMP
21: ADR LONG
22: SBYTE|MMX LONG
23: [ZIMULI] [R],[AL],[AR]
24:
25: / Long * long.
26: % PEFFECT|PVALUE
27: DWORD EDXEAX EAX * EAX
28: TREG LONG
29: ADR LONG
30: [TL ZIMUL] [AR]
31:
32: //////////
33: / Floating point.
34: //////////
35:
36: / DECVAX or IEEE software floating point.
37: / Double * double.
38: % PEFFECT|PVALUE|P_SLT|PDECVAX|PIEEE
39: FF64 EDXEAX EDXEAX * TEMP
40: TREG FF64
41: ADR|IMM FF64
42: [ZPUSH] [HI AR]
43: [ZPUSH] [LO AR]
44: [ZCALL] [GID _dmul]
45: [ZADD] [REGNO ESP],[CONST 8]
46:
47: / Hardware coprocessor (NDP) floating point.
48: % PVALUE|P_SLT|PNDP
49: FLOAT FPAC FPAC * FPAC
50: TREG FF64
51: ADR NDPARG
52: [TR ZFMULD] [AR]
53:
54: //////////
55: / end of n1/i386/tables/mul.t
56: //////////
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.