vsnprintf_p.lst 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. GAS LISTING /tmp/ccNIwcOD.s page 1
  2. 1 .file "vsnprintf_p.c"
  3. 2 __SP_H__ = 0x3e
  4. 3 __SP_L__ = 0x3d
  5. 4 __SREG__ = 0x3f
  6. 5 __RAMPZ__ = 0x3b
  7. 6 __tmp_reg__ = 0
  8. 7 __zero_reg__ = 1
  9. 8 .section .text._snputb_P,"ax",@progbits
  10. 9 .global _snputb_P
  11. 10 .type _snputb_P, @function
  12. 11 _snputb_P:
  13. 12 0000 0F93 push r16
  14. 13 0002 1F93 push r17
  15. 14 0004 CF93 push r28
  16. 15 0006 DF93 push r29
  17. 16 /* prologue: function */
  18. 17 /* frame size = 0 */
  19. 18 /* stack size = 4 */
  20. 19 .L__stack_usage = 4
  21. 20 0008 8C01 movw r16,r24
  22. 21 000a DC01 movw r26,r24
  23. 22 000c 1296 adiw r26,2
  24. 23 000e CD91 ld r28,X+
  25. 24 0010 DC91 ld r29,X
  26. 25 0012 1397 sbiw r26,2+1
  27. 26 0014 2097 sbiw r28,0
  28. 27 0016 01F0 breq .L4
  29. 28 0018 4C17 cp r20,r28
  30. 29 001a 5D07 cpc r21,r29
  31. 30 001c 00F4 brsh .L3
  32. 31 001e EA01 movw r28,r20
  33. 32 .L3:
  34. 33 0020 D801 movw r26,r16
  35. 34 0022 ED91 ld r30,X+
  36. 35 0024 FC91 ld r31,X
  37. 36 0026 AE01 movw r20,r28
  38. 37 0028 8081 ld r24,Z
  39. 38 002a 9181 ldd r25,Z+1
  40. 39 002c 0E94 0000 call memcpy_P
  41. 40 0030 D801 movw r26,r16
  42. 41 0032 ED91 ld r30,X+
  43. 42 0034 FC91 ld r31,X
  44. 43 0036 1197 sbiw r26,1
  45. 44 0038 8081 ld r24,Z
  46. 45 003a 9181 ldd r25,Z+1
  47. 46 003c 8C0F add r24,r28
  48. 47 003e 9D1F adc r25,r29
  49. 48 0040 9183 std Z+1,r25
  50. 49 0042 8083 st Z,r24
  51. 50 0044 1296 adiw r26,2
  52. 51 0046 8D91 ld r24,X+
  53. 52 0048 9C91 ld r25,X
  54. 53 004a 1397 sbiw r26,2+1
  55. 54 004c 8C1B sub r24,r28
  56. 55 004e 9D0B sbc r25,r29
  57. 56 0050 1396 adiw r26,2+1
  58. 57 0052 9C93 st X,r25
  59. GAS LISTING /tmp/ccNIwcOD.s page 2
  60. 58 0054 8E93 st -X,r24
  61. 59 0056 1297 sbiw r26,2
  62. 60 0058 00C0 rjmp .L2
  63. 61 .L4:
  64. 62 005a C0E0 ldi r28,0
  65. 63 005c D0E0 ldi r29,0
  66. 64 .L2:
  67. 65 005e CE01 movw r24,r28
  68. 66 /* epilogue start */
  69. 67 0060 DF91 pop r29
  70. 68 0062 CF91 pop r28
  71. 69 0064 1F91 pop r17
  72. 70 0066 0F91 pop r16
  73. 71 0068 0895 ret
  74. 72 .size _snputb_P, .-_snputb_P
  75. 73 .section .text._snputb,"ax",@progbits
  76. 74 .type _snputb, @function
  77. 75 _snputb:
  78. 76 0000 0F93 push r16
  79. 77 0002 1F93 push r17
  80. 78 0004 CF93 push r28
  81. 79 0006 DF93 push r29
  82. 80 /* prologue: function */
  83. 81 /* frame size = 0 */
  84. 82 /* stack size = 4 */
  85. 83 .L__stack_usage = 4
  86. 84 0008 8C01 movw r16,r24
  87. 85 000a DC01 movw r26,r24
  88. 86 000c 1296 adiw r26,2
  89. 87 000e CD91 ld r28,X+
  90. 88 0010 DC91 ld r29,X
  91. 89 0012 1397 sbiw r26,2+1
  92. 90 0014 2097 sbiw r28,0
  93. 91 0016 01F0 breq .L9
  94. 92 0018 4C17 cp r20,r28
  95. 93 001a 5D07 cpc r21,r29
  96. 94 001c 00F4 brsh .L8
  97. 95 001e EA01 movw r28,r20
  98. 96 .L8:
  99. 97 0020 D801 movw r26,r16
  100. 98 0022 ED91 ld r30,X+
  101. 99 0024 FC91 ld r31,X
  102. 100 0026 AE01 movw r20,r28
  103. 101 0028 8081 ld r24,Z
  104. 102 002a 9181 ldd r25,Z+1
  105. 103 002c 0E94 0000 call memcpy
  106. 104 0030 D801 movw r26,r16
  107. 105 0032 ED91 ld r30,X+
  108. 106 0034 FC91 ld r31,X
  109. 107 0036 1197 sbiw r26,1
  110. 108 0038 8081 ld r24,Z
  111. 109 003a 9181 ldd r25,Z+1
  112. 110 003c 8C0F add r24,r28
  113. 111 003e 9D1F adc r25,r29
  114. 112 0040 9183 std Z+1,r25
  115. 113 0042 8083 st Z,r24
  116. 114 0044 1296 adiw r26,2
  117. GAS LISTING /tmp/ccNIwcOD.s page 3
  118. 115 0046 8D91 ld r24,X+
  119. 116 0048 9C91 ld r25,X
  120. 117 004a 1397 sbiw r26,2+1
  121. 118 004c 8C1B sub r24,r28
  122. 119 004e 9D0B sbc r25,r29
  123. 120 0050 1396 adiw r26,2+1
  124. 121 0052 9C93 st X,r25
  125. 122 0054 8E93 st -X,r24
  126. 123 0056 1297 sbiw r26,2
  127. 124 0058 00C0 rjmp .L7
  128. 125 .L9:
  129. 126 005a C0E0 ldi r28,0
  130. 127 005c D0E0 ldi r29,0
  131. 128 .L7:
  132. 129 005e CE01 movw r24,r28
  133. 130 /* epilogue start */
  134. 131 0060 DF91 pop r29
  135. 132 0062 CF91 pop r28
  136. 133 0064 1F91 pop r17
  137. 134 0066 0F91 pop r16
  138. 135 0068 0895 ret
  139. 136 .size _snputb, .-_snputb
  140. 137 .section .text.vsnprintf_P,"ax",@progbits
  141. 138 .global vsnprintf_P
  142. 139 .type vsnprintf_P, @function
  143. 140 vsnprintf_P:
  144. 141 0000 8F92 push r8
  145. 142 0002 9F92 push r9
  146. 143 0004 AF92 push r10
  147. 144 0006 BF92 push r11
  148. 145 0008 CF92 push r12
  149. 146 000a DF92 push r13
  150. 147 000c EF92 push r14
  151. 148 000e FF92 push r15
  152. 149 0010 0F93 push r16
  153. 150 0012 1F93 push r17
  154. 151 0014 CF93 push r28
  155. 152 0016 DF93 push r29
  156. 153 0018 00D0 rcall .
  157. 154 001a 00D0 rcall .
  158. 155 001c CDB7 in r28,__SP_L__
  159. 156 001e DEB7 in r29,__SP_H__
  160. 157 /* prologue: function */
  161. 158 /* frame size = 6 */
  162. 159 /* stack size = 18 */
  163. 160 .L__stack_usage = 18
  164. 161 0020 9E83 std Y+6,r25
  165. 162 0022 8D83 std Y+5,r24
  166. 163 0024 7B01 movw r14,r22
  167. 164 0026 5A01 movw r10,r20
  168. 165 0028 8901 movw r16,r18
  169. 166 002a 6115 cp r22,__zero_reg__
  170. 167 002c 7105 cpc r23,__zero_reg__
  171. 168 002e 01F0 breq .L13
  172. 169 0030 CE01 movw r24,r28
  173. 170 0032 0596 adiw r24,5
  174. 171 0034 9A83 std Y+2,r25
  175. GAS LISTING /tmp/ccNIwcOD.s page 4
  176. 172 0036 8983 std Y+1,r24
  177. 173 0038 CB01 movw r24,r22
  178. 174 003a 0197 sbiw r24,1
  179. 175 003c 9C83 std Y+4,r25
  180. 176 003e 8B83 std Y+3,r24
  181. 177 0040 CA01 movw r24,r20
  182. 178 0042 0E94 0000 call __strlen_P
  183. 179 0046 0196 adiw r24,1
  184. 180 0048 4C01 movw r8,r24
  185. 181 004a BC01 movw r22,r24
  186. 182 004c 80E0 ldi r24,lo8(heapFreeList)
  187. 183 004e 90E0 ldi r25,hi8(heapFreeList)
  188. 184 0050 0E94 0000 call NutHeapRootAlloc
  189. 185 0054 6C01 movw r12,r24
  190. 186 0056 0097 sbiw r24,0
  191. 187 0058 01F0 breq .L14
  192. 188 005a A401 movw r20,r8
  193. 189 005c B501 movw r22,r10
  194. 190 005e 0E94 0000 call memcpy_P
  195. 191 0062 9601 movw r18,r12
  196. 192 0064 AE01 movw r20,r28
  197. 193 0066 4F5F subi r20,-1
  198. 194 0068 5F4F sbci r21,-1
  199. 195 006a 60E0 ldi r22,lo8(gs(_snputb_P))
  200. 196 006c 70E0 ldi r23,hi8(gs(_snputb_P))
  201. 197 006e 80E0 ldi r24,lo8(gs(_snputb))
  202. 198 0070 90E0 ldi r25,hi8(gs(_snputb))
  203. 199 0072 0E94 0000 call _putf
  204. 200 0076 5C01 movw r10,r24
  205. 201 0078 B601 movw r22,r12
  206. 202 007a 80E0 ldi r24,lo8(heapFreeList)
  207. 203 007c 90E0 ldi r25,hi8(heapFreeList)
  208. 204 007e 0E94 0000 call NutHeapRootFree
  209. 205 0082 9501 movw r18,r10
  210. 206 0084 EA14 cp r14,r10
  211. 207 0086 FB04 cpc r15,r11
  212. 208 0088 00F4 brsh .L12
  213. 209 008a 9701 movw r18,r14
  214. 210 .L12:
  215. 211 008c ED81 ldd r30,Y+5
  216. 212 008e FE81 ldd r31,Y+6
  217. 213 0090 1082 st Z,__zero_reg__
  218. 214 0092 C901 movw r24,r18
  219. 215 0094 00C0 rjmp .L11
  220. 216 .L13:
  221. 217 0096 80E0 ldi r24,0
  222. 218 0098 90E0 ldi r25,0
  223. 219 009a 00C0 rjmp .L11
  224. 220 .L14:
  225. 221 009c 8FEF ldi r24,lo8(-1)
  226. 222 009e 9FEF ldi r25,lo8(-1)
  227. 223 .L11:
  228. 224 /* epilogue start */
  229. 225 00a0 2696 adiw r28,6
  230. 226 00a2 0FB6 in __tmp_reg__,__SREG__
  231. 227 00a4 F894 cli
  232. 228 00a6 DEBF out __SP_H__,r29
  233. GAS LISTING /tmp/ccNIwcOD.s page 5
  234. 229 00a8 0FBE out __SREG__,__tmp_reg__
  235. 230 00aa CDBF out __SP_L__,r28
  236. 231 00ac DF91 pop r29
  237. 232 00ae CF91 pop r28
  238. 233 00b0 1F91 pop r17
  239. 234 00b2 0F91 pop r16
  240. 235 00b4 FF90 pop r15
  241. 236 00b6 EF90 pop r14
  242. 237 00b8 DF90 pop r13
  243. 238 00ba CF90 pop r12
  244. 239 00bc BF90 pop r11
  245. 240 00be AF90 pop r10
  246. 241 00c0 9F90 pop r9
  247. 242 00c2 8F90 pop r8
  248. 243 00c4 0895 ret
  249. 244 .size vsnprintf_P, .-vsnprintf_P
  250. 245 .ident "GCC: (GNU) 5.3.0"
  251. GAS LISTING /tmp/ccNIwcOD.s page 6
  252. DEFINED SYMBOLS
  253. *ABS*:0000000000000000 vsnprintf_p.c
  254. /tmp/ccNIwcOD.s:2 *ABS*:000000000000003e __SP_H__
  255. /tmp/ccNIwcOD.s:3 *ABS*:000000000000003d __SP_L__
  256. /tmp/ccNIwcOD.s:4 *ABS*:000000000000003f __SREG__
  257. /tmp/ccNIwcOD.s:5 *ABS*:000000000000003b __RAMPZ__
  258. /tmp/ccNIwcOD.s:6 *ABS*:0000000000000000 __tmp_reg__
  259. /tmp/ccNIwcOD.s:7 *ABS*:0000000000000001 __zero_reg__
  260. /tmp/ccNIwcOD.s:11 .text._snputb_P:0000000000000000 _snputb_P
  261. /tmp/ccNIwcOD.s:75 .text._snputb:0000000000000000 _snputb
  262. /tmp/ccNIwcOD.s:140 .text.vsnprintf_P:0000000000000000 vsnprintf_P
  263. UNDEFINED SYMBOLS
  264. memcpy_P
  265. memcpy
  266. __strlen_P
  267. heapFreeList
  268. NutHeapRootAlloc
  269. _putf
  270. NutHeapRootFree