GAS LISTING /tmp/ccH4CVSw.s page 1 1 .file "hd44780_bus.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.LcdBusyWait,"ax",@progbits 9 .type LcdBusyWait, @function 10 LcdBusyWait: 11 /* prologue: function */ 12 /* frame size = 0 */ 13 /* stack size = 0 */ 14 .L__stack_usage = 0 15 0000 E091 0000 lds r30,lcd_base 16 0004 F091 0000 lds r31,lcd_base+1 17 0008 3296 adiw r30,2 18 .L2: 19 000a 8081 ld r24,Z 20 000c 87FF sbrs r24,7 21 000e 00C0 rjmp .L5 22 /* #APP */ 23 ; 109 "../../nut/arch/avr/dev/hd44780_bus.c" 1 24 0010 0000 nop 25 ; 0 "" 2 26 /* #NOAPP */ 27 0012 00C0 rjmp .L2 28 .L5: 29 /* #APP */ 30 ; 109 "../../nut/arch/avr/dev/hd44780_bus.c" 1 31 0014 0000 nop 32 ; 0 "" 2 33 ; 110 "../../nut/arch/avr/dev/hd44780_bus.c" 1 34 0016 0000 nop 35 ; 0 "" 2 36 ; 110 "../../nut/arch/avr/dev/hd44780_bus.c" 1 37 0018 0000 nop 38 ; 0 "" 2 39 ; 111 "../../nut/arch/avr/dev/hd44780_bus.c" 1 40 001a 0000 nop 41 ; 0 "" 2 42 ; 111 "../../nut/arch/avr/dev/hd44780_bus.c" 1 43 001c 0000 nop 44 ; 0 "" 2 45 ; 112 "../../nut/arch/avr/dev/hd44780_bus.c" 1 46 001e 0000 nop 47 ; 0 "" 2 48 ; 112 "../../nut/arch/avr/dev/hd44780_bus.c" 1 49 0020 0000 nop 50 ; 0 "" 2 51 ; 113 "../../nut/arch/avr/dev/hd44780_bus.c" 1 52 0022 0000 nop 53 ; 0 "" 2 54 ; 113 "../../nut/arch/avr/dev/hd44780_bus.c" 1 55 0024 0000 nop 56 ; 0 "" 2 57 ; 114 "../../nut/arch/avr/dev/hd44780_bus.c" 1 GAS LISTING /tmp/ccH4CVSw.s page 2 58 0026 0000 nop 59 ; 0 "" 2 60 ; 114 "../../nut/arch/avr/dev/hd44780_bus.c" 1 61 0028 0000 nop 62 ; 0 "" 2 63 ; 115 "../../nut/arch/avr/dev/hd44780_bus.c" 1 64 002a 0000 nop 65 ; 0 "" 2 66 ; 115 "../../nut/arch/avr/dev/hd44780_bus.c" 1 67 002c 0000 nop 68 ; 0 "" 2 69 ; 116 "../../nut/arch/avr/dev/hd44780_bus.c" 1 70 002e 0000 nop 71 ; 0 "" 2 72 ; 116 "../../nut/arch/avr/dev/hd44780_bus.c" 1 73 0030 0000 nop 74 ; 0 "" 2 75 ; 117 "../../nut/arch/avr/dev/hd44780_bus.c" 1 76 0032 0000 nop 77 ; 0 "" 2 78 ; 117 "../../nut/arch/avr/dev/hd44780_bus.c" 1 79 0034 0000 nop 80 ; 0 "" 2 81 ; 118 "../../nut/arch/avr/dev/hd44780_bus.c" 1 82 0036 0000 nop 83 ; 0 "" 2 84 ; 118 "../../nut/arch/avr/dev/hd44780_bus.c" 1 85 0038 0000 nop 86 ; 0 "" 2 87 ; 119 "../../nut/arch/avr/dev/hd44780_bus.c" 1 88 003a 0000 nop 89 ; 0 "" 2 90 ; 119 "../../nut/arch/avr/dev/hd44780_bus.c" 1 91 003c 0000 nop 92 ; 0 "" 2 93 ; 120 "../../nut/arch/avr/dev/hd44780_bus.c" 1 94 003e 0000 nop 95 ; 0 "" 2 96 ; 120 "../../nut/arch/avr/dev/hd44780_bus.c" 1 97 0040 0000 nop 98 ; 0 "" 2 99 ; 121 "../../nut/arch/avr/dev/hd44780_bus.c" 1 100 0042 0000 nop 101 ; 0 "" 2 102 ; 121 "../../nut/arch/avr/dev/hd44780_bus.c" 1 103 0044 0000 nop 104 ; 0 "" 2 105 /* #NOAPP */ 106 0046 0895 ret 107 .size LcdBusyWait, .-LcdBusyWait 108 .section .text.LcdWriteData,"ax",@progbits 109 .type LcdWriteData, @function 110 LcdWriteData: 111 0000 CF93 push r28 112 0002 DF93 push r29 113 0004 1F92 push __zero_reg__ 114 0006 CDB7 in r28,__SP_L__ GAS LISTING /tmp/ccH4CVSw.s page 3 115 0008 DEB7 in r29,__SP_H__ 116 /* prologue: function */ 117 /* frame size = 1 */ 118 /* stack size = 3 */ 119 .L__stack_usage = 3 120 000a 8983 std Y+1,r24 121 000c 0E94 0000 call LcdBusyWait 122 0010 E091 0000 lds r30,lcd_base 123 0014 F091 0000 lds r31,lcd_base+1 124 0018 8981 ldd r24,Y+1 125 001a 8183 std Z+1,r24 126 /* epilogue start */ 127 001c 0F90 pop __tmp_reg__ 128 001e DF91 pop r29 129 0020 CF91 pop r28 130 0022 0895 ret 131 .size LcdWriteData, .-LcdWriteData 132 .section .text.LcdWriteCmd,"ax",@progbits 133 .type LcdWriteCmd, @function 134 LcdWriteCmd: 135 0000 CF93 push r28 136 0002 DF93 push r29 137 0004 1F92 push __zero_reg__ 138 0006 CDB7 in r28,__SP_L__ 139 0008 DEB7 in r29,__SP_H__ 140 /* prologue: function */ 141 /* frame size = 1 */ 142 /* stack size = 3 */ 143 .L__stack_usage = 3 144 000a 8983 std Y+1,r24 145 000c 0E94 0000 call LcdBusyWait 146 0010 E091 0000 lds r30,lcd_base 147 0014 F091 0000 lds r31,lcd_base+1 148 0018 8981 ldd r24,Y+1 149 001a 8083 st Z,r24 150 /* epilogue start */ 151 001c 0F90 pop __tmp_reg__ 152 001e DF91 pop r29 153 0020 CF91 pop r28 154 0022 0895 ret 155 .size LcdWriteCmd, .-LcdWriteCmd 156 .section .text.LcdSetCursor,"ax",@progbits 157 .type LcdSetCursor, @function 158 LcdSetCursor: 159 0000 1F93 push r17 160 0002 CF93 push r28 161 0004 DF93 push r29 162 0006 00D0 rcall . 163 0008 1F92 push __zero_reg__ 164 000a CDB7 in r28,__SP_L__ 165 000c DEB7 in r29,__SP_H__ 166 /* prologue: function */ 167 /* frame size = 4 */ 168 /* stack size = 7 */ 169 .L__stack_usage = 7 170 000e 1982 std Y+1,__zero_reg__ 171 0010 90E4 ldi r25,lo8(64) GAS LISTING /tmp/ccH4CVSw.s page 4 172 0012 9A83 std Y+2,r25 173 0014 90E1 ldi r25,lo8(16) 174 0016 9B83 std Y+3,r25 175 0018 90E5 ldi r25,lo8(80) 176 001a 9C83 std Y+4,r25 177 001c 182F mov r17,r24 178 001e 1F70 andi r17,lo8(15) 179 0020 8295 swap r24 180 0022 8F70 andi r24,lo8(15) 181 0024 8430 cpi r24,lo8(4) 182 0026 00F0 brlo .L9 183 0028 83E0 ldi r24,lo8(3) 184 .L9: 185 002a FE01 movw r30,r28 186 002c E80F add r30,r24 187 002e F11D adc r31,__zero_reg__ 188 0030 8181 ldd r24,Z+1 189 0032 180F add r17,r24 190 0034 1068 ori r17,lo8(-128) 191 0036 0E94 0000 call LcdBusyWait 192 003a E091 0000 lds r30,lcd_base 193 003e F091 0000 lds r31,lcd_base+1 194 0042 1083 st Z,r17 195 /* epilogue start */ 196 0044 0F90 pop __tmp_reg__ 197 0046 0F90 pop __tmp_reg__ 198 0048 0F90 pop __tmp_reg__ 199 004a 0F90 pop __tmp_reg__ 200 004c DF91 pop r29 201 004e CF91 pop r28 202 0050 1F91 pop r17 203 0052 0895 ret 204 .size LcdSetCursor, .-LcdSetCursor 205 .section .text.LcdCursorHome,"ax",@progbits 206 .type LcdCursorHome, @function 207 LcdCursorHome: 208 /* prologue: function */ 209 /* frame size = 0 */ 210 /* stack size = 0 */ 211 .L__stack_usage = 0 212 0000 0E94 0000 call LcdBusyWait 213 0004 E091 0000 lds r30,lcd_base 214 0008 F091 0000 lds r31,lcd_base+1 215 000c 82E0 ldi r24,lo8(2) 216 000e 8083 st Z,r24 217 0010 0895 ret 218 .size LcdCursorHome, .-LcdCursorHome 219 .section .text.LcdCursorLeft,"ax",@progbits 220 .type LcdCursorLeft, @function 221 LcdCursorLeft: 222 /* prologue: function */ 223 /* frame size = 0 */ 224 /* stack size = 0 */ 225 .L__stack_usage = 0 226 0000 0E94 0000 call LcdBusyWait 227 0004 E091 0000 lds r30,lcd_base 228 0008 F091 0000 lds r31,lcd_base+1 GAS LISTING /tmp/ccH4CVSw.s page 5 229 000c 80E1 ldi r24,lo8(16) 230 000e 8083 st Z,r24 231 0010 0895 ret 232 .size LcdCursorLeft, .-LcdCursorLeft 233 .section .text.LcdCursorRight,"ax",@progbits 234 .type LcdCursorRight, @function 235 LcdCursorRight: 236 /* prologue: function */ 237 /* frame size = 0 */ 238 /* stack size = 0 */ 239 .L__stack_usage = 0 240 0000 0E94 0000 call LcdBusyWait 241 0004 E091 0000 lds r30,lcd_base 242 0008 F091 0000 lds r31,lcd_base+1 243 000c 84E1 ldi r24,lo8(20) 244 000e 8083 st Z,r24 245 0010 0895 ret 246 .size LcdCursorRight, .-LcdCursorRight 247 .section .text.LcdClear,"ax",@progbits 248 .type LcdClear, @function 249 LcdClear: 250 /* prologue: function */ 251 /* frame size = 0 */ 252 /* stack size = 0 */ 253 .L__stack_usage = 0 254 0000 0E94 0000 call LcdBusyWait 255 0004 E091 0000 lds r30,lcd_base 256 0008 F091 0000 lds r31,lcd_base+1 257 000c 81E0 ldi r24,lo8(1) 258 000e 8083 st Z,r24 259 0010 0895 ret 260 .size LcdClear, .-LcdClear 261 .section .text.LcdCursorMode,"ax",@progbits 262 .type LcdCursorMode, @function 263 LcdCursorMode: 264 /* prologue: function */ 265 /* frame size = 0 */ 266 /* stack size = 0 */ 267 .L__stack_usage = 0 268 0000 0E94 0000 call LcdBusyWait 269 0004 E091 0000 lds r30,lcd_base 270 0008 F091 0000 lds r31,lcd_base+1 271 000c 82E0 ldi r24,lo8(2) 272 000e 8083 st Z,r24 273 0010 0895 ret 274 .size LcdCursorMode, .-LcdCursorMode 275 .section .text.LcdInit,"ax",@progbits 276 .type LcdInit, @function 277 LcdInit: 278 0000 0F93 push r16 279 0002 1F93 push r17 280 0004 CF93 push r28 281 0006 DF93 push r29 282 /* prologue: function */ 283 /* frame size = 0 */ 284 /* stack size = 4 */ 285 .L__stack_usage = 4 GAS LISTING /tmp/ccH4CVSw.s page 6 286 0008 FC01 movw r30,r24 287 000a 0485 ldd r16,Z+12 288 000c 1585 ldd r17,Z+13 289 000e 1093 0000 sts lcd_base+1,r17 290 0012 0093 0000 sts lcd_base,r16 291 0016 0E94 0000 call LcdBusyWait 292 001a C8E3 ldi r28,lo8(56) 293 001c F801 movw r30,r16 294 001e C083 st Z,r28 295 0020 82E3 ldi r24,lo8(50) 296 0022 0E94 0000 call NutDelay 297 0026 0E94 0000 call LcdBusyWait 298 002a E091 0000 lds r30,lcd_base 299 002e F091 0000 lds r31,lcd_base+1 300 0032 C083 st Z,r28 301 0034 82E3 ldi r24,lo8(50) 302 0036 0E94 0000 call NutDelay 303 003a 0E94 0000 call LcdBusyWait 304 003e E091 0000 lds r30,lcd_base 305 0042 F091 0000 lds r31,lcd_base+1 306 0046 C083 st Z,r28 307 0048 82E3 ldi r24,lo8(50) 308 004a 0E94 0000 call NutDelay 309 004e 0E94 0000 call LcdBusyWait 310 0052 C091 0000 lds r28,lcd_base 311 0056 D091 0000 lds r29,lcd_base+1 312 005a 81E0 ldi r24,lo8(1) 313 005c 8883 st Y,r24 314 005e 0E94 0000 call LcdBusyWait 315 0062 86E0 ldi r24,lo8(6) 316 0064 8883 st Y,r24 317 0066 0E94 0000 call LcdBusyWait 318 006a 8CE0 ldi r24,lo8(12) 319 006c 8883 st Y,r24 320 006e 0E94 0000 call LcdBusyWait 321 0072 82E0 ldi r24,lo8(2) 322 0074 8883 st Y,r24 323 0076 0E94 0000 call LcdBusyWait 324 007a 80E8 ldi r24,lo8(-128) 325 007c 8883 st Y,r24 326 007e 80E0 ldi r24,0 327 0080 90E0 ldi r25,0 328 /* epilogue start */ 329 0082 DF91 pop r29 330 0084 CF91 pop r28 331 0086 1F91 pop r17 332 0088 0F91 pop r16 333 008a 0895 ret 334 .size LcdInit, .-LcdInit 335 .global devLcdBus 336 .data 337 .type devLcdBus, @object 338 .size devLcdBus, 37 339 devLcdBus: 340 0000 0000 .word 0 341 0002 6C .byte 108 342 0003 63 .byte 99 GAS LISTING /tmp/ccH4CVSw.s page 7 343 0004 64 .byte 100 344 0005 62 .byte 98 345 0006 75 .byte 117 346 0007 73 .byte 115 347 0008 00 .byte 0 348 0009 00 .byte 0 349 000a 00 .byte 0 350 000b 02 .byte 2 351 000c 0000 .word 0 352 000e 00 .byte 0 353 000f 0000 .word 0 354 0011 0000 .word dcb_term 355 0013 0000 .word gs(TermInit) 356 0015 0000 .word gs(TermIOCtl) 357 0017 0000 .word 0 358 0019 0000 .word gs(TermWrite) 359 001b 0000 .word gs(TermWrite_P) 360 001d 0000 .word gs(TermOpen) 361 001f 0000 .word gs(TermClose) 362 0021 0000 .word 0 363 0023 0000 .word 0 364 .global dcb_term 365 .type dcb_term, @object 366 .size dcb_term, 32 367 dcb_term: 368 0025 0000 .word gs(LcdInit) 369 0027 0000 .word gs(LcdWriteData) 370 0029 0000 .word gs(LcdWriteCmd) 371 002b 0000 .word gs(LcdClear) 372 002d 0000 .word gs(LcdSetCursor) 373 002f 0000 .word gs(LcdCursorHome) 374 0031 0000 .word gs(LcdCursorLeft) 375 0033 0000 .word gs(LcdCursorRight) 376 0035 0000 .word gs(LcdCursorMode) 377 0037 00 .byte 0 378 0038 00 .byte 0 379 0039 00 .byte 0 380 003a 00 .byte 0 381 003b 00 .byte 0 382 003c 02 .byte 2 383 003d 10 .byte 16 384 003e 10 .byte 16 385 003f 00 .byte 0 386 0040 00 .byte 0 387 0041 0000 .word 0 388 0043 0000 .zero 2 389 .local lcd_base 390 .comm lcd_base,2,1 391 .ident "GCC: (GNU) 5.3.0" 392 .global __do_copy_data 393 .global __do_clear_bss GAS LISTING /tmp/ccH4CVSw.s page 8 DEFINED SYMBOLS *ABS*:0000000000000000 hd44780_bus.c /tmp/ccH4CVSw.s:2 *ABS*:000000000000003e __SP_H__ /tmp/ccH4CVSw.s:3 *ABS*:000000000000003d __SP_L__ /tmp/ccH4CVSw.s:4 *ABS*:000000000000003f __SREG__ /tmp/ccH4CVSw.s:5 *ABS*:000000000000003b __RAMPZ__ /tmp/ccH4CVSw.s:6 *ABS*:0000000000000000 __tmp_reg__ /tmp/ccH4CVSw.s:7 *ABS*:0000000000000001 __zero_reg__ /tmp/ccH4CVSw.s:10 .text.LcdBusyWait:0000000000000000 LcdBusyWait .bss:0000000000000000 lcd_base /tmp/ccH4CVSw.s:110 .text.LcdWriteData:0000000000000000 LcdWriteData /tmp/ccH4CVSw.s:134 .text.LcdWriteCmd:0000000000000000 LcdWriteCmd /tmp/ccH4CVSw.s:158 .text.LcdSetCursor:0000000000000000 LcdSetCursor /tmp/ccH4CVSw.s:207 .text.LcdCursorHome:0000000000000000 LcdCursorHome /tmp/ccH4CVSw.s:221 .text.LcdCursorLeft:0000000000000000 LcdCursorLeft /tmp/ccH4CVSw.s:235 .text.LcdCursorRight:0000000000000000 LcdCursorRight /tmp/ccH4CVSw.s:249 .text.LcdClear:0000000000000000 LcdClear /tmp/ccH4CVSw.s:263 .text.LcdCursorMode:0000000000000000 LcdCursorMode /tmp/ccH4CVSw.s:277 .text.LcdInit:0000000000000000 LcdInit /tmp/ccH4CVSw.s:339 .data:0000000000000000 devLcdBus /tmp/ccH4CVSw.s:367 .data:0000000000000025 dcb_term UNDEFINED SYMBOLS NutDelay TermInit TermIOCtl TermWrite TermWrite_P TermOpen TermClose __do_copy_data __do_clear_bss