| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446 |
- GAS LISTING /tmp/ccNFASpk.s page 1
- 1 .file "base64_encode.c"
- 2 __SP_H__ = 0x3e
- 3 __SP_L__ = 0x3d
- 4 __SREG__ = 0x3f
- 5 __RAMPZ__ = 0x3b
- 6 __tmp_reg__ = 0
- 7 __zero_reg__ = 1
- 8 .section .text.NutEncodeBase64,"ax",@progbits
- 9 .global NutEncodeBase64
- 10 .type NutEncodeBase64, @function
- 11 NutEncodeBase64:
- 12 0000 8F92 push r8
- 13 0002 9F92 push r9
- 14 0004 AF92 push r10
- 15 0006 BF92 push r11
- 16 0008 CF92 push r12
- 17 000a DF92 push r13
- 18 000c EF92 push r14
- 19 000e FF92 push r15
- 20 0010 0F93 push r16
- 21 0012 1F93 push r17
- 22 0014 CF93 push r28
- 23 0016 DF93 push r29
- 24 /* prologue: function */
- 25 /* frame size = 0 */
- 26 /* stack size = 12 */
- 27 .L__stack_usage = 12
- 28 0018 EC01 movw r28,r24
- 29 001a FC01 movw r30,r24
- 30 0:
- 31 001c 0190 ld __tmp_reg__,Z+
- 32 001e 0020 tst __tmp_reg__
- 33 0020 01F4 brne 0b
- 34 0022 3197 sbiw r30,1
- 35 0024 8F01 movw r16,r30
- 36 0026 081B sub r16,r24
- 37 0028 190B sbc r17,r25
- 38 002a C801 movw r24,r16
- 39 002c 0196 adiw r24,1
- 40 002e 880F lsl r24
- 41 0030 991F rol r25
- 42 0032 880F lsl r24
- 43 0034 991F rol r25
- 44 0036 E3E0 ldi r30,lo8(3)
- 45 0038 F0E0 ldi r31,0
- 46 003a BF01 movw r22,r30
- 47 003c 0E94 0000 call __udivmodhi4
- 48 0040 9B01 movw r18,r22
- 49 0042 CB01 movw r24,r22
- 50 0044 BF01 movw r22,r30
- 51 0046 0E94 0000 call __udivmodhi4
- 52 004a 280F add r18,r24
- 53 004c 391F adc r19,r25
- 54 004e C901 movw r24,r18
- 55 0050 68E4 ldi r22,lo8(72)
- 56 0052 70E0 ldi r23,0
- 57 0054 0E94 0000 call __udivmodhi4
- GAS LISTING /tmp/ccNFASpk.s page 2
- 58 0058 660F lsl r22
- 59 005a 771F rol r23
- 60 005c 2D5F subi r18,-3
- 61 005e 3F4F sbci r19,-1
- 62 0060 620F add r22,r18
- 63 0062 731F adc r23,r19
- 64 0064 80E0 ldi r24,lo8(heapFreeList)
- 65 0066 90E0 ldi r25,hi8(heapFreeList)
- 66 0068 0E94 0000 call NutHeapRootAlloc
- 67 006c DC01 movw r26,r24
- 68 006e 892B or r24,r25
- 69 0070 01F4 brne .+2
- 70 0072 00C0 rjmp .L9
- 71 0074 CE01 movw r24,r28
- 72 0076 0C0F add r16,r28
- 73 0078 1D1F adc r17,r29
- 74 007a C0E0 ldi r28,0
- 75 007c D0E0 ldi r29,0
- 76 007e A12C mov r10,__zero_reg__
- 77 0080 B12C mov r11,__zero_reg__
- 78 0082 40E0 ldi r20,0
- 79 0084 50E0 ldi r21,0
- 80 0086 BA01 movw r22,r20
- 81 0088 20E0 ldi r18,0
- 82 008a 30E0 ldi r19,0
- 83 008c EDE0 ldi r30,lo8(13)
- 84 008e 9E2E mov r9,r30
- 85 0090 FAE0 ldi r31,lo8(10)
- 86 0092 8F2E mov r8,r31
- 87 .L3:
- 88 0094 0817 cp r16,r24
- 89 0096 1907 cpc r17,r25
- 90 0098 01F4 brne .+2
- 91 009a 00C0 rjmp .L17
- 92 009c FC01 movw r30,r24
- 93 009e C190 ld r12,Z+
- 94 00a0 CF01 movw r24,r30
- 95 00a2 0C2C mov __tmp_reg__,r12
- 96 00a4 000C lsl r0
- 97 00a6 DD08 sbc r13,r13
- 98 00a8 EE08 sbc r14,r14
- 99 00aa FF08 sbc r15,r15
- 100 00ac 4C0D add r20,r12
- 101 00ae 5D1D adc r21,r13
- 102 00b0 6E1D adc r22,r14
- 103 00b2 7F1D adc r23,r15
- 104 00b4 2196 adiw r28,1
- 105 00b6 C330 cpi r28,3
- 106 00b8 D105 cpc r29,__zero_reg__
- 107 00ba 01F0 breq .+2
- 108 00bc 00C0 rjmp .L4
- 109 00be 6A01 movw r12,r20
- 110 00c0 7B01 movw r14,r22
- 111 00c2 F2E1 ldi r31,18
- 112 1:
- 113 00c4 F594 asr r15
- 114 00c6 E794 ror r14
- GAS LISTING /tmp/ccNFASpk.s page 3
- 115 00c8 D794 ror r13
- 116 00ca C794 ror r12
- 117 00cc FA95 dec r31
- 118 00ce 01F4 brne 1b
- 119 00d0 FFE3 ldi r31,63
- 120 00d2 CF22 and r12,r31
- 121 00d4 DD24 clr r13
- 122 00d6 EE24 clr r14
- 123 00d8 FF24 clr r15
- 124 00da F601 movw r30,r12
- 125 00dc E050 subi r30,lo8(-(base64etab))
- 126 00de F040 sbci r31,hi8(-(base64etab))
- 127 /* #APP */
- 128 ; 116 "../../nut/gorp/codec/base64_encode.c" 1
- 129 00e0 E491 lpm r30, Z
- 130
- 131 ; 0 "" 2
- 132 /* #NOAPP */
- 133 00e2 ED01 movw r28,r26
- 134 00e4 C20F add r28,r18
- 135 00e6 D31F adc r29,r19
- 136 00e8 E883 st Y,r30
- 137 00ea 6A01 movw r12,r20
- 138 00ec 7B01 movw r14,r22
- 139 00ee ECE0 ldi r30,12
- 140 1:
- 141 00f0 F594 asr r15
- 142 00f2 E794 ror r14
- 143 00f4 D794 ror r13
- 144 00f6 C794 ror r12
- 145 00f8 EA95 dec r30
- 146 00fa 01F4 brne 1b
- 147 00fc EFE3 ldi r30,63
- 148 00fe CE22 and r12,r30
- 149 0100 DD24 clr r13
- 150 0102 EE24 clr r14
- 151 0104 FF24 clr r15
- 152 0106 F601 movw r30,r12
- 153 0108 E050 subi r30,lo8(-(base64etab))
- 154 010a F040 sbci r31,hi8(-(base64etab))
- 155 /* #APP */
- 156 ; 117 "../../nut/gorp/codec/base64_encode.c" 1
- 157 010c E491 lpm r30, Z
- 158
- 159 ; 0 "" 2
- 160 /* #NOAPP */
- 161 010e E983 std Y+1,r30
- 162 0110 6A01 movw r12,r20
- 163 0112 7B01 movw r14,r22
- 164 0114 F6E0 ldi r31,6
- 165 1:
- 166 0116 F594 asr r15
- 167 0118 E794 ror r14
- 168 011a D794 ror r13
- 169 011c C794 ror r12
- 170 011e FA95 dec r31
- 171 0120 01F4 brne 1b
- GAS LISTING /tmp/ccNFASpk.s page 4
- 172 0122 FFE3 ldi r31,63
- 173 0124 CF22 and r12,r31
- 174 0126 DD24 clr r13
- 175 0128 EE24 clr r14
- 176 012a FF24 clr r15
- 177 012c F601 movw r30,r12
- 178 012e E050 subi r30,lo8(-(base64etab))
- 179 0130 F040 sbci r31,hi8(-(base64etab))
- 180 /* #APP */
- 181 ; 118 "../../nut/gorp/codec/base64_encode.c" 1
- 182 0132 E491 lpm r30, Z
- 183
- 184 ; 0 "" 2
- 185 /* #NOAPP */
- 186 0134 EA83 std Y+2,r30
- 187 0136 7901 movw r14,r18
- 188 0138 E4E0 ldi r30,4
- 189 013a EE0E add r14,r30
- 190 013c F11C adc r15,__zero_reg__
- 191 013e 4F73 andi r20,63
- 192 0140 5527 clr r21
- 193 0142 6627 clr r22
- 194 0144 7727 clr r23
- 195 0146 FA01 movw r30,r20
- 196 0148 E050 subi r30,lo8(-(base64etab))
- 197 014a F040 sbci r31,hi8(-(base64etab))
- 198 /* #APP */
- 199 ; 119 "../../nut/gorp/codec/base64_encode.c" 1
- 200 014c 4491 lpm r20, Z
- 201
- 202 ; 0 "" 2
- 203 /* #NOAPP */
- 204 014e 4B83 std Y+3,r20
- 205 0150 F4E0 ldi r31,4
- 206 0152 AF0E add r10,r31
- 207 0154 B11C adc r11,__zero_reg__
- 208 0156 48E4 ldi r20,72
- 209 0158 A416 cp r10,r20
- 210 015a B104 cpc r11,__zero_reg__
- 211 015c 01F4 brne .L10
- 212 015e FD01 movw r30,r26
- 213 0160 EE0D add r30,r14
- 214 0162 FF1D adc r31,r15
- 215 0164 9082 st Z,r9
- 216 0166 7901 movw r14,r18
- 217 0168 E6E0 ldi r30,6
- 218 016a EE0E add r14,r30
- 219 016c F11C adc r15,__zero_reg__
- 220 016e 8D82 std Y+5,r8
- 221 0170 C0E0 ldi r28,0
- 222 0172 D0E0 ldi r29,0
- 223 0174 A12C mov r10,__zero_reg__
- 224 0176 B12C mov r11,__zero_reg__
- 225 0178 00C0 rjmp .L14
- 226 .L4:
- 227 017a 762F mov r23,r22
- 228 017c 652F mov r22,r21
- GAS LISTING /tmp/ccNFASpk.s page 5
- 229 017e 542F mov r21,r20
- 230 0180 4427 clr r20
- 231 0182 7901 movw r14,r18
- 232 0184 00C0 rjmp .L5
- 233 .L10:
- 234 0186 C0E0 ldi r28,0
- 235 0188 D0E0 ldi r29,0
- 236 .L14:
- 237 018a 40E0 ldi r20,0
- 238 018c 50E0 ldi r21,0
- 239 018e BA01 movw r22,r20
- 240 .L5:
- 241 0190 9701 movw r18,r14
- 242 0192 00C0 rjmp .L3
- 243 .L17:
- 244 0194 2097 sbiw r28,0
- 245 0196 01F4 brne .+2
- 246 0198 00C0 rjmp .L7
- 247 019a 82E0 ldi r24,lo8(2)
- 248 019c 90E0 ldi r25,0
- 249 019e 8C1B sub r24,r28
- 250 01a0 9D0B sbc r25,r29
- 251 01a2 F3E0 ldi r31,3
- 252 1:
- 253 01a4 880F lsl r24
- 254 01a6 991F rol r25
- 255 01a8 FA95 dec r31
- 256 01aa 01F4 brne 1b
- 257 01ac 00C0 rjmp 2f
- 258 1:
- 259 01ae 440F lsl r20
- 260 01b0 551F rol r21
- 261 01b2 661F rol r22
- 262 01b4 771F rol r23
- 263 2:
- 264 01b6 8A95 dec r24
- 265 01b8 02F4 brpl 1b
- 266 01ba 6A01 movw r12,r20
- 267 01bc 7B01 movw r14,r22
- 268 01be 12E1 ldi r17,18
- 269 1:
- 270 01c0 F594 asr r15
- 271 01c2 E794 ror r14
- 272 01c4 D794 ror r13
- 273 01c6 C794 ror r12
- 274 01c8 1A95 dec r17
- 275 01ca 01F4 brne 1b
- 276 01cc F601 movw r30,r12
- 277 01ce E050 subi r30,lo8(-(base64etab))
- 278 01d0 F040 sbci r31,hi8(-(base64etab))
- 279 /* #APP */
- 280 ; 135 "../../nut/gorp/codec/base64_encode.c" 1
- 281 01d2 1491 lpm r17, Z
- 282
- 283 ; 0 "" 2
- 284 /* #NOAPP */
- 285 01d4 CD01 movw r24,r26
- GAS LISTING /tmp/ccNFASpk.s page 6
- 286 01d6 820F add r24,r18
- 287 01d8 931F adc r25,r19
- 288 01da FC01 movw r30,r24
- 289 01dc 1083 st Z,r17
- 290 01de 7901 movw r14,r18
- 291 01e0 F2E0 ldi r31,2
- 292 01e2 EF0E add r14,r31
- 293 01e4 F11C adc r15,__zero_reg__
- 294 01e6 4A01 movw r8,r20
- 295 01e8 5B01 movw r10,r22
- 296 01ea 0CE0 ldi r16,12
- 297 1:
- 298 01ec B594 asr r11
- 299 01ee A794 ror r10
- 300 01f0 9794 ror r9
- 301 01f2 8794 ror r8
- 302 01f4 0A95 dec r16
- 303 01f6 01F4 brne 1b
- 304 01f8 EFE3 ldi r30,63
- 305 01fa 8E22 and r8,r30
- 306 01fc 9924 clr r9
- 307 01fe AA24 clr r10
- 308 0200 BB24 clr r11
- 309 0202 F401 movw r30,r8
- 310 0204 E050 subi r30,lo8(-(base64etab))
- 311 0206 F040 sbci r31,hi8(-(base64etab))
- 312 /* #APP */
- 313 ; 136 "../../nut/gorp/codec/base64_encode.c" 1
- 314 0208 1491 lpm r17, Z
- 315
- 316 ; 0 "" 2
- 317 /* #NOAPP */
- 318 020a FC01 movw r30,r24
- 319 020c 1183 std Z+1,r17
- 320 020e 8901 movw r16,r18
- 321 0210 0C5F subi r16,-4
- 322 0212 1F4F sbci r17,-1
- 323 0214 C901 movw r24,r18
- 324 0216 0396 adiw r24,3
- 325 0218 9D01 movw r18,r26
- 326 021a 2E0D add r18,r14
- 327 021c 3F1D adc r19,r15
- 328 021e 2197 sbiw r28,1
- 329 0220 01F4 brne .L8
- 330 0222 4DE3 ldi r20,lo8(61)
- 331 0224 F901 movw r30,r18
- 332 0226 4083 st Z,r20
- 333 0228 9801 movw r18,r16
- 334 022a FD01 movw r30,r26
- 335 022c E80F add r30,r24
- 336 022e F91F adc r31,r25
- 337 0230 00C0 rjmp .L15
- 338 .L8:
- 339 0232 E6E0 ldi r30,6
- 340 1:
- 341 0234 7595 asr r23
- 342 0236 6795 ror r22
- GAS LISTING /tmp/ccNFASpk.s page 7
- 343 0238 5795 ror r21
- 344 023a 4795 ror r20
- 345 023c EA95 dec r30
- 346 023e 01F4 brne 1b
- 347 0240 4F73 andi r20,63
- 348 0242 5527 clr r21
- 349 0244 6627 clr r22
- 350 0246 7727 clr r23
- 351 0248 FA01 movw r30,r20
- 352 024a E050 subi r30,lo8(-(base64etab))
- 353 024c F040 sbci r31,hi8(-(base64etab))
- 354 /* #APP */
- 355 ; 141 "../../nut/gorp/codec/base64_encode.c" 1
- 356 024e 4491 lpm r20, Z
- 357
- 358 ; 0 "" 2
- 359 /* #NOAPP */
- 360 0250 F901 movw r30,r18
- 361 0252 4083 st Z,r20
- 362 0254 9801 movw r18,r16
- 363 0256 FD01 movw r30,r26
- 364 0258 E80F add r30,r24
- 365 025a F91F adc r31,r25
- 366 025c 4DE3 ldi r20,lo8(61)
- 367 .L15:
- 368 025e 4083 st Z,r20
- 369 .L7:
- 370 0260 FD01 movw r30,r26
- 371 0262 E20F add r30,r18
- 372 0264 F31F adc r31,r19
- 373 0266 1082 st Z,__zero_reg__
- 374 0268 CD01 movw r24,r26
- 375 026a 00C0 rjmp .L2
- 376 .L9:
- 377 026c 80E0 ldi r24,0
- 378 026e 90E0 ldi r25,0
- 379 .L2:
- 380 /* epilogue start */
- 381 0270 DF91 pop r29
- 382 0272 CF91 pop r28
- 383 0274 1F91 pop r17
- 384 0276 0F91 pop r16
- 385 0278 FF90 pop r15
- 386 027a EF90 pop r14
- 387 027c DF90 pop r13
- 388 027e CF90 pop r12
- 389 0280 BF90 pop r11
- 390 0282 AF90 pop r10
- 391 0284 9F90 pop r9
- 392 0286 8F90 pop r8
- 393 0288 0895 ret
- 394 .size NutEncodeBase64, .-NutEncodeBase64
- 395 .section .progmem.data,"a",@progbits
- 396 .type base64etab, @object
- 397 .size base64etab, 65
- 398 base64etab:
- 399 0000 4142 4344 .string "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
- GAS LISTING /tmp/ccNFASpk.s page 8
- 399 4546 4748
- 399 494A 4B4C
- 399 4D4E 4F50
- 399 5152 5354
- 400 .ident "GCC: (GNU) 5.3.0"
- GAS LISTING /tmp/ccNFASpk.s page 9
- DEFINED SYMBOLS
- *ABS*:0000000000000000 base64_encode.c
- /tmp/ccNFASpk.s:2 *ABS*:000000000000003e __SP_H__
- /tmp/ccNFASpk.s:3 *ABS*:000000000000003d __SP_L__
- /tmp/ccNFASpk.s:4 *ABS*:000000000000003f __SREG__
- /tmp/ccNFASpk.s:5 *ABS*:000000000000003b __RAMPZ__
- /tmp/ccNFASpk.s:6 *ABS*:0000000000000000 __tmp_reg__
- /tmp/ccNFASpk.s:7 *ABS*:0000000000000001 __zero_reg__
- /tmp/ccNFASpk.s:11 .text.NutEncodeBase64:0000000000000000 NutEncodeBase64
- /tmp/ccNFASpk.s:398 .progmem.data:0000000000000000 base64etab
- UNDEFINED SYMBOLS
- __udivmodhi4
- heapFreeList
- NutHeapRootAlloc
|