mul.c 2.5 KB

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