home *** CD-ROM | disk | FTP | other *** search
/ Really Useful CD 1 / ReallyUsefulCD1.iso / extras / progutils / arm_divide / div_fast next >
Encoding:
Text File  |  1991-06-09  |  4.5 KB  |  216 lines

  1. ; division routine
  2. ; 1. calculate flag if result is negate and convert operands to positiv
  3. ; 2. second "divide" with unsigned suczessive Approximation  
  4. ; 3. fix the sign of result 
  5.  
  6.         .MACRO INTdivide
  7.          LDR R2,%2
  8.          LDR R3,%3 
  9.  
  10.          MOV R0,#0
  11.          CMP R2,#0
  12.           RSBLT R2,R2,#0
  13.           SUBLT R0,R0,#1
  14.          CMP R3,#0
  15.           RSBLT R3,R3,#0
  16.           MVNLT R0,R0
  17.  
  18.          MOV  R1,#0
  19.  
  20.          ADDS R2,R2,R2
  21.          ADCS R1,R1,R1
  22.          CMP  R1,R3
  23.          SUBGE  R1,R1,R3
  24.          ADDGE  R2,R2,#1         
  25. \l2
  26.          ADDS R2,R2,R2
  27.          ADCS R1,R1,R1
  28.          CMP  R1,R3
  29.          SUBGE  R1,R1,R3
  30.          ADDGE  R2,R2,#1         
  31. \l3
  32.          ADDS R2,R2,R2
  33.          ADCS R1,R1,R1
  34.          CMP  R1,R3
  35.          SUBGE  R1,R1,R3
  36.          ADDGE  R2,R2,#1         
  37. \l4
  38.          ADDS R2,R2,R2
  39.          ADCS R1,R1,R1
  40.          CMP  R1,R3
  41.          SUBGE  R1,R1,R3
  42.          ADDGE  R2,R2,#1         
  43. \l5
  44.          ADDS R2,R2,R2
  45.          ADCS R1,R1,R1
  46.          CMP  R1,R3
  47.          SUBGE  R1,R1,R3
  48.          ADDGE  R2,R2,#1         
  49. \l6
  50.          ADDS R2,R2,R2
  51.          ADCS R1,R1,R1
  52.          CMP  R1,R3
  53.          SUBGE  R1,R1,R3
  54.          ADDGE  R2,R2,#1         
  55. \l7
  56.          ADDS R2,R2,R2
  57.          ADCS R1,R1,R1
  58.          CMP  R1,R3
  59.          SUBGE  R1,R1,R3
  60.          ADDGE  R2,R2,#1         
  61. \l8
  62.          ADDS R2,R2,R2
  63.          ADCS R1,R1,R1
  64.          CMP  R1,R3
  65.          SUBGE  R1,R1,R3
  66.          ADDGE  R2,R2,#1         
  67. \l9
  68.          ADDS R2,R2,R2
  69.          ADCS R1,R1,R1
  70.          CMP  R1,R3
  71.          SUBGE  R1,R1,R3
  72.          ADDGE  R2,R2,#1         
  73. \l10
  74.          ADDS R2,R2,R2
  75.          ADCS R1,R1,R1
  76.          CMP  R1,R3
  77.          SUBGE  R1,R1,R3
  78.          ADDGE  R2,R2,#1         
  79. \l11
  80.          ADDS R2,R2,R2
  81.          ADCS R1,R1,R1
  82.          CMP  R1,R3
  83.          SUBGE  R1,R1,R3
  84.          ADDGE  R2,R2,#1         
  85. \l12
  86.          ADDS R2,R2,R2
  87.          ADCS R1,R1,R1
  88.          CMP  R1,R3
  89.          SUBGE  R1,R1,R3
  90.          ADDGE  R2,R2,#1         
  91. \l13
  92.          ADDS R2,R2,R2
  93.          ADCS R1,R1,R1
  94.          CMP  R1,R3
  95.          SUBGE  R1,R1,R3
  96.          ADDGE  R2,R2,#1         
  97. \l14
  98.          ADDS R2,R2,R2
  99.          ADCS R1,R1,R1
  100.          CMP  R1,R3
  101.          SUBGE  R1,R1,R3
  102.          ADDGE  R2,R2,#1         
  103. \l15
  104.          ADDS R2,R2,R2
  105.          ADCS R1,R1,R1
  106.          CMP  R1,R3
  107.          SUBGE  R1,R1,R3
  108.          ADDGE  R2,R2,#1         
  109. \l16
  110.          ADDS R2,R2,R2
  111.          ADCS R1,R1,R1
  112.          CMP  R1,R3
  113.          SUBGE  R1,R1,R3
  114.          ADDGE  R2,R2,#1         
  115. \l17
  116.          ADDS R2,R2,R2
  117.          ADCS R1,R1,R1
  118.          CMP  R1,R3
  119.          SUBGE  R1,R1,R3
  120.          ADDGE  R2,R2,#1         
  121. \l18
  122.          ADDS R2,R2,R2
  123.          ADCS R1,R1,R1
  124.          CMP  R1,R3
  125.          SUBGE  R1,R1,R3
  126.          ADDGE  R2,R2,#1         
  127. \l19
  128.          ADDS R2,R2,R2
  129.          ADCS R1,R1,R1
  130.          CMP  R1,R3
  131.          SUBGE  R1,R1,R3
  132.          ADDGE  R2,R2,#1         
  133. \l20
  134.          ADDS R2,R2,R2
  135.          ADCS R1,R1,R1
  136.          CMP  R1,R3
  137.          SUBGE  R1,R1,R3
  138.          ADDGE  R2,R2,#1         
  139. \l21
  140.          ADDS R2,R2,R2
  141.          ADCS R1,R1,R1
  142.          CMP  R1,R3
  143.          SUBGE  R1,R1,R3
  144.          ADDGE  R2,R2,#1         
  145. \l22
  146.          ADDS R2,R2,R2
  147.          ADCS R1,R1,R1
  148.          CMP  R1,R3
  149.          SUBGE  R1,R1,R3
  150.          ADDGE  R2,R2,#1         
  151. \l23
  152.          ADDS R2,R2,R2
  153.          ADCS R1,R1,R1
  154.          CMP  R1,R3
  155.          SUBGE  R1,R1,R3
  156.          ADDGE  R2,R2,#1         
  157. \l24
  158.          ADDS R2,R2,R2
  159.          ADCS R1,R1,R1
  160.          CMP  R1,R3
  161.          SUBGE  R1,R1,R3
  162.          ADDGE  R2,R2,#1         
  163. \l25
  164.          ADDS R2,R2,R2
  165.          ADCS R1,R1,R1
  166.          CMP  R1,R3
  167.          SUBGE  R1,R1,R3
  168.          ADDGE  R2,R2,#1         
  169. \l26
  170.          ADDS R2,R2,R2
  171.          ADCS R1,R1,R1
  172.          CMP  R1,R3
  173.          SUBGE  R1,R1,R3
  174.          ADDGE  R2,R2,#1         
  175. \l27
  176.          ADDS R2,R2,R2
  177.          ADCS R1,R1,R1
  178.          CMP  R1,R3
  179.          SUBGE  R1,R1,R3
  180.          ADDGE  R2,R2,#1         
  181. \l28
  182.          ADDS R2,R2,R2
  183.          ADCS R1,R1,R1
  184.          CMP  R1,R3
  185.          SUBGE  R1,R1,R3
  186.          ADDGE  R2,R2,#1         
  187. \l29
  188.          ADDS R2,R2,R2
  189.          ADCS R1,R1,R1
  190.          CMP  R1,R3
  191.          SUBGE  R1,R1,R3
  192.          ADDGE  R2,R2,#1         
  193. \l30
  194.          ADDS R2,R2,R2
  195.          ADCS R1,R1,R1
  196.          CMP  R1,R3
  197.          SUBGE  R1,R1,R3
  198.          ADDGE  R2,R2,#1         
  199. \l31
  200.          ADDS R2,R2,R2
  201.          ADCS R1,R1,R1
  202.          CMP  R1,R3
  203.          SUBGE  R1,R1,R3
  204.          ADDGE  R2,R2,#1         
  205. \l32
  206.          ADDS R2,R2,R2
  207.          ADCS R1,R1,R1
  208.          CMP  R1,R3
  209.          SUBGE  R1,R1,R3
  210.          ADDGE  R2,R2,#1         
  211.     
  212.          CMP R0,#0
  213.          RSBNE R2,R2,#0 
  214.          STR R2,%1
  215.         .ENDM 
  216.