avcall-arm.S
上传用户:shenzhenrh
上传日期:2013-05-12
资源大小:2904k
文件大小:2k
源码类别:

信息检索与抽取

开发平台:

Unix_Linux

  1. #include "asmarm.h"
  2. // Generated by gcc 2.6.3 for ARM/RISCiX
  3. rfp .req r9
  4. sl .req r10
  5. fp .req r11
  6. ip .req r12
  7. sp .req r13
  8. lr .req r14
  9. pc .req r15
  10. .text
  11. .align 0
  12. .global C(__builtin_avcall)
  13. DECLARE_FUNCTION(__builtin_avcall)
  14. C(__builtin_avcall:)
  15. // args = 0, pretend = 0, frame = 1024
  16. // frameC(needed) = 0, current_function_anonymous_args = 0
  17. stmfd sp!, {r4, lr}
  18. mov ip, $4
  19. sub sp, sp, $1024
  20. mov r4, r0
  21. ldr r3, [r4, $20]
  22. sub r3, r3, $32
  23. rsb r3, r4, r3
  24. mov r0, r3, asr $2
  25. cmp ip, r0
  26. bge L3
  27. add r1, r4, $16
  28. add r2, sp, $16
  29. L5:
  30. ldr r3, [r1, $32]
  31. add r1, r1, $4
  32. str r3, [r2, $-16]
  33. add ip, ip, $1
  34. cmp ip, r0
  35. add r2, r2, $4
  36. blt L5
  37. L3:
  38. ldr r0, [r4, $32]
  39. ldr r3, [r4, $44]
  40. ldr r2, [r4, $40]
  41. ldr r1, [r4, $36]
  42. mov lr, pc
  43. ldr pc, [r4, $0]
  44. mov ip, r0
  45. ldr r3, [r4, $12]
  46. cmp r3, $1
  47. beq L8
  48. cmp r3, $0
  49. beq L60
  50. cmp r3, $2
  51. beq L61
  52. cmp r3, $3
  53. beq L61
  54. cmp r3, $4
  55. beq L61
  56. cmp r3, $5
  57. beq L62
  58. cmp r3, $6
  59. beq L62
  60. cmp r3, $7
  61. beq L60
  62. cmp r3, $8
  63. beq L60
  64. cmp r3, $9
  65. beq L60
  66. cmp r3, $10
  67. beq L60
  68. ldr r2, [r4, $12]
  69. sub r3, r2, $11
  70. cmp r3, $1
  71. bls L63
  72. cmp r2, $13
  73. ldreq r3, [r4, $8]
  74. streq r0, [r3, $0] // float
  75. beq L8
  76. L31:
  77. cmp r2, $14
  78. ldreq r3, [r4, $8]
  79. stmeqia r3, {r0, r1} // double
  80. beq L8
  81. L33:
  82. cmp r2, $15
  83. beq L60
  84. cmp r2, $16
  85. bne L8
  86. ldr r3, [r4, $4]
  87. tst r3, $1
  88. beq L38
  89. ldr r3, [r4, $16]
  90. cmp r3, $1
  91. ldreq r2, [r4, $8]
  92. ldreqb r3, [ip, $0]
  93. streqb r3, [r2, $0]
  94. beq L8
  95. L39:
  96. cmp r3, $2
  97. bne L41
  98. ldr r2, [r4, $8]
  99. ldr r3, [ip, $0] // movhi
  100. strb r3, [r2, $0]
  101. mov r3, r3, asr $8
  102. strb r3, [r2, $1]
  103. b L8
  104. L41:
  105. cmp r3, $4
  106. ldreq r2, [r4, $8]
  107. ldreq r3, [ip, $0]
  108. streq r3, [r2, $0]
  109. beq L8
  110. L43:
  111. cmp r3, $8
  112. bne L45
  113. ldr r2, [r4, $8]
  114. ldr r3, [ip, $0]
  115. str r3, [r2, $0]
  116. ldr r2, [r4, $8]
  117. ldr r3, [ip, $4]
  118. str r3, [r2, $4]
  119. b L8
  120. L45:
  121. add r3, r3, $3
  122. mov r1, r3, lsr $2
  123. sub r1, r1, $1
  124. cmp r1, $0
  125. blt L8
  126. L49:
  127. ldr r2, [r4, $8]
  128. ldr r3, [ip, r1, asl $2]
  129. str r3, [r2, r1, asl $2]
  130. sub r1, r1, $1
  131. cmp r1, $0
  132. bge L49
  133. b L8
  134. L38:
  135. tst r3, $512
  136. beq L8
  137. ldr r3, [r4, $16]
  138. cmp r3, $1
  139. bne L53
  140. L61:
  141. ldr r3, [r4, $8]
  142. strb ip, [r3, $0]
  143. b L8
  144. L53:
  145. cmp r3, $2
  146. bne L55
  147. L62:
  148. ldr r2, [r4, $8]
  149. strb ip, [r2, $0]
  150. mov r3, ip, asr $8
  151. strb r3, [r2, $1]
  152. b L8
  153. L55:
  154. cmp r3, $4
  155. bne L57
  156. L60:
  157. ldr r3, [r4, $8]
  158. str ip, [r3, $0]
  159. b L8
  160. L57:
  161. cmp r3, $8
  162. bne L8
  163. L63:
  164. ldr r3, [r4, $8]
  165. str ip, [r3, $0]
  166. ldr r3, [r4, $8]
  167. str r1, [r3, $4]
  168. L8:
  169. mov r0, $0
  170. add sp, sp, $1024
  171. ldmfd sp!, {r4, pc}^