fopen.lst 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. GAS LISTING /tmp/cc3EqpUM.s page 1
  2. 1 .file "fopen.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.fopen,"ax",@progbits
  10. 9 .global fopen
  11. 10 .type fopen, @function
  12. 11 fopen:
  13. 12 0000 AF92 push r10
  14. 13 0002 BF92 push r11
  15. 14 0004 CF92 push r12
  16. 15 0006 DF92 push r13
  17. 16 0008 EF92 push r14
  18. 17 000a FF92 push r15
  19. 18 000c 0F93 push r16
  20. 19 000e 1F93 push r17
  21. 20 0010 CF93 push r28
  22. 21 0012 DF93 push r29
  23. 22 /* prologue: function */
  24. 23 /* frame size = 0 */
  25. 24 /* stack size = 10 */
  26. 25 .L__stack_usage = 10
  27. 26 0014 6C01 movw r12,r24
  28. 27 0016 CB01 movw r24,r22
  29. 28 0018 0E94 0000 call _fmode
  30. 29 001c 7C01 movw r14,r24
  31. 30 001e 0196 adiw r24,1
  32. 31 0020 01F0 breq .L12
  33. 32 0022 E0E0 ldi r30,lo8(__iob)
  34. 33 0024 F0E0 ldi r31,hi8(__iob)
  35. 34 0026 C0E0 ldi r28,0
  36. 35 0028 D0E0 ldi r29,0
  37. 36 .L4:
  38. 37 002a 0191 ld r16,Z+
  39. 38 002c 1191 ld r17,Z+
  40. 39 002e 0115 cp r16,__zero_reg__
  41. 40 0030 1105 cpc r17,__zero_reg__
  42. 41 0032 01F0 breq .L14
  43. 42 0034 2196 adiw r28,1
  44. 43 0036 C830 cpi r28,8
  45. 44 0038 D105 cpc r29,__zero_reg__
  46. 45 003a 01F4 brne .L4
  47. 46 003c 87E1 ldi r24,lo8(23)
  48. 47 003e 90E0 ldi r25,0
  49. 48 0040 9093 0000 sts errno+1,r25
  50. 49 0044 8093 0000 sts errno,r24
  51. 50 .L12:
  52. 51 0048 00E0 ldi r16,0
  53. 52 004a 10E0 ldi r17,0
  54. 53 004c 00C0 rjmp .L3
  55. 54 .L14:
  56. 55 004e 87E0 ldi r24,lo8(7)
  57. 56 0050 90E0 ldi r25,0
  58. 57 0052 0E94 0000 call malloc
  59. GAS LISTING /tmp/cc3EqpUM.s page 2
  60. 58 0056 5C01 movw r10,r24
  61. 59 0058 CC0F lsl r28
  62. 60 005a DD1F rol r29
  63. 61 005c C050 subi r28,lo8(-(__iob))
  64. 62 005e D040 sbci r29,hi8(-(__iob))
  65. 63 0060 B982 std Y+1,r11
  66. 64 0062 A882 st Y,r10
  67. 65 0064 A114 cp r10,__zero_reg__
  68. 66 0066 B104 cpc r11,__zero_reg__
  69. 67 0068 01F0 breq .L12
  70. 68 006a B701 movw r22,r14
  71. 69 006c C601 movw r24,r12
  72. 70 006e 0E94 0000 call _open
  73. 71 0072 9C01 movw r18,r24
  74. 72 0074 F501 movw r30,r10
  75. 73 0076 9183 std Z+1,r25
  76. 74 0078 8083 st Z,r24
  77. 75 007a 8881 ld r24,Y
  78. 76 007c 9981 ldd r25,Y+1
  79. 77 007e 2F3F cpi r18,-1
  80. 78 0080 3F4F sbci r19,-1
  81. 79 0082 01F4 brne .L7
  82. 80 0084 0E94 0000 call free
  83. 81 0088 1982 std Y+1,__zero_reg__
  84. 82 008a 1882 st Y,__zero_reg__
  85. 83 008c 00C0 rjmp .L3
  86. 84 .L7:
  87. 85 008e 8C01 movw r16,r24
  88. 86 0090 F801 movw r30,r16
  89. 87 0092 F382 std Z+3,r15
  90. 88 0094 E282 std Z+2,r14
  91. 89 0096 1482 std Z+4,__zero_reg__
  92. 90 0098 1682 std Z+6,__zero_reg__
  93. 91 009a 1582 std Z+5,__zero_reg__
  94. 92 .L3:
  95. 93 009c C801 movw r24,r16
  96. 94 /* epilogue start */
  97. 95 009e DF91 pop r29
  98. 96 00a0 CF91 pop r28
  99. 97 00a2 1F91 pop r17
  100. 98 00a4 0F91 pop r16
  101. 99 00a6 FF90 pop r15
  102. 100 00a8 EF90 pop r14
  103. 101 00aa DF90 pop r13
  104. 102 00ac CF90 pop r12
  105. 103 00ae BF90 pop r11
  106. 104 00b0 AF90 pop r10
  107. 105 00b2 0895 ret
  108. 106 .size fopen, .-fopen
  109. 107 .global __iob
  110. 108 .data
  111. 109 .type __iob, @object
  112. 110 .size __iob, 16
  113. 111 __iob:
  114. 112 0000 0100 .word 1
  115. 113 0002 0200 .word 2
  116. 114 0004 0300 .word 3
  117. GAS LISTING /tmp/cc3EqpUM.s page 3
  118. 115 0006 0000 0000 .zero 10
  119. 115 0000 0000
  120. 115 0000
  121. 116 .ident "GCC: (GNU) 5.3.0"
  122. 117 .global __do_copy_data
  123. GAS LISTING /tmp/cc3EqpUM.s page 4
  124. DEFINED SYMBOLS
  125. *ABS*:0000000000000000 fopen.c
  126. /tmp/cc3EqpUM.s:2 *ABS*:000000000000003e __SP_H__
  127. /tmp/cc3EqpUM.s:3 *ABS*:000000000000003d __SP_L__
  128. /tmp/cc3EqpUM.s:4 *ABS*:000000000000003f __SREG__
  129. /tmp/cc3EqpUM.s:5 *ABS*:000000000000003b __RAMPZ__
  130. /tmp/cc3EqpUM.s:6 *ABS*:0000000000000000 __tmp_reg__
  131. /tmp/cc3EqpUM.s:7 *ABS*:0000000000000001 __zero_reg__
  132. /tmp/cc3EqpUM.s:11 .text.fopen:0000000000000000 fopen
  133. /tmp/cc3EqpUM.s:111 .data:0000000000000000 __iob
  134. UNDEFINED SYMBOLS
  135. _fmode
  136. errno
  137. malloc
  138. _open
  139. free
  140. __do_copy_data