dvi.s 546 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. .define .dvi
  2. .sect .text
  3. .dvi: LDMFD R12<,{R1,R2}
  4. STMFD R12<,{R4}
  5. CMP R1,#0
  6. BEQ dbyzero
  7. MOV R4,#0
  8. CMP R1,#0
  9. ADD.LT R4,R4,#1
  10. RSB.LT R1,R1,#0
  11. CMP R2,#0
  12. ADD.LT R4,R4,#2
  13. RSB.LT R2,R2,#0
  14. MOV R0,#1
  15. div1: CMP R1,#0x80000000
  16. CMP.CC R1,R2
  17. MOV.CC R1,R1,ASL #1
  18. MOV.CC R0,R0,ASL #1
  19. BCC div1
  20. MOV R3,#0
  21. div2: CMP R2,R1
  22. SUB.CS R2,R2,R1
  23. ADD.CS R3,R3,R0
  24. MOV.S R0,R0,LSR #1
  25. MOV.NE R1,R1,LSR #1
  26. BNE div2
  27. CMP R4, #1
  28. RSB.EQ R3,R3,#0
  29. CMP R4,#2
  30. RSB.EQ R3,R3,#0
  31. LDMFD R12<,{R4}
  32. MOV R15,R14
  33. dbyzero:
  34. MOV R0,#6
  35. STMFD R12<,{R0}
  36. BAL _EmTrp