divide_s.s 505 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. .text
  2. .align 4
  3. .code 32
  4. .global divide_s
  5. .type divide_s, %function
  6. divide_s:
  7. STMFD sp!,{r4 - r5}
  8. MOV r2,#0
  9. CMP r0,#0
  10. BLT END
  11. CMP r0,r1
  12. BGT END
  13. MOVWEQ r2,#0x7FFF
  14. BEQ END
  15. MOV r3,r1,LSL #1
  16. MOV r4,r1,LSL #2
  17. MOV r5,#5
  18. REPEAT:
  19. CMP r5,#0
  20. BEQ END
  21. LSL r2,r2,#3
  22. LSL r0,r0,#3
  23. CMP r0,r4
  24. SUBGE r0,r0,r4
  25. ORRGE r2,r2,#4
  26. CMP r0,r3
  27. SUBGE r0,r0,r3
  28. ORRGE r2,r2,#2
  29. CMP r0,r1
  30. SUBGE r0,r0,r1
  31. ORRGE r2,r2,#1
  32. SUB r5,#1
  33. B REPEAT
  34. END:
  35. MOV r0,r2
  36. LDMFD sp!,{r4 - r5}
  37. BX lr