spi_7seg.lst 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827
  1. GAS LISTING /tmp/ccuZScUs.s page 1
  2. 1 .file "spi_7seg.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.Spi7SegIOCtl,"ax",@progbits
  10. 9 .type Spi7SegIOCtl, @function
  11. 10 Spi7SegIOCtl:
  12. 11 /* prologue: function */
  13. 12 /* frame size = 0 */
  14. 13 /* stack size = 0 */
  15. 14 .L__stack_usage = 0
  16. 15 0000 80E0 ldi r24,0
  17. 16 0002 90E0 ldi r25,0
  18. 17 0004 0895 ret
  19. 18 .size Spi7SegIOCtl, .-Spi7SegIOCtl
  20. 19 .section .text.Spi7SegOpen,"ax",@progbits
  21. 20 .global Spi7SegOpen
  22. 21 .type Spi7SegOpen, @function
  23. 22 Spi7SegOpen:
  24. 23 0000 CF93 push r28
  25. 24 0002 DF93 push r29
  26. 25 /* prologue: function */
  27. 26 /* frame size = 0 */
  28. 27 /* stack size = 2 */
  29. 28 .L__stack_usage = 2
  30. 29 0004 EC01 movw r28,r24
  31. 30 0006 84E0 ldi r24,lo8(4)
  32. 31 0008 90E0 ldi r25,0
  33. 32 000a 0E94 0000 call malloc
  34. 33 000e FC01 movw r30,r24
  35. 34 0010 0097 sbiw r24,0
  36. 35 0012 01F0 breq .L4
  37. 36 0014 D183 std Z+1,r29
  38. 37 0016 C083 st Z,r28
  39. 38 0018 1382 std Z+3,__zero_reg__
  40. 39 001a 1282 std Z+2,__zero_reg__
  41. 40 001c 00C0 rjmp .L3
  42. 41 .L4:
  43. 42 001e 8FEF ldi r24,lo8(-1)
  44. 43 0020 9FEF ldi r25,lo8(-1)
  45. 44 .L3:
  46. 45 /* epilogue start */
  47. 46 0022 DF91 pop r29
  48. 47 0024 CF91 pop r28
  49. 48 0026 0895 ret
  50. 49 .size Spi7SegOpen, .-Spi7SegOpen
  51. 50 .section .text.Spi7SegClose,"ax",@progbits
  52. 51 .type Spi7SegClose, @function
  53. 52 Spi7SegClose:
  54. 53 /* prologue: function */
  55. 54 /* frame size = 0 */
  56. 55 /* stack size = 0 */
  57. 56 .L__stack_usage = 0
  58. 57 0000 0097 sbiw r24,0
  59. GAS LISTING /tmp/ccuZScUs.s page 2
  60. 58 0002 01F0 breq .L8
  61. 59 0004 0E94 0000 call free
  62. 60 0008 80E0 ldi r24,0
  63. 61 000a 90E0 ldi r25,0
  64. 62 000c 0895 ret
  65. 63 .L8:
  66. 64 000e 8FEF ldi r24,lo8(-1)
  67. 65 0010 9FEF ldi r25,lo8(-1)
  68. 66 0012 0895 ret
  69. 67 .size Spi7SegClose, .-Spi7SegClose
  70. 68 .section .text.disp7segCommand.isra.0,"ax",@progbits
  71. 69 .type disp7segCommand.isra.0, @function
  72. 70 disp7segCommand.isra.0:
  73. 71 0000 CF92 push r12
  74. 72 0002 DF92 push r13
  75. 73 0004 EF92 push r14
  76. 74 0006 FF92 push r15
  77. 75 0008 0F93 push r16
  78. 76 000a 1F93 push r17
  79. 77 000c CF93 push r28
  80. 78 000e DF93 push r29
  81. 79 0010 1F92 push __zero_reg__
  82. 80 0012 1F92 push __zero_reg__
  83. 81 0014 CDB7 in r28,__SP_L__
  84. 82 0016 DEB7 in r29,__SP_H__
  85. 83 /* prologue: function */
  86. 84 /* frame size = 2 */
  87. 85 /* stack size = 10 */
  88. 86 .L__stack_usage = 10
  89. 87 0018 8C01 movw r16,r24
  90. 88 001a DC01 movw r26,r24
  91. 89 001c CD90 ld r12,X+
  92. 90 001e DC90 ld r13,X
  93. 91 0020 6983 std Y+1,r22
  94. 92 0022 FA01 movw r30,r20
  95. 93 0024 8081 ld r24,Z
  96. 94 0026 8A83 std Y+2,r24
  97. 95 0028 D601 movw r26,r12
  98. 96 002a 1A96 adiw r26,10
  99. 97 002c ED91 ld r30,X+
  100. 98 002e FC91 ld r31,X
  101. 99 0030 1B97 sbiw r26,10+1
  102. 100 0032 48EE ldi r20,lo8(-24)
  103. 101 0034 53E0 ldi r21,lo8(3)
  104. 102 0036 60E0 ldi r22,0
  105. 103 0038 70E0 ldi r23,0
  106. 104 003a C801 movw r24,r16
  107. 105 003c 1995 eicall
  108. 106 003e 7C01 movw r14,r24
  109. 107 0040 892B or r24,r25
  110. 108 0042 01F4 brne .L10
  111. 109 0044 D601 movw r26,r12
  112. 110 0046 1E96 adiw r26,14
  113. 111 0048 ED91 ld r30,X+
  114. 112 004a FC91 ld r31,X
  115. 113 004c 1F97 sbiw r26,14+1
  116. 114 004e 22E0 ldi r18,lo8(2)
  117. GAS LISTING /tmp/ccuZScUs.s page 3
  118. 115 0050 30E0 ldi r19,0
  119. 116 0052 40E0 ldi r20,0
  120. 117 0054 50E0 ldi r21,0
  121. 118 0056 BE01 movw r22,r28
  122. 119 0058 6F5F subi r22,-1
  123. 120 005a 7F4F sbci r23,-1
  124. 121 005c C801 movw r24,r16
  125. 122 005e 1995 eicall
  126. 123 0060 7C01 movw r14,r24
  127. 124 0062 D601 movw r26,r12
  128. 125 0064 1C96 adiw r26,12
  129. 126 0066 ED91 ld r30,X+
  130. 127 0068 FC91 ld r31,X
  131. 128 006a 1D97 sbiw r26,12+1
  132. 129 006c C801 movw r24,r16
  133. 130 006e 1995 eicall
  134. 131 .L10:
  135. 132 0070 C701 movw r24,r14
  136. 133 /* epilogue start */
  137. 134 0072 0F90 pop __tmp_reg__
  138. 135 0074 0F90 pop __tmp_reg__
  139. 136 0076 DF91 pop r29
  140. 137 0078 CF91 pop r28
  141. 138 007a 1F91 pop r17
  142. 139 007c 0F91 pop r16
  143. 140 007e FF90 pop r15
  144. 141 0080 EF90 pop r14
  145. 142 0082 DF90 pop r13
  146. 143 0084 CF90 pop r12
  147. 144 0086 0895 ret
  148. 145 .size disp7segCommand.isra.0, .-disp7segCommand.isra.0
  149. 146 .section .text.Spi7segInit,"ax",@progbits
  150. 147 .global Spi7segInit
  151. 148 .type Spi7segInit, @function
  152. 149 Spi7segInit:
  153. 150 0000 CF92 push r12
  154. 151 0002 DF92 push r13
  155. 152 0004 EF92 push r14
  156. 153 0006 FF92 push r15
  157. 154 0008 0F93 push r16
  158. 155 000a 1F93 push r17
  159. 156 000c CF93 push r28
  160. 157 000e DF93 push r29
  161. 158 0010 1F92 push __zero_reg__
  162. 159 0012 CDB7 in r28,__SP_L__
  163. 160 0014 DEB7 in r29,__SP_H__
  164. 161 /* prologue: function */
  165. 162 /* frame size = 1 */
  166. 163 /* stack size = 9 */
  167. 164 .L__stack_usage = 9
  168. 165 0016 6C01 movw r12,r24
  169. 166 0018 FC01 movw r30,r24
  170. 167 001a 0785 ldd r16,Z+15
  171. 168 001c 1089 ldd r17,Z+16
  172. 169 001e 87E0 ldi r24,lo8(7)
  173. 170 0020 90E0 ldi r25,0
  174. 171 0022 0E94 0000 call malloc
  175. GAS LISTING /tmp/ccuZScUs.s page 4
  176. 172 0026 7C01 movw r14,r24
  177. 173 0028 892B or r24,r25
  178. 174 002a 01F4 brne .+2
  179. 175 002c 00C0 rjmp .L13
  180. 176 002e 87E0 ldi r24,lo8(7)
  181. 177 0030 F701 movw r30,r14
  182. 178 0:
  183. 179 0032 1192 st Z+,__zero_reg__
  184. 180 0034 8A95 dec r24
  185. 181 0036 01F4 brne 0b
  186. 182 0038 F601 movw r30,r12
  187. 183 003a F28A std Z+18,r15
  188. 184 003c E18A std Z+17,r14
  189. 185 003e 1982 std Y+1,__zero_reg__
  190. 186 0040 AE01 movw r20,r28
  191. 187 0042 4F5F subi r20,-1
  192. 188 0044 5F4F sbci r21,-1
  193. 189 0046 6FE0 ldi r22,lo8(15)
  194. 190 0048 C801 movw r24,r16
  195. 191 004a 0E94 0000 call disp7segCommand.isra.0
  196. 192 004e AE01 movw r20,r28
  197. 193 0050 4F5F subi r20,-1
  198. 194 0052 5F4F sbci r21,-1
  199. 195 0054 6FE0 ldi r22,lo8(15)
  200. 196 0056 C801 movw r24,r16
  201. 197 0058 0E94 0000 call disp7segCommand.isra.0
  202. 198 005c AE01 movw r20,r28
  203. 199 005e 4F5F subi r20,-1
  204. 200 0060 5F4F sbci r21,-1
  205. 201 0062 6FE0 ldi r22,lo8(15)
  206. 202 0064 C801 movw r24,r16
  207. 203 0066 0E94 0000 call disp7segCommand.isra.0
  208. 204 006a 81E0 ldi r24,lo8(1)
  209. 205 006c 8983 std Y+1,r24
  210. 206 006e AE01 movw r20,r28
  211. 207 0070 4F5F subi r20,-1
  212. 208 0072 5F4F sbci r21,-1
  213. 209 0074 6CE0 ldi r22,lo8(12)
  214. 210 0076 C801 movw r24,r16
  215. 211 0078 0E94 0000 call disp7segCommand.isra.0
  216. 212 007c 84E0 ldi r24,lo8(4)
  217. 213 007e 8983 std Y+1,r24
  218. 214 0080 AE01 movw r20,r28
  219. 215 0082 4F5F subi r20,-1
  220. 216 0084 5F4F sbci r21,-1
  221. 217 0086 6BE0 ldi r22,lo8(11)
  222. 218 0088 C801 movw r24,r16
  223. 219 008a 0E94 0000 call disp7segCommand.isra.0
  224. 220 008e F701 movw r30,r14
  225. 221 0090 1582 std Z+5,__zero_reg__
  226. 222 0092 A701 movw r20,r14
  227. 223 0094 4B5F subi r20,-5
  228. 224 0096 5F4F sbci r21,-1
  229. 225 0098 69E0 ldi r22,lo8(9)
  230. 226 009a C801 movw r24,r16
  231. 227 009c 0E94 0000 call disp7segCommand.isra.0
  232. 228 00a0 8FE0 ldi r24,lo8(15)
  233. GAS LISTING /tmp/ccuZScUs.s page 5
  234. 229 00a2 8983 std Y+1,r24
  235. 230 00a4 AE01 movw r20,r28
  236. 231 00a6 4F5F subi r20,-1
  237. 232 00a8 5F4F sbci r21,-1
  238. 233 00aa 6AE0 ldi r22,lo8(10)
  239. 234 00ac C801 movw r24,r16
  240. 235 00ae 0E94 0000 call disp7segCommand.isra.0
  241. 236 00b2 1982 std Y+1,__zero_reg__
  242. 237 00b4 AE01 movw r20,r28
  243. 238 00b6 4F5F subi r20,-1
  244. 239 00b8 5F4F sbci r21,-1
  245. 240 00ba 61E0 ldi r22,lo8(1)
  246. 241 00bc C801 movw r24,r16
  247. 242 00be 0E94 0000 call disp7segCommand.isra.0
  248. 243 00c2 AE01 movw r20,r28
  249. 244 00c4 4F5F subi r20,-1
  250. 245 00c6 5F4F sbci r21,-1
  251. 246 00c8 62E0 ldi r22,lo8(2)
  252. 247 00ca C801 movw r24,r16
  253. 248 00cc 0E94 0000 call disp7segCommand.isra.0
  254. 249 00d0 AE01 movw r20,r28
  255. 250 00d2 4F5F subi r20,-1
  256. 251 00d4 5F4F sbci r21,-1
  257. 252 00d6 63E0 ldi r22,lo8(3)
  258. 253 00d8 C801 movw r24,r16
  259. 254 00da 0E94 0000 call disp7segCommand.isra.0
  260. 255 00de 80E0 ldi r24,0
  261. 256 00e0 90E0 ldi r25,0
  262. 257 00e2 00C0 rjmp .L12
  263. 258 .L13:
  264. 259 00e4 8FEF ldi r24,lo8(-1)
  265. 260 00e6 9FEF ldi r25,lo8(-1)
  266. 261 .L12:
  267. 262 /* epilogue start */
  268. 263 00e8 0F90 pop __tmp_reg__
  269. 264 00ea DF91 pop r29
  270. 265 00ec CF91 pop r28
  271. 266 00ee 1F91 pop r17
  272. 267 00f0 0F91 pop r16
  273. 268 00f2 FF90 pop r15
  274. 269 00f4 EF90 pop r14
  275. 270 00f6 DF90 pop r13
  276. 271 00f8 CF90 pop r12
  277. 272 00fa 0895 ret
  278. 273 .size Spi7segInit, .-Spi7segInit
  279. 274 .section .text.Spi7SegPush,"ax",@progbits
  280. 275 .global Spi7SegPush
  281. 276 .type Spi7SegPush, @function
  282. 277 Spi7SegPush:
  283. 278 0000 EF92 push r14
  284. 279 0002 FF92 push r15
  285. 280 0004 0F93 push r16
  286. 281 0006 1F93 push r17
  287. 282 0008 CF93 push r28
  288. 283 /* prologue: function */
  289. 284 /* frame size = 0 */
  290. 285 /* stack size = 5 */
  291. GAS LISTING /tmp/ccuZScUs.s page 6
  292. 286 .L__stack_usage = 5
  293. 287 000a FC01 movw r30,r24
  294. 288 000c E784 ldd r14,Z+15
  295. 289 000e F088 ldd r15,Z+16
  296. 290 0010 0189 ldd r16,Z+17
  297. 291 0012 1289 ldd r17,Z+18
  298. 292 0014 C4E0 ldi r28,lo8(4)
  299. 293 .L15:
  300. 294 0016 A801 movw r20,r16
  301. 295 0018 6C2F mov r22,r28
  302. 296 001a C701 movw r24,r14
  303. 297 001c 0E94 0000 call disp7segCommand.isra.0
  304. 298 0020 C150 subi r28,lo8(-(-1))
  305. 299 0022 0F5F subi r16,-1
  306. 300 0024 1F4F sbci r17,-1
  307. 301 0026 C111 cpse r28,__zero_reg__
  308. 302 0028 00C0 rjmp .L15
  309. 303 /* epilogue start */
  310. 304 002a CF91 pop r28
  311. 305 002c 1F91 pop r17
  312. 306 002e 0F91 pop r16
  313. 307 0030 FF90 pop r15
  314. 308 0032 EF90 pop r14
  315. 309 0034 0895 ret
  316. 310 .size Spi7SegPush, .-Spi7SegPush
  317. 311 .section .text.Spi7segPutc,"ax",@progbits
  318. 312 .global Spi7segPutc
  319. 313 .type Spi7segPutc, @function
  320. 314 Spi7segPutc:
  321. 315 0000 0F93 push r16
  322. 316 0002 1F93 push r17
  323. 317 0004 CF93 push r28
  324. 318 0006 DF93 push r29
  325. 319 0008 1F92 push __zero_reg__
  326. 320 000a CDB7 in r28,__SP_L__
  327. 321 000c DEB7 in r29,__SP_H__
  328. 322 /* prologue: function */
  329. 323 /* frame size = 1 */
  330. 324 /* stack size = 5 */
  331. 325 .L__stack_usage = 5
  332. 326 000e 9C01 movw r18,r24
  333. 327 0010 462F mov r20,r22
  334. 328 0012 6983 std Y+1,r22
  335. 329 0014 FC01 movw r30,r24
  336. 330 0016 A189 ldd r26,Z+17
  337. 331 0018 B289 ldd r27,Z+18
  338. 332 001a 0785 ldd r16,Z+15
  339. 333 001c 1089 ldd r17,Z+16
  340. 334 001e 1696 adiw r26,6
  341. 335 0020 8C91 ld r24,X
  342. 336 0022 1697 sbiw r26,6
  343. 337 0024 E62F mov r30,r22
  344. 338 0026 87FF sbrs r24,7
  345. 339 0028 00C0 rjmp .L18
  346. 340 002a 982F mov r25,r24
  347. 341 002c 9F77 andi r25,lo8(127)
  348. 342 002e 1696 adiw r26,6
  349. GAS LISTING /tmp/ccuZScUs.s page 7
  350. 343 0030 9C93 st X,r25
  351. 344 0032 1697 sbiw r26,6
  352. 345 0034 042E mov __tmp_reg__,r20
  353. 346 0036 000C lsl r0
  354. 347 0038 550B sbc r21,r21
  355. 348 003a 660B sbc r22,r22
  356. 349 003c 770B sbc r23,r23
  357. 350 003e FA01 movw r30,r20
  358. 351 0040 E256 subi r30,98
  359. 352 0042 F109 sbc r31,__zero_reg__
  360. 353 0044 E331 cpi r30,19
  361. 354 0046 F105 cpc r31,__zero_reg__
  362. 355 0048 00F0 brlo .+2
  363. 356 004a 00C0 rjmp .L19
  364. 357 004c 8827 clr r24
  365. 358 004e E050 subi r30,pm_lo8(-(.L21))
  366. 359 0050 F040 sbci r31,pm_hi8(-(.L21))
  367. 360 0052 8040 sbci r24,pm_hh8(-(.L21))
  368. 361 0054 0C94 0000 jmp __tablejump2__
  369. 362 .section .progmem.gcc_sw_table.Spi7segPutc,"a",@progbits
  370. 363 .p2align 1
  371. 364 .L21:
  372. 365 0000 0000 .word gs(.L20)
  373. 366 0002 0000 .word gs(.L22)
  374. 367 0004 0000 .word gs(.L19)
  375. 368 0006 0000 .word gs(.L19)
  376. 369 0008 0000 .word gs(.L23)
  377. 370 000a 0000 .word gs(.L19)
  378. 371 000c 0000 .word gs(.L47)
  379. 372 000e 0000 .word gs(.L25)
  380. 373 0010 0000 .word gs(.L19)
  381. 374 0012 0000 .word gs(.L19)
  382. 375 0014 0000 .word gs(.L19)
  383. 376 0016 0000 .word gs(.L19)
  384. 377 0018 0000 .word gs(.L26)
  385. 378 001a 0000 .word gs(.L19)
  386. 379 001c 0000 .word gs(.L19)
  387. 380 001e 0000 .word gs(.L19)
  388. 381 0020 0000 .word gs(.L19)
  389. 382 0022 0000 .word gs(.L19)
  390. 383 0024 0000 .word gs(.L27)
  391. 384 .section .text.Spi7segPutc
  392. 385 .L20:
  393. 386 0058 1596 adiw r26,5
  394. 387 005a 8C91 ld r24,X
  395. 388 005c 1597 sbiw r26,5
  396. 389 005e 8063 ori r24,lo8(48)
  397. 390 0060 00C0 rjmp .L46
  398. 391 .L23:
  399. 392 0062 1596 adiw r26,5
  400. 393 0064 8C91 ld r24,X
  401. 394 0066 1597 sbiw r26,5
  402. 395 0068 8F7C andi r24,lo8(-49)
  403. 396 006a 8061 ori r24,lo8(16)
  404. 397 .L46:
  405. 398 006c 1596 adiw r26,5
  406. 399 006e 8C93 st X,r24
  407. GAS LISTING /tmp/ccuZScUs.s page 8
  408. 400 0070 1597 sbiw r26,5
  409. 401 0072 AD01 movw r20,r26
  410. 402 0074 4B5F subi r20,-5
  411. 403 0076 5F4F sbci r21,-1
  412. 404 0078 6EE0 ldi r22,lo8(14)
  413. 405 .L48:
  414. 406 007a C801 movw r24,r16
  415. 407 007c 0E94 0000 call disp7segCommand.isra.0
  416. 408 0080 00C0 rjmp .L28
  417. 409 .L26:
  418. 410 0082 1596 adiw r26,5
  419. 411 0084 8C91 ld r24,X
  420. 412 0086 1597 sbiw r26,5
  421. 413 0088 8F7C andi r24,lo8(-49)
  422. 414 008a 00C0 rjmp .L46
  423. 415 .L22:
  424. 416 008c 1D92 st X+,__zero_reg__
  425. 417 008e 1D92 st X+,__zero_reg__
  426. 418 0090 1D92 st X+,__zero_reg__
  427. 419 0092 1C92 st X,__zero_reg__
  428. 420 0094 1397 sbiw r26,3
  429. 421 0096 00C0 rjmp .L50
  430. 422 .L27:
  431. 423 0098 4FEF ldi r20,lo8(-1)
  432. 424 009a 5FEF ldi r21,lo8(-1)
  433. 425 009c BA01 movw r22,r20
  434. 426 009e 4D93 st X+,r20
  435. 427 00a0 5D93 st X+,r21
  436. 428 00a2 6D93 st X+,r22
  437. 429 00a4 7C93 st X,r23
  438. 430 00a6 1397 sbiw r26,3
  439. 431 .L50:
  440. 432 00a8 892F mov r24,r25
  441. 433 00aa 00C0 rjmp .L45
  442. 434 .L25:
  443. 435 00ac 892F mov r24,r25
  444. 436 00ae 8260 ori r24,lo8(2)
  445. 437 00b0 00C0 rjmp .L49
  446. 438 .L18:
  447. 439 00b2 6B31 cpi r22,lo8(27)
  448. 440 00b4 01F4 brne .L29
  449. 441 00b6 8068 ori r24,lo8(-128)
  450. 442 .L49:
  451. 443 00b8 1696 adiw r26,6
  452. 444 00ba 8C93 st X,r24
  453. 445 00bc 00C0 rjmp .L28
  454. 446 .L29:
  455. 447 00be 81FF sbrs r24,1
  456. 448 00c0 00C0 rjmp .L30
  457. 449 00c2 8D7F andi r24,lo8(-3)
  458. 450 00c4 1696 adiw r26,6
  459. 451 00c6 8C93 st X,r24
  460. 452 00c8 6A33 cpi r22,lo8(58)
  461. 453 00ca 04F0 brlt .L31
  462. 454 00cc 49EC ldi r20,lo8(-55)
  463. 455 00ce 00C0 rjmp .L44
  464. 456 .L31:
  465. GAS LISTING /tmp/ccuZScUs.s page 9
  466. 457 00d0 40ED ldi r20,lo8(-48)
  467. 458 .L44:
  468. 459 00d2 4E0F add r20,r30
  469. 460 00d4 4983 std Y+1,r20
  470. 461 00d6 AE01 movw r20,r28
  471. 462 00d8 4F5F subi r20,-1
  472. 463 00da 5F4F sbci r21,-1
  473. 464 00dc 6AE0 ldi r22,lo8(10)
  474. 465 00de 00C0 rjmp .L48
  475. 466 .L30:
  476. 467 00e0 6A30 cpi r22,lo8(10)
  477. 468 00e2 01F4 brne .L33
  478. 469 .L47:
  479. 470 00e4 1496 adiw r26,4
  480. 471 00e6 1C92 st X,__zero_reg__
  481. 472 00e8 00C0 rjmp .L28
  482. 473 .L33:
  483. 474 00ea 1496 adiw r26,4
  484. 475 00ec 9C91 ld r25,X
  485. 476 00ee 1497 sbiw r26,4
  486. 477 00f0 6E32 cpi r22,lo8(46)
  487. 478 00f2 01F4 brne .L34
  488. 479 00f4 9923 tst r25
  489. 480 00f6 01F0 breq .L45
  490. 481 00f8 E92F mov r30,r25
  491. 482 00fa F0E0 ldi r31,0
  492. 483 00fc 3197 sbiw r30,1
  493. 484 00fe EA0F add r30,r26
  494. 485 0100 FB1F adc r31,r27
  495. 486 0102 9081 ld r25,Z
  496. 487 0104 9068 ori r25,lo8(-128)
  497. 488 0106 00C0 rjmp .L51
  498. 489 .L34:
  499. 490 0108 6032 cpi r22,lo8(32)
  500. 491 010a 04F0 brlt .L19
  501. 492 010c 9430 cpi r25,lo8(4)
  502. 493 010e 00F4 brsh .L19
  503. 494 0110 6036 cpi r22,lo8(96)
  504. 495 0112 04F0 brlt .L36
  505. 496 0114 40EE ldi r20,lo8(-32)
  506. 497 0116 460F add r20,r22
  507. 498 0118 4983 std Y+1,r20
  508. 499 .L36:
  509. 500 011a 41E0 ldi r20,lo8(1)
  510. 501 011c 490F add r20,r25
  511. 502 011e 1496 adiw r26,4
  512. 503 0120 4C93 st X,r20
  513. 504 0122 1497 sbiw r26,4
  514. 505 0124 AD01 movw r20,r26
  515. 506 0126 490F add r20,r25
  516. 507 0128 511D adc r21,__zero_reg__
  517. 508 012a E981 ldd r30,Y+1
  518. 509 012c F0E0 ldi r31,0
  519. 510 012e E050 subi r30,lo8(-(Seg7CharTab-32))
  520. 511 0130 F040 sbci r31,hi8(-(Seg7CharTab-32))
  521. 512 0132 9081 ld r25,Z
  522. 513 0134 FA01 movw r30,r20
  523. GAS LISTING /tmp/ccuZScUs.s page 10
  524. 514 .L51:
  525. 515 0136 9083 st Z,r25
  526. 516 .L45:
  527. 517 0138 8160 ori r24,lo8(1)
  528. 518 013a 1696 adiw r26,6
  529. 519 013c 8C93 st X,r24
  530. 520 013e 1697 sbiw r26,6
  531. 521 .L19:
  532. 522 0140 1496 adiw r26,4
  533. 523 0142 8C91 ld r24,X
  534. 524 0144 1497 sbiw r26,4
  535. 525 0146 8530 cpi r24,lo8(5)
  536. 526 0148 00F0 brlo .L37
  537. 527 014a 84E0 ldi r24,lo8(4)
  538. 528 014c 1496 adiw r26,4
  539. 529 014e 8C93 st X,r24
  540. 530 0150 1497 sbiw r26,4
  541. 531 .L37:
  542. 532 0152 1696 adiw r26,6
  543. 533 0154 8C91 ld r24,X
  544. 534 0156 1697 sbiw r26,6
  545. 535 0158 80FF sbrs r24,0
  546. 536 015a 00C0 rjmp .L28
  547. 537 015c 8E7F andi r24,lo8(-2)
  548. 538 015e 1696 adiw r26,6
  549. 539 0160 8C93 st X,r24
  550. 540 0162 C901 movw r24,r18
  551. 541 0164 0E94 0000 call Spi7SegPush
  552. 542 .L28:
  553. 543 0168 80E0 ldi r24,0
  554. 544 016a 90E0 ldi r25,0
  555. 545 /* epilogue start */
  556. 546 016c 0F90 pop __tmp_reg__
  557. 547 016e DF91 pop r29
  558. 548 0170 CF91 pop r28
  559. 549 0172 1F91 pop r17
  560. 550 0174 0F91 pop r16
  561. 551 0176 0895 ret
  562. 552 .size Spi7segPutc, .-Spi7segPutc
  563. 553 .section .text.Spi7segWrite,"ax",@progbits
  564. 554 .global Spi7segWrite
  565. 555 .type Spi7segWrite, @function
  566. 556 Spi7segWrite:
  567. 557 0000 CF92 push r12
  568. 558 0002 DF92 push r13
  569. 559 0004 EF92 push r14
  570. 560 0006 FF92 push r15
  571. 561 0008 0F93 push r16
  572. 562 000a 1F93 push r17
  573. 563 000c CF93 push r28
  574. 564 000e DF93 push r29
  575. 565 /* prologue: function */
  576. 566 /* frame size = 0 */
  577. 567 /* stack size = 8 */
  578. 568 .L__stack_usage = 8
  579. 569 0010 6C01 movw r12,r24
  580. 570 0012 8A01 movw r16,r20
  581. GAS LISTING /tmp/ccuZScUs.s page 11
  582. 571 0014 EB01 movw r28,r22
  583. 572 0016 7B01 movw r14,r22
  584. 573 0018 E40E add r14,r20
  585. 574 001a F51E adc r15,r21
  586. 575 .L53:
  587. 576 001c CE15 cp r28,r14
  588. 577 001e DF05 cpc r29,r15
  589. 578 0020 01F0 breq .L55
  590. 579 0022 6991 ld r22,Y+
  591. 580 0024 F601 movw r30,r12
  592. 581 0026 8081 ld r24,Z
  593. 582 0028 9181 ldd r25,Z+1
  594. 583 002a 0E94 0000 call Spi7segPutc
  595. 584 002e 00C0 rjmp .L53
  596. 585 .L55:
  597. 586 0030 C801 movw r24,r16
  598. 587 /* epilogue start */
  599. 588 0032 DF91 pop r29
  600. 589 0034 CF91 pop r28
  601. 590 0036 1F91 pop r17
  602. 591 0038 0F91 pop r16
  603. 592 003a FF90 pop r15
  604. 593 003c EF90 pop r14
  605. 594 003e DF90 pop r13
  606. 595 0040 CF90 pop r12
  607. 596 0042 0895 ret
  608. 597 .size Spi7segWrite, .-Spi7segWrite
  609. 598 .section .text.Spi7segDot,"ax",@progbits
  610. 599 .global Spi7segDot
  611. 600 .type Spi7segDot, @function
  612. 601 Spi7segDot:
  613. 602 /* prologue: function */
  614. 603 /* frame size = 0 */
  615. 604 /* stack size = 0 */
  616. 605 .L__stack_usage = 0
  617. 606 0000 DC01 movw r26,r24
  618. 607 0002 6430 cpi r22,lo8(4)
  619. 608 0004 00F4 brsh .L56
  620. 609 0006 5196 adiw r26,17
  621. 610 0008 2D91 ld r18,X+
  622. 611 000a 3C91 ld r19,X
  623. 612 000c 5297 sbiw r26,17+1
  624. 613 000e 4130 cpi r20,lo8(1)
  625. 614 0010 01F0 breq .L59
  626. 615 0012 00F0 brlo .L60
  627. 616 0014 4230 cpi r20,lo8(2)
  628. 617 0016 01F4 brne .L58
  629. 618 0018 F901 movw r30,r18
  630. 619 001a E60F add r30,r22
  631. 620 001c F11D adc r31,__zero_reg__
  632. 621 001e 9081 ld r25,Z
  633. 622 0020 9058 subi r25,lo8(-(-128))
  634. 623 0022 00C0 rjmp .L62
  635. 624 .L59:
  636. 625 0024 F901 movw r30,r18
  637. 626 0026 E60F add r30,r22
  638. 627 0028 F11D adc r31,__zero_reg__
  639. GAS LISTING /tmp/ccuZScUs.s page 12
  640. 628 002a 9081 ld r25,Z
  641. 629 002c 9068 ori r25,lo8(-128)
  642. 630 002e 00C0 rjmp .L62
  643. 631 .L60:
  644. 632 0030 F901 movw r30,r18
  645. 633 0032 E60F add r30,r22
  646. 634 0034 F11D adc r31,__zero_reg__
  647. 635 0036 9081 ld r25,Z
  648. 636 0038 9F77 andi r25,lo8(127)
  649. 637 .L62:
  650. 638 003a 9083 st Z,r25
  651. 639 .L58:
  652. 640 003c CD01 movw r24,r26
  653. 641 003e 0C94 0000 jmp Spi7SegPush
  654. 642 .L56:
  655. 643 0042 0895 ret
  656. 644 .size Spi7segDot, .-Spi7segDot
  657. 645 .global devSpi7SEG
  658. 646 .data
  659. 647 .type devSpi7SEG, @object
  660. 648 .size devSpi7SEG, 37
  661. 649 devSpi7SEG:
  662. 650 0000 0000 .word 0
  663. 651 0002 37 .byte 55
  664. 652 0003 53 .byte 83
  665. 653 0004 45 .byte 69
  666. 654 0005 47 .byte 71
  667. 655 0006 00 .byte 0
  668. 656 0007 00 .byte 0
  669. 657 0008 00 .byte 0
  670. 658 0009 0000 .zero 2
  671. 659 000b 05 .byte 5
  672. 660 000c 0000 .word 0
  673. 661 000e 00 .byte 0
  674. 662 000f 0000 .word nodeSpi7SEG
  675. 663 0011 0000 .word 0
  676. 664 0013 0000 .word gs(Spi7segInit)
  677. 665 0015 0000 .word gs(Spi7SegIOCtl)
  678. 666 0017 0000 .word 0
  679. 667 0019 0000 .word gs(Spi7segWrite)
  680. 668 001b 0000 .word 0
  681. 669 001d 0000 .word gs(Spi7SegOpen)
  682. 670 001f 0000 .word gs(Spi7SegClose)
  683. 671 0021 0000 .word 0
  684. 672 0023 0000 .word 0
  685. 673 .global nodeSpi7SEG
  686. 674 .type nodeSpi7SEG, @object
  687. 675 .size nodeSpi7SEG, 14
  688. 676 nodeSpi7SEG:
  689. 677 0025 0000 .word 0
  690. 678 0027 0000 .word 0
  691. 679 0029 80 .byte -128
  692. 680 002a 1A .byte 26
  693. 681 002b 06 .byte 6
  694. 682 002c 00 .byte 0
  695. 683 002d 0300 .word 3
  696. 684 002f 08 .byte 8
  697. GAS LISTING /tmp/ccuZScUs.s page 13
  698. 685 0030 00 .byte 0
  699. 686 0031 0000 .zero 2
  700. 687 .section .rodata
  701. 688 .type Seg7CharTab, @object
  702. 689 .size Seg7CharTab, 64
  703. 690 Seg7CharTab:
  704. 691 0000 00 .byte 0
  705. 692 0001 28 .byte 40
  706. 693 0002 22 .byte 34
  707. 694 0003 00 .byte 0
  708. 695 0004 5B .byte 91
  709. 696 0005 00 .byte 0
  710. 697 0006 6F .byte 111
  711. 698 0007 20 .byte 32
  712. 699 0008 4E .byte 78
  713. 700 0009 78 .byte 120
  714. 701 000a 00 .byte 0
  715. 702 000b 31 .byte 49
  716. 703 000c 20 .byte 32
  717. 704 000d 01 .byte 1
  718. 705 000e 01 .byte 1
  719. 706 000f 15 .byte 21
  720. 707 0010 7E .byte 126
  721. 708 0011 30 .byte 48
  722. 709 0012 6D .byte 109
  723. 710 0013 79 .byte 121
  724. 711 0014 33 .byte 51
  725. 712 0015 5B .byte 91
  726. 713 0016 5F .byte 95
  727. 714 0017 70 .byte 112
  728. 715 0018 7F .byte 127
  729. 716 0019 7B .byte 123
  730. 717 001a 00 .byte 0
  731. 718 001b 00 .byte 0
  732. 719 001c 00 .byte 0
  733. 720 001d 09 .byte 9
  734. 721 001e 00 .byte 0
  735. 722 001f 65 .byte 101
  736. 723 0020 00 .byte 0
  737. 724 0021 77 .byte 119
  738. 725 0022 1F .byte 31
  739. 726 0023 0D .byte 13
  740. 727 0024 3D .byte 61
  741. 728 0025 4F .byte 79
  742. 729 0026 47 .byte 71
  743. 730 0027 5F .byte 95
  744. 731 0028 37 .byte 55
  745. 732 0029 10 .byte 16
  746. 733 002a 3C .byte 60
  747. 734 002b 0F .byte 15
  748. 735 002c 0E .byte 14
  749. 736 002d 76 .byte 118
  750. 737 002e 15 .byte 21
  751. 738 002f 1D .byte 29
  752. 739 0030 67 .byte 103
  753. 740 0031 73 .byte 115
  754. 741 0032 05 .byte 5
  755. GAS LISTING /tmp/ccuZScUs.s page 14
  756. 742 0033 5B .byte 91
  757. 743 0034 0F .byte 15
  758. 744 0035 3E .byte 62
  759. 745 0036 1C .byte 28
  760. 746 0037 3F .byte 63
  761. 747 0038 37 .byte 55
  762. 748 0039 3B .byte 59
  763. 749 003a 6D .byte 109
  764. 750 003b 4E .byte 78
  765. 751 003c 13 .byte 19
  766. 752 003d 78 .byte 120
  767. 753 003e 42 .byte 66
  768. 754 003f 01 .byte 1
  769. 755 .ident "GCC: (GNU) 5.3.0"
  770. 756 .global __do_copy_data
  771. GAS LISTING /tmp/ccuZScUs.s page 15
  772. DEFINED SYMBOLS
  773. *ABS*:0000000000000000 spi_7seg.c
  774. /tmp/ccuZScUs.s:2 *ABS*:000000000000003e __SP_H__
  775. /tmp/ccuZScUs.s:3 *ABS*:000000000000003d __SP_L__
  776. /tmp/ccuZScUs.s:4 *ABS*:000000000000003f __SREG__
  777. /tmp/ccuZScUs.s:5 *ABS*:000000000000003b __RAMPZ__
  778. /tmp/ccuZScUs.s:6 *ABS*:0000000000000000 __tmp_reg__
  779. /tmp/ccuZScUs.s:7 *ABS*:0000000000000001 __zero_reg__
  780. /tmp/ccuZScUs.s:10 .text.Spi7SegIOCtl:0000000000000000 Spi7SegIOCtl
  781. /tmp/ccuZScUs.s:22 .text.Spi7SegOpen:0000000000000000 Spi7SegOpen
  782. /tmp/ccuZScUs.s:52 .text.Spi7SegClose:0000000000000000 Spi7SegClose
  783. /tmp/ccuZScUs.s:70 .text.disp7segCommand.isra.0:0000000000000000 disp7segCommand.isra.0
  784. /tmp/ccuZScUs.s:149 .text.Spi7segInit:0000000000000000 Spi7segInit
  785. /tmp/ccuZScUs.s:277 .text.Spi7SegPush:0000000000000000 Spi7SegPush
  786. /tmp/ccuZScUs.s:314 .text.Spi7segPutc:0000000000000000 Spi7segPutc
  787. /tmp/ccuZScUs.s:690 .rodata:0000000000000000 Seg7CharTab
  788. /tmp/ccuZScUs.s:556 .text.Spi7segWrite:0000000000000000 Spi7segWrite
  789. /tmp/ccuZScUs.s:601 .text.Spi7segDot:0000000000000000 Spi7segDot
  790. /tmp/ccuZScUs.s:649 .data:0000000000000000 devSpi7SEG
  791. /tmp/ccuZScUs.s:676 .data:0000000000000025 nodeSpi7SEG
  792. UNDEFINED SYMBOLS
  793. malloc
  794. free
  795. __tablejump2__
  796. __do_copy_data