#include "gc.h" /* * code sequences for multiply by constant * all sequences start with leading '0'. * if sequence starts with 'i', then the * leading '0' is suppressed. * '0' mov r0,r1 * '1' sub r0,r1 * '2' sub r1,r0 * '3' add r0,r1 * '4' add r1,r0 * '5' add r0,r0 * '6' add r1,r1 * 'b' lsh $2,r0 * 'c' lsh $3,r0 * 'd'-'h' ... * 'j' lsh $2,r1 * 'k'-'p' ... */Multab multab[] ={ 2, "i5", 3, "64", 4, "i55", 5, "664", 6, "645", 7, "c2", 9, "k4", 10, "6645", 11, "66364", 12, "6455", 13, "66464", 14, "6d2", 15, "d2", 17, "l4", 18, "6d4", 19, "64k4", 20, "66455", 21, "664664", 22, "64c2", 23, "44c2", 24, "64c", 25, "63k4", 26, "64c4", 27, "663e2", 28, "66e2", 29, "63e2", 30, "6e2", 31, "e2", 33, "m4", 34, "6e4", 35, "64l4", 36, "66e4", 37, "664k4", 38, "64k45", 39, "454c2", 40, "664c", 41, "663k4", 42, "644c4", 43, "643k4", 44, "664c4", 45, "640d2", 46, "64d2", 47, "44d2", 48, "64d", 49, "63l4", 50, "64d4", 51, "640l4", 52, "646d4", 53, "643d4", 54, "6636f2", 55, "k3f2", 56, "kf2", 57, "k2k4", 58, "636f2", 59, "663f2", 60, "66f2", 61, "63f2", 62, "6f2", 63, "f2", 65, "n4", 66, "6f4", 67, "64m4", 68, "66f4", 69, "664l4", 70, "64l45", 71, "k1f4", 72, "k4c", 73, "k4k4", 74, "664k45", 75, "6640d2", 76, "664d2", 77, "434d2", 78, "644d2", 79, "454d2", 80, "664d", 81, "663l4", 82, "644d4", 83, "643l4", 84, "664d4", 85, "6640l4", 86, "6634l4", 87, "6443d4", 88, "6646d4", 89, "6643d4", 90, "6406e2", 91, "643e2", 92, "646e2", 93, "640e2", 94, "64e2", 95, "44e2", 96, "64e", 97, "63m4", 98, "64e4", 99, "640m4", 100, "646e4", 200, "66f364", 300, "j40jf2", 400, "64kg4", 500, "66h212", 600, "64m4c4", 700, "j4c4d2", 800, "64lh4", 900, "6464g4", 1000, "63g2c", 1100, "j4d2p4", 1200, "64k4f2", 1300, "j4n4b4", 1400, "64j4g2", 1600, "64d4e", 1800, "p4c2", 2000, "63g2d", 2100, "l4b2o4", 2200, "k4d4p4", 2300, "6644h2", 2400, "j4k4f4", 2500, "j4e2d4", 2600, "j40n4c", 3100, "jd12p2", 3200, "64d4f", 3600, "6d1p2", 3800, "e3k3g2", 3900, "jf20n4", 4000, "o4e2", 4100, "66p455", 4200, "l4c3e2", 4300, "l4b1f4", 4400, "64o4d4", 4600, "k45h2", 4700, "k3j4g2", 4800, "j40d2f", 5000, "l4c3m4", 5100, "j40h2b", 5200, "j40n4d", 6000, "d1o3h2", 6100, "o1l4b2", 6200, "ke12p2", 6400, "64d4g", 7200, "66e1p2", 7400, "m3m4c2", 7600, "l4f3c2", 7800, "kg20n4", 8000, "63g2f", 8100, "m2b4p4", 8200, "66p4c", 8700, "66f4g2", 8900, "l3j4g4", 9200, "k45h25", 9600, "j40d2g", 9800, "k4f3d4",}; int multabsize = sizeof(multab) / sizeof(multab[0]);
#include "gc.h"
/*
* code sequences for multiply by constant
* all sequences start with leading '0'.
* if sequence starts with 'i', then the
* leading '0' is suppressed.
* '0' mov r0,r1
* '1' sub r0,r1
* '2' sub r1,r0
* '3' add r0,r1
* '4' add r1,r0
* '5' add r0,r0
* '6' add r1,r1
* 'b' lsh $2,r0
* 'c' lsh $3,r0
* 'd'-'h' ...
* 'j' lsh $2,r1
* 'k'-'p' ...
*/
Multab multab[] =
{
2, "i5",
3, "64",
4, "i55",
5, "664",
6, "645",
7, "c2",
9, "k4",
10, "6645",
11, "66364",
12, "6455",
13, "66464",
14, "6d2",
15, "d2",
17, "l4",
18, "6d4",
19, "64k4",
20, "66455",
21, "664664",
22, "64c2",
23, "44c2",
24, "64c",
25, "63k4",
26, "64c4",
27, "663e2",
28, "66e2",
29, "63e2",
30, "6e2",
31, "e2",
33, "m4",
34, "6e4",
35, "64l4",
36, "66e4",
37, "664k4",
38, "64k45",
39, "454c2",
40, "664c",
41, "663k4",
42, "644c4",
43, "643k4",
44, "664c4",
45, "640d2",
46, "64d2",
47, "44d2",
48, "64d",
49, "63l4",
50, "64d4",
51, "640l4",
52, "646d4",
53, "643d4",
54, "6636f2",
55, "k3f2",
56, "kf2",
57, "k2k4",
58, "636f2",
59, "663f2",
60, "66f2",
61, "63f2",
62, "6f2",
63, "f2",
65, "n4",
66, "6f4",
67, "64m4",
68, "66f4",
69, "664l4",
70, "64l45",
71, "k1f4",
72, "k4c",
73, "k4k4",
74, "664k45",
75, "6640d2",
76, "664d2",
77, "434d2",
78, "644d2",
79, "454d2",
80, "664d",
81, "663l4",
82, "644d4",
83, "643l4",
84, "664d4",
85, "6640l4",
86, "6634l4",
87, "6443d4",
88, "6646d4",
89, "6643d4",
90, "6406e2",
91, "643e2",
92, "646e2",
93, "640e2",
94, "64e2",
95, "44e2",
96, "64e",
97, "63m4",
98, "64e4",
99, "640m4",
100, "646e4",
200, "66f364",
300, "j40jf2",
400, "64kg4",
500, "66h212",
600, "64m4c4",
700, "j4c4d2",
800, "64lh4",
900, "6464g4",
1000, "63g2c",
1100, "j4d2p4",
1200, "64k4f2",
1300, "j4n4b4",
1400, "64j4g2",
1600, "64d4e",
1800, "p4c2",
2000, "63g2d",
2100, "l4b2o4",
2200, "k4d4p4",
2300, "6644h2",
2400, "j4k4f4",
2500, "j4e2d4",
2600, "j40n4c",
3100, "jd12p2",
3200, "64d4f",
3600, "6d1p2",
3800, "e3k3g2",
3900, "jf20n4",
4000, "o4e2",
4100, "66p455",
4200, "l4c3e2",
4300, "l4b1f4",
4400, "64o4d4",
4600, "k45h2",
4700, "k3j4g2",
4800, "j40d2f",
5000, "l4c3m4",
5100, "j40h2b",
5200, "j40n4d",
6000, "d1o3h2",
6100, "o1l4b2",
6200, "ke12p2",
6400, "64d4g",
7200, "66e1p2",
7400, "m3m4c2",
7600, "l4f3c2",
7800, "kg20n4",
8000, "63g2f",
8100, "m2b4p4",
8200, "66p4c",
8700, "66f4g2",
8900, "l3j4g4",
9200, "k45h25",
9600, "j40d2g",
9800, "k4f3d4",
};
int multabsize = sizeof(multab) / sizeof(multab[0]);