devreg.lst 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. GAS LISTING /tmp/ccxp6UuW.s page 1
  2. 1 .file "devreg.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.NutDeviceLookup,"ax",@progbits
  10. 9 .global NutDeviceLookup
  11. 10 .type NutDeviceLookup, @function
  12. 11 NutDeviceLookup:
  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 C091 0000 lds r28,nutDeviceList
  23. 22 000e D091 0000 lds r29,nutDeviceList+1
  24. 23 .L2:
  25. 24 0012 2097 sbiw r28,0
  26. 25 0014 01F0 breq .L3
  27. 26 0016 B801 movw r22,r16
  28. 27 0018 CE01 movw r24,r28
  29. 28 001a 0296 adiw r24,2
  30. 29 001c 0E94 0000 call strcmp
  31. 30 0020 892B or r24,r25
  32. 31 0022 01F0 breq .L3
  33. 32 0024 0990 ld __tmp_reg__,Y+
  34. 33 0026 D881 ld r29,Y
  35. 34 0028 C02D mov r28,__tmp_reg__
  36. 35 002a 00C0 rjmp .L2
  37. 36 .L3:
  38. 37 002c CE01 movw r24,r28
  39. 38 /* epilogue start */
  40. 39 002e DF91 pop r29
  41. 40 0030 CF91 pop r28
  42. 41 0032 1F91 pop r17
  43. 42 0034 0F91 pop r16
  44. 43 0036 0895 ret
  45. 44 .size NutDeviceLookup, .-NutDeviceLookup
  46. 45 .section .text.NutDeviceLookupType,"ax",@progbits
  47. 46 .global NutDeviceLookupType
  48. 47 .type NutDeviceLookupType, @function
  49. 48 NutDeviceLookupType:
  50. 49 /* prologue: function */
  51. 50 /* frame size = 0 */
  52. 51 /* stack size = 0 */
  53. 52 .L__stack_usage = 0
  54. 53 0000 0097 sbiw r24,0
  55. 54 0002 01F4 brne .L10
  56. 55 0004 8091 0000 lds r24,nutDeviceList
  57. 56 0008 9091 0000 lds r25,nutDeviceList+1
  58. 57 000c 00C0 rjmp .L12
  59. GAS LISTING /tmp/ccxp6UuW.s page 2
  60. 58 .L10:
  61. 59 000e FC01 movw r30,r24
  62. 60 0010 00C0 rjmp .L15
  63. 61 .L12:
  64. 62 0012 0097 sbiw r24,0
  65. 63 0014 01F0 breq .L13
  66. 64 0016 FC01 movw r30,r24
  67. 65 0018 2385 ldd r18,Z+11
  68. 66 001a 2617 cp r18,r22
  69. 67 001c 01F0 breq .L13
  70. 68 .L15:
  71. 69 001e 8081 ld r24,Z
  72. 70 0020 9181 ldd r25,Z+1
  73. 71 0022 00C0 rjmp .L12
  74. 72 .L13:
  75. 73 0024 0895 ret
  76. 74 .size NutDeviceLookupType, .-NutDeviceLookupType
  77. 75 .section .text.NutRegisterDevice,"ax",@progbits
  78. 76 .global NutRegisterDevice
  79. 77 .type NutRegisterDevice, @function
  80. 78 NutRegisterDevice:
  81. 79 0000 CF93 push r28
  82. 80 0002 DF93 push r29
  83. 81 /* prologue: function */
  84. 82 /* frame size = 0 */
  85. 83 /* stack size = 2 */
  86. 84 .L__stack_usage = 2
  87. 85 0004 EC01 movw r28,r24
  88. 86 0006 6115 cp r22,__zero_reg__
  89. 87 0008 7105 cpc r23,__zero_reg__
  90. 88 000a 01F0 breq .L17
  91. 89 000c 7D87 std Y+13,r23
  92. 90 000e 6C87 std Y+12,r22
  93. 91 .L17:
  94. 92 0010 4111 cpse r20,__zero_reg__
  95. 93 0012 4E87 std Y+14,r20
  96. 94 .L18:
  97. 95 0014 CE01 movw r24,r28
  98. 96 0016 0296 adiw r24,2
  99. 97 0018 0E94 0000 call NutDeviceLookup
  100. 98 001c 892B or r24,r25
  101. 99 001e 01F0 breq .L19
  102. 100 .L23:
  103. 101 0020 8FEF ldi r24,lo8(-1)
  104. 102 0022 9FEF ldi r25,lo8(-1)
  105. 103 0024 00C0 rjmp .L20
  106. 104 .L19:
  107. 105 0026 EB89 ldd r30,Y+19
  108. 106 0028 FC89 ldd r31,Y+20
  109. 107 002a 3097 sbiw r30,0
  110. 108 002c 01F4 brne .L21
  111. 109 .L22:
  112. 110 002e 8091 0000 lds r24,nutDeviceList
  113. 111 0032 9091 0000 lds r25,nutDeviceList+1
  114. 112 0036 9983 std Y+1,r25
  115. 113 0038 8883 st Y,r24
  116. 114 003a D093 0000 sts nutDeviceList+1,r29
  117. GAS LISTING /tmp/ccxp6UuW.s page 3
  118. 115 003e C093 0000 sts nutDeviceList,r28
  119. 116 0042 80E0 ldi r24,0
  120. 117 0044 90E0 ldi r25,0
  121. 118 0046 00C0 rjmp .L20
  122. 119 .L21:
  123. 120 0048 CE01 movw r24,r28
  124. 121 004a 1995 eicall
  125. 122 004c 892B or r24,r25
  126. 123 004e 01F0 breq .L22
  127. 124 0050 00C0 rjmp .L23
  128. 125 .L20:
  129. 126 /* epilogue start */
  130. 127 0052 DF91 pop r29
  131. 128 0054 CF91 pop r28
  132. 129 0056 0895 ret
  133. 130 .size NutRegisterDevice, .-NutRegisterDevice
  134. 131 .global nutDeviceList
  135. 132 .section .bss
  136. 133 .type nutDeviceList, @object
  137. 134 .size nutDeviceList, 2
  138. 135 nutDeviceList:
  139. 136 0000 0000 .zero 2
  140. 137 .ident "GCC: (GNU) 5.3.0"
  141. 138 .global __do_clear_bss
  142. GAS LISTING /tmp/ccxp6UuW.s page 4
  143. DEFINED SYMBOLS
  144. *ABS*:0000000000000000 devreg.c
  145. /tmp/ccxp6UuW.s:2 *ABS*:000000000000003e __SP_H__
  146. /tmp/ccxp6UuW.s:3 *ABS*:000000000000003d __SP_L__
  147. /tmp/ccxp6UuW.s:4 *ABS*:000000000000003f __SREG__
  148. /tmp/ccxp6UuW.s:5 *ABS*:000000000000003b __RAMPZ__
  149. /tmp/ccxp6UuW.s:6 *ABS*:0000000000000000 __tmp_reg__
  150. /tmp/ccxp6UuW.s:7 *ABS*:0000000000000001 __zero_reg__
  151. /tmp/ccxp6UuW.s:11 .text.NutDeviceLookup:0000000000000000 NutDeviceLookup
  152. /tmp/ccxp6UuW.s:135 .bss:0000000000000000 nutDeviceList
  153. /tmp/ccxp6UuW.s:48 .text.NutDeviceLookupType:0000000000000000 NutDeviceLookupType
  154. /tmp/ccxp6UuW.s:78 .text.NutRegisterDevice:0000000000000000 NutRegisterDevice
  155. UNDEFINED SYMBOLS
  156. strcmp
  157. __do_clear_bss