vsnprintf.lst 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. GAS LISTING /tmp/ccr1Sv4y.s page 1
  2. 1 .file "vsnprintf.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,"ax",@progbits
  10. 9 .type _snputb, @function
  11. 10 _snputb:
  12. 11 0000 0F93 push r16
  13. 12 0002 1F93 push r17
  14. 13 0004 CF93 push r28
  15. 14 0006 DF93 push r29
  16. 15 /* prologue: function */
  17. 16 /* frame size = 0 */
  18. 17 /* stack size = 4 */
  19. 18 .L__stack_usage = 4
  20. 19 0008 8C01 movw r16,r24
  21. 20 000a DC01 movw r26,r24
  22. 21 000c 1296 adiw r26,2
  23. 22 000e CD91 ld r28,X+
  24. 23 0010 DC91 ld r29,X
  25. 24 0012 1397 sbiw r26,2+1
  26. 25 0014 2097 sbiw r28,0
  27. 26 0016 01F0 breq .L4
  28. 27 0018 4C17 cp r20,r28
  29. 28 001a 5D07 cpc r21,r29
  30. 29 001c 00F4 brsh .L3
  31. 30 001e EA01 movw r28,r20
  32. 31 .L3:
  33. 32 0020 D801 movw r26,r16
  34. 33 0022 ED91 ld r30,X+
  35. 34 0024 FC91 ld r31,X
  36. 35 0026 AE01 movw r20,r28
  37. 36 0028 8081 ld r24,Z
  38. 37 002a 9181 ldd r25,Z+1
  39. 38 002c 0E94 0000 call memcpy
  40. 39 0030 D801 movw r26,r16
  41. 40 0032 ED91 ld r30,X+
  42. 41 0034 FC91 ld r31,X
  43. 42 0036 1197 sbiw r26,1
  44. 43 0038 8081 ld r24,Z
  45. 44 003a 9181 ldd r25,Z+1
  46. 45 003c 8C0F add r24,r28
  47. 46 003e 9D1F adc r25,r29
  48. 47 0040 9183 std Z+1,r25
  49. 48 0042 8083 st Z,r24
  50. 49 0044 1296 adiw r26,2
  51. 50 0046 8D91 ld r24,X+
  52. 51 0048 9C91 ld r25,X
  53. 52 004a 1397 sbiw r26,2+1
  54. 53 004c 8C1B sub r24,r28
  55. 54 004e 9D0B sbc r25,r29
  56. 55 0050 1396 adiw r26,2+1
  57. 56 0052 9C93 st X,r25
  58. 57 0054 8E93 st -X,r24
  59. GAS LISTING /tmp/ccr1Sv4y.s page 2
  60. 58 0056 1297 sbiw r26,2
  61. 59 0058 00C0 rjmp .L2
  62. 60 .L4:
  63. 61 005a C0E0 ldi r28,0
  64. 62 005c D0E0 ldi r29,0
  65. 63 .L2:
  66. 64 005e CE01 movw r24,r28
  67. 65 /* epilogue start */
  68. 66 0060 DF91 pop r29
  69. 67 0062 CF91 pop r28
  70. 68 0064 1F91 pop r17
  71. 69 0066 0F91 pop r16
  72. 70 0068 0895 ret
  73. 71 .size _snputb, .-_snputb
  74. 72 .section .text.vsnprintf,"ax",@progbits
  75. 73 .global vsnprintf
  76. 74 .type vsnprintf, @function
  77. 75 vsnprintf:
  78. 76 0000 EF92 push r14
  79. 77 0002 FF92 push r15
  80. 78 0004 0F93 push r16
  81. 79 0006 1F93 push r17
  82. 80 0008 CF93 push r28
  83. 81 000a DF93 push r29
  84. 82 000c 00D0 rcall .
  85. 83 000e 00D0 rcall .
  86. 84 0010 CDB7 in r28,__SP_L__
  87. 85 0012 DEB7 in r29,__SP_H__
  88. 86 /* prologue: function */
  89. 87 /* frame size = 6 */
  90. 88 /* stack size = 12 */
  91. 89 .L__stack_usage = 12
  92. 90 0014 9E83 std Y+6,r25
  93. 91 0016 8D83 std Y+5,r24
  94. 92 0018 7B01 movw r14,r22
  95. 93 001a 6115 cp r22,__zero_reg__
  96. 94 001c 7105 cpc r23,__zero_reg__
  97. 95 001e 01F0 breq .L9
  98. 96 0020 CE01 movw r24,r28
  99. 97 0022 0596 adiw r24,5
  100. 98 0024 9A83 std Y+2,r25
  101. 99 0026 8983 std Y+1,r24
  102. 100 0028 CB01 movw r24,r22
  103. 101 002a 0197 sbiw r24,1
  104. 102 002c 9C83 std Y+4,r25
  105. 103 002e 8B83 std Y+3,r24
  106. 104 0030 8901 movw r16,r18
  107. 105 0032 9A01 movw r18,r20
  108. 106 0034 AE01 movw r20,r28
  109. 107 0036 4F5F subi r20,-1
  110. 108 0038 5F4F sbci r21,-1
  111. 109 003a 60E0 ldi r22,lo8(gs(_snputb_P))
  112. 110 003c 70E0 ldi r23,hi8(gs(_snputb_P))
  113. 111 003e 80E0 ldi r24,lo8(gs(_snputb))
  114. 112 0040 90E0 ldi r25,hi8(gs(_snputb))
  115. 113 0042 0E94 0000 call _putf
  116. 114 0046 E816 cp r14,r24
  117. GAS LISTING /tmp/ccr1Sv4y.s page 3
  118. 115 0048 F906 cpc r15,r25
  119. 116 004a 00F4 brsh .L8
  120. 117 004c C701 movw r24,r14
  121. 118 .L8:
  122. 119 004e ED81 ldd r30,Y+5
  123. 120 0050 FE81 ldd r31,Y+6
  124. 121 0052 1082 st Z,__zero_reg__
  125. 122 0054 00C0 rjmp .L7
  126. 123 .L9:
  127. 124 0056 80E0 ldi r24,0
  128. 125 0058 90E0 ldi r25,0
  129. 126 .L7:
  130. 127 /* epilogue start */
  131. 128 005a 2696 adiw r28,6
  132. 129 005c 0FB6 in __tmp_reg__,__SREG__
  133. 130 005e F894 cli
  134. 131 0060 DEBF out __SP_H__,r29
  135. 132 0062 0FBE out __SREG__,__tmp_reg__
  136. 133 0064 CDBF out __SP_L__,r28
  137. 134 0066 DF91 pop r29
  138. 135 0068 CF91 pop r28
  139. 136 006a 1F91 pop r17
  140. 137 006c 0F91 pop r16
  141. 138 006e FF90 pop r15
  142. 139 0070 EF90 pop r14
  143. 140 0072 0895 ret
  144. 141 .size vsnprintf, .-vsnprintf
  145. 142 .ident "GCC: (GNU) 5.3.0"
  146. GAS LISTING /tmp/ccr1Sv4y.s page 4
  147. DEFINED SYMBOLS
  148. *ABS*:0000000000000000 vsnprintf.c
  149. /tmp/ccr1Sv4y.s:2 *ABS*:000000000000003e __SP_H__
  150. /tmp/ccr1Sv4y.s:3 *ABS*:000000000000003d __SP_L__
  151. /tmp/ccr1Sv4y.s:4 *ABS*:000000000000003f __SREG__
  152. /tmp/ccr1Sv4y.s:5 *ABS*:000000000000003b __RAMPZ__
  153. /tmp/ccr1Sv4y.s:6 *ABS*:0000000000000000 __tmp_reg__
  154. /tmp/ccr1Sv4y.s:7 *ABS*:0000000000000001 __zero_reg__
  155. /tmp/ccr1Sv4y.s:10 .text._snputb:0000000000000000 _snputb
  156. /tmp/ccr1Sv4y.s:75 .text.vsnprintf:0000000000000000 vsnprintf
  157. UNDEFINED SYMBOLS
  158. memcpy
  159. _snputb_P
  160. _putf