environ.lst 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360
  1. GAS LISTING /tmp/cceuPhBH.s page 1
  2. 1 .file "environ.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.read_string,"ax",@progbits
  10. 9 .type read_string, @function
  11. 10 read_string:
  12. 11 0000 AF92 push r10
  13. 12 0002 BF92 push r11
  14. 13 0004 CF92 push r12
  15. 14 0006 DF92 push r13
  16. 15 0008 EF92 push r14
  17. 16 000a FF92 push r15
  18. 17 000c 0F93 push r16
  19. 18 000e 1F93 push r17
  20. 19 0010 CF93 push r28
  21. 20 0012 DF93 push r29
  22. 21 0014 1F92 push __zero_reg__
  23. 22 0016 CDB7 in r28,__SP_L__
  24. 23 0018 DEB7 in r29,__SP_H__
  25. 24 /* prologue: function */
  26. 25 /* frame size = 1 */
  27. 26 /* stack size = 11 */
  28. 27 .L__stack_usage = 11
  29. 28 001a 6C01 movw r12,r24
  30. 29 001c 8B01 movw r16,r22
  31. 30 001e 5A01 movw r10,r20
  32. 31 0020 E12C mov r14,__zero_reg__
  33. 32 0022 F12C mov r15,__zero_reg__
  34. 33 .L4:
  35. 34 0024 41E0 ldi r20,lo8(1)
  36. 35 0026 50E0 ldi r21,0
  37. 36 0028 BE01 movw r22,r28
  38. 37 002a 6F5F subi r22,-1
  39. 38 002c 7F4F sbci r23,-1
  40. 39 002e F601 movw r30,r12
  41. 40 0030 8081 ld r24,Z
  42. 41 0032 9181 ldd r25,Z+1
  43. 42 0034 0E94 0000 call NutNvMemLoad
  44. 43 0038 892B or r24,r25
  45. 44 003a 01F4 brne .L6
  46. 45 003c F601 movw r30,r12
  47. 46 003e 8081 ld r24,Z
  48. 47 0040 9181 ldd r25,Z+1
  49. 48 0042 0196 adiw r24,1
  50. 49 0044 9183 std Z+1,r25
  51. 50 0046 8083 st Z,r24
  52. 51 0048 8981 ldd r24,Y+1
  53. 52 004a 8823 tst r24
  54. 53 004c 01F0 breq .L2
  55. 54 004e 0115 cp r16,__zero_reg__
  56. 55 0050 1105 cpc r17,__zero_reg__
  57. 56 0052 01F0 breq .L3
  58. 57 0054 F801 movw r30,r16
  59. GAS LISTING /tmp/cceuPhBH.s page 2
  60. 58 0056 8083 st Z,r24
  61. 59 0058 0F5F subi r16,-1
  62. 60 005a 1F4F sbci r17,-1
  63. 61 .L3:
  64. 62 005c FFEF ldi r31,-1
  65. 63 005e EF1A sub r14,r31
  66. 64 0060 FF0A sbc r15,r31
  67. 65 0062 AE14 cp r10,r14
  68. 66 0064 BF04 cpc r11,r15
  69. 67 0066 00F4 brsh .L4
  70. 68 0068 00C0 rjmp .L2
  71. 69 .L6:
  72. 70 006a E12C mov r14,__zero_reg__
  73. 71 006c F12C mov r15,__zero_reg__
  74. 72 .L2:
  75. 73 006e 0115 cp r16,__zero_reg__
  76. 74 0070 1105 cpc r17,__zero_reg__
  77. 75 0072 01F0 breq .L5
  78. 76 0074 F801 movw r30,r16
  79. 77 0076 1082 st Z,__zero_reg__
  80. 78 .L5:
  81. 79 0078 C701 movw r24,r14
  82. 80 /* epilogue start */
  83. 81 007a 0F90 pop __tmp_reg__
  84. 82 007c DF91 pop r29
  85. 83 007e CF91 pop r28
  86. 84 0080 1F91 pop r17
  87. 85 0082 0F91 pop r16
  88. 86 0084 FF90 pop r15
  89. 87 0086 EF90 pop r14
  90. 88 0088 DF90 pop r13
  91. 89 008a CF90 pop r12
  92. 90 008c BF90 pop r11
  93. 91 008e AF90 pop r10
  94. 92 0090 0895 ret
  95. 93 .size read_string, .-read_string
  96. 94 .section .text.findenv,"ax",@progbits
  97. 95 .global findenv
  98. 96 .type findenv, @function
  99. 97 findenv:
  100. 98 0000 4F92 push r4
  101. 99 0002 5F92 push r5
  102. 100 0004 7F92 push r7
  103. 101 0006 8F92 push r8
  104. 102 0008 9F92 push r9
  105. 103 000a AF92 push r10
  106. 104 000c BF92 push r11
  107. 105 000e CF92 push r12
  108. 106 0010 DF92 push r13
  109. 107 0012 EF92 push r14
  110. 108 0014 FF92 push r15
  111. 109 0016 0F93 push r16
  112. 110 0018 1F93 push r17
  113. 111 001a CF93 push r28
  114. 112 001c DF93 push r29
  115. 113 001e 00D0 rcall .
  116. 114 0020 00D0 rcall .
  117. GAS LISTING /tmp/cceuPhBH.s page 3
  118. 115 0022 CDB7 in r28,__SP_L__
  119. 116 0024 DEB7 in r29,__SP_H__
  120. 117 /* prologue: function */
  121. 118 /* frame size = 6 */
  122. 119 /* stack size = 21 */
  123. 120 .L__stack_usage = 21
  124. 121 0026 6C01 movw r12,r24
  125. 122 0028 8091 0000 lds r24,nut_environ
  126. 123 002c 9091 0000 lds r25,nut_environ+1
  127. 124 0030 892B or r24,r25
  128. 125 0032 01F0 breq .+2
  129. 126 0034 00C0 rjmp .L19
  130. 127 0036 80E0 ldi r24,0
  131. 128 0038 91E0 ldi r25,lo8(1)
  132. 129 003a 9E83 std Y+6,r25
  133. 130 003c 8D83 std Y+5,r24
  134. 131 003e 44E0 ldi r20,lo8(4)
  135. 132 0040 50E0 ldi r21,0
  136. 133 0042 BE01 movw r22,r28
  137. 134 0044 6F5F subi r22,-1
  138. 135 0046 7F4F sbci r23,-1
  139. 136 0048 0E94 0000 call NutNvMemLoad
  140. 137 004c 892B or r24,r25
  141. 138 004e 01F0 breq .+2
  142. 139 0050 00C0 rjmp .L19
  143. 140 0052 8981 ldd r24,Y+1
  144. 141 0054 9A81 ldd r25,Y+2
  145. 142 0056 AB81 ldd r26,Y+3
  146. 143 0058 BC81 ldd r27,Y+4
  147. 144 005a 8534 cpi r24,69
  148. 145 005c 9E44 sbci r25,78
  149. 146 005e A645 sbci r26,86
  150. 147 0060 B105 cpc r27,__zero_reg__
  151. 148 0062 01F0 breq .+2
  152. 149 0064 00C0 rjmp .L19
  153. 150 0066 8D81 ldd r24,Y+5
  154. 151 0068 9E81 ldd r25,Y+6
  155. 152 006a 0496 adiw r24,4
  156. 153 006c 9E83 std Y+6,r25
  157. 154 006e 8D83 std Y+5,r24
  158. 155 0070 E12C mov r14,__zero_reg__
  159. 156 0072 F12C mov r15,__zero_reg__
  160. 157 .L23:
  161. 158 0074 40E4 ldi r20,lo8(64)
  162. 159 0076 50E0 ldi r21,0
  163. 160 0078 60E0 ldi r22,0
  164. 161 007a 70E0 ldi r23,0
  165. 162 007c CE01 movw r24,r28
  166. 163 007e 0596 adiw r24,5
  167. 164 0080 0E94 0000 call read_string
  168. 165 0084 8C01 movw r16,r24
  169. 166 0086 892B or r24,r25
  170. 167 0088 01F0 breq .L50
  171. 168 008a 40E4 ldi r20,lo8(64)
  172. 169 008c 50E0 ldi r21,0
  173. 170 008e 60E0 ldi r22,0
  174. 171 0090 70E0 ldi r23,0
  175. GAS LISTING /tmp/cceuPhBH.s page 4
  176. 172 0092 CE01 movw r24,r28
  177. 173 0094 0596 adiw r24,5
  178. 174 0096 0E94 0000 call read_string
  179. 175 009a 9801 movw r18,r16
  180. 176 009c 0817 cp r16,r24
  181. 177 009e 1907 cpc r17,r25
  182. 178 00a0 00F4 brsh .L24
  183. 179 00a2 9C01 movw r18,r24
  184. 180 .L24:
  185. 181 00a4 E216 cp r14,r18
  186. 182 00a6 F306 cpc r15,r19
  187. 183 00a8 00F4 brsh .L23
  188. 184 00aa 7901 movw r14,r18
  189. 185 00ac 00C0 rjmp .L23
  190. 186 .L50:
  191. 187 00ae 84E0 ldi r24,lo8(4)
  192. 188 00b0 91E0 ldi r25,lo8(1)
  193. 189 00b2 9E83 std Y+6,r25
  194. 190 00b4 8D83 std Y+5,r24
  195. 191 00b6 E114 cp r14,__zero_reg__
  196. 192 00b8 F104 cpc r15,__zero_reg__
  197. 193 00ba 01F4 brne .+2
  198. 194 00bc 00C0 rjmp .L19
  199. 195 00be C701 movw r24,r14
  200. 196 00c0 0196 adiw r24,1
  201. 197 00c2 0E94 0000 call malloc
  202. 198 00c6 5C01 movw r10,r24
  203. 199 00c8 892B or r24,r25
  204. 200 00ca 01F4 brne .+2
  205. 201 00cc 00C0 rjmp .L19
  206. 202 00ce 812C mov r8,__zero_reg__
  207. 203 00d0 912C mov r9,__zero_reg__
  208. 204 00d2 88E0 ldi r24,lo8(8)
  209. 205 00d4 782E mov r7,r24
  210. 206 .L27:
  211. 207 00d6 A701 movw r20,r14
  212. 208 00d8 B501 movw r22,r10
  213. 209 00da CE01 movw r24,r28
  214. 210 00dc 0596 adiw r24,5
  215. 211 00de 0E94 0000 call read_string
  216. 212 00e2 2C01 movw r4,r24
  217. 213 00e4 892B or r24,r25
  218. 214 00e6 01F0 breq .L29
  219. 215 00e8 88E0 ldi r24,lo8(8)
  220. 216 00ea 90E0 ldi r25,0
  221. 217 00ec 0E94 0000 call malloc
  222. 218 00f0 8C01 movw r16,r24
  223. 219 00f2 0097 sbiw r24,0
  224. 220 00f4 01F0 breq .L29
  225. 221 00f6 FC01 movw r30,r24
  226. 222 00f8 272D mov r18,r7
  227. 223 0:
  228. 224 00fa 1192 st Z+,__zero_reg__
  229. 225 00fc 2A95 dec r18
  230. 226 00fe 01F4 brne 0b
  231. 227 0100 C201 movw r24,r4
  232. 228 0102 0196 adiw r24,1
  233. GAS LISTING /tmp/cceuPhBH.s page 5
  234. 229 0104 0E94 0000 call malloc
  235. 230 0108 F801 movw r30,r16
  236. 231 010a 9583 std Z+5,r25
  237. 232 010c 8483 std Z+4,r24
  238. 233 010e 0097 sbiw r24,0
  239. 234 0110 01F4 brne .L30
  240. 235 0112 C801 movw r24,r16
  241. 236 0114 0E94 0000 call free
  242. 237 0118 00C0 rjmp .L29
  243. 238 .L30:
  244. 239 011a B501 movw r22,r10
  245. 240 011c 0E94 0000 call strcpy
  246. 241 0120 A701 movw r20,r14
  247. 242 0122 B501 movw r22,r10
  248. 243 0124 CE01 movw r24,r28
  249. 244 0126 0596 adiw r24,5
  250. 245 0128 0E94 0000 call read_string
  251. 246 012c 0196 adiw r24,1
  252. 247 012e 0E94 0000 call malloc
  253. 248 0132 F801 movw r30,r16
  254. 249 0134 9783 std Z+7,r25
  255. 250 0136 8683 std Z+6,r24
  256. 251 0138 0097 sbiw r24,0
  257. 252 013a 01F0 breq .L29
  258. 253 013c B501 movw r22,r10
  259. 254 013e 0E94 0000 call strcpy
  260. 255 0142 8114 cp r8,__zero_reg__
  261. 256 0144 9104 cpc r9,__zero_reg__
  262. 257 0146 01F0 breq .L32
  263. 258 0148 F401 movw r30,r8
  264. 259 014a 1183 std Z+1,r17
  265. 260 014c 0083 st Z,r16
  266. 261 014e F801 movw r30,r16
  267. 262 0150 9382 std Z+3,r9
  268. 263 0152 8282 std Z+2,r8
  269. 264 0154 00C0 rjmp .L33
  270. 265 .L32:
  271. 266 0156 1093 0000 sts nut_environ+1,r17
  272. 267 015a 0093 0000 sts nut_environ,r16
  273. 268 .L33:
  274. 269 015e 4801 movw r8,r16
  275. 270 0160 00C0 rjmp .L27
  276. 271 .L29:
  277. 272 0162 C501 movw r24,r10
  278. 273 0164 0E94 0000 call free
  279. 274 .L19:
  280. 275 0168 0091 0000 lds r16,nut_environ
  281. 276 016c 1091 0000 lds r17,nut_environ+1
  282. 277 .L35:
  283. 278 0170 0115 cp r16,__zero_reg__
  284. 279 0172 1105 cpc r17,__zero_reg__
  285. 280 0174 01F0 breq .L36
  286. 281 0176 B601 movw r22,r12
  287. 282 0178 F801 movw r30,r16
  288. 283 017a 8481 ldd r24,Z+4
  289. 284 017c 9581 ldd r25,Z+5
  290. 285 017e 0E94 0000 call strcmp
  291. GAS LISTING /tmp/cceuPhBH.s page 6
  292. 286 0182 892B or r24,r25
  293. 287 0184 01F0 breq .L36
  294. 288 0186 F801 movw r30,r16
  295. 289 0188 0081 ld r16,Z
  296. 290 018a 1181 ldd r17,Z+1
  297. 291 018c 00C0 rjmp .L35
  298. 292 .L36:
  299. 293 018e C801 movw r24,r16
  300. 294 /* epilogue start */
  301. 295 0190 2696 adiw r28,6
  302. 296 0192 0FB6 in __tmp_reg__,__SREG__
  303. 297 0194 F894 cli
  304. 298 0196 DEBF out __SP_H__,r29
  305. 299 0198 0FBE out __SREG__,__tmp_reg__
  306. 300 019a CDBF out __SP_L__,r28
  307. 301 019c DF91 pop r29
  308. 302 019e CF91 pop r28
  309. 303 01a0 1F91 pop r17
  310. 304 01a2 0F91 pop r16
  311. 305 01a4 FF90 pop r15
  312. 306 01a6 EF90 pop r14
  313. 307 01a8 DF90 pop r13
  314. 308 01aa CF90 pop r12
  315. 309 01ac BF90 pop r11
  316. 310 01ae AF90 pop r10
  317. 311 01b0 9F90 pop r9
  318. 312 01b2 8F90 pop r8
  319. 313 01b4 7F90 pop r7
  320. 314 01b6 5F90 pop r5
  321. 315 01b8 4F90 pop r4
  322. 316 01ba 0895 ret
  323. 317 .size findenv, .-findenv
  324. 318 .comm nut_environ,2,1
  325. 319 .ident "GCC: (GNU) 5.3.0"
  326. 320 .global __do_clear_bss
  327. GAS LISTING /tmp/cceuPhBH.s page 7
  328. DEFINED SYMBOLS
  329. *ABS*:0000000000000000 environ.c
  330. /tmp/cceuPhBH.s:2 *ABS*:000000000000003e __SP_H__
  331. /tmp/cceuPhBH.s:3 *ABS*:000000000000003d __SP_L__
  332. /tmp/cceuPhBH.s:4 *ABS*:000000000000003f __SREG__
  333. /tmp/cceuPhBH.s:5 *ABS*:000000000000003b __RAMPZ__
  334. /tmp/cceuPhBH.s:6 *ABS*:0000000000000000 __tmp_reg__
  335. /tmp/cceuPhBH.s:7 *ABS*:0000000000000001 __zero_reg__
  336. /tmp/cceuPhBH.s:10 .text.read_string:0000000000000000 read_string
  337. /tmp/cceuPhBH.s:97 .text.findenv:0000000000000000 findenv
  338. *COM*:0000000000000002 nut_environ
  339. UNDEFINED SYMBOLS
  340. NutNvMemLoad
  341. malloc
  342. free
  343. strcpy
  344. strcmp
  345. __do_clear_bss