ledtest.elf: file format elf32-littlearm Disassembly of section .text: 00100000 : .section .text .global _start .global timer b _start 100000: ea00000d b 10003c <_start> b undef_int 100004: ea00000b b 100038 b svc_int 100008: ea00000a b 100038 b fetch_int 10000c: ea000008 b 100034 b data_int 100010: ea000009 b 10003c <_start> nop 100014: e1a00000 nop (mov r0,r0) b irq_int 100018: ea000002 b 100028 0010001c : fiq_int: ldr sp, =_fiq_stack 10001c: e59fd068 ldr sp, [pc, #104] ; 10008c ldr r8, =0xfffff000 100020: e59f8068 ldr r8, [pc, #104] ; 100090 ldr pc, [r8, #0x104] 100024: e598f104 ldr pc, [r8, #260] 00100028 : irq_int: ldr sp, =_irq_stack 100028: e59fd064 ldr sp, [pc, #100] ; 100094 ldr r8, =0xfffff000 10002c: e59f805c ldr r8, [pc, #92] ; 100090 ldr pc, [r8, #0x100] 100030: e598f100 ldr pc, [r8, #256] 00100034 : fetch_int: subs pc, lr, #4 100034: e25ef004 subs pc, lr, #4 ; 0x4 00100038 : svc_int: undef_int: movs pc, lr 100038: e1b0f00e movs pc, lr 0010003c <_start>: data_int: _start: mov r0, #0 10003c: e3a00000 mov r0, #0 ; 0x0 ldr r1, =_bss_start 100040: e59f1050 ldr r1, [pc, #80] ; 100098 ldr r2, =_end 100044: e59f2050 ldr r2, [pc, #80] ; 10009c 00100048 : LC0: str r0, [r1], #4 100048: e4810004 str r0, [r1], #4 cmp r1, r2 10004c: e1510002 cmp r1, r2 blt LC0 100050: bafffffc blt 100048 mov r1, #0x100000 100054: e3a01601 mov r1, #1048576 ; 0x100000 mov r2, #0x000000 100058: e3a02000 mov r2, #0 ; 0x0 mov r3, #0x002000 10005c: e3a03a02 mov r3, #8192 ; 0x2000 00100060 : LC1: ldr r0, [r1], #4 100060: e4910004 ldr r0, [r1], #4 str r0, [r2], #4 100064: e4820004 str r0, [r2], #4 cmp r2, r3 100068: e1520003 cmp r2, r3 blt LC1 10006c: bafffffb blt 100060 mov r0, #0xdf 100070: e3a000df mov r0, #223 ; 0xdf msr cpsr_c, r0 100074: e121f000 msr CPSR_c, r0 ldr sp, =_stack 100078: e59fd020 ldr sp, [pc, #32] ; 1000a0 ldr sl, =_end 10007c: e59fa018 ldr sl, [pc, #24] ; 10009c add sl, sl, #0xff 100080: e28aa0ff add sl, sl, #255 ; 0xff bl main 100084: eb000057 bl 1001e8
b . 100088: eafffffe b 100088 10008c: 00000ffc streqd r0, [r0], -ip 100090: fffff000 swinv 0x00fff000 100094: 00001ffc streqd r1, [r0], -ip 100098: 001003b0 ldreqh r0, [r0], -r0 10009c: 001003b0 ldreqh r0, [r0], -r0 1000a0: 0011fffc ldreqsh pc, [r1], -ip 001000a4 : const char *CTRL_MESSAGE = "\n\rYour typed key is control code\n\r"; int sio_rxready() { return US0_CSR & US_RXRDY ? 1 : 0; 1000a4: e3a0320a mov r3, #-1610612736 ; 0xa0000000 1000a8: e1a036c3 mov r3, r3, asr #13 1000ac: e5930014 ldr r0, [r3, #20] } 1000b0: e2000001 and r0, r0, #1 ; 0x1 1000b4: e1a0f00e mov pc, lr 001000b8 : void sio_txchr(int c) { US0_THR = c; 1000b8: e3a0320a mov r3, #-1610612736 ; 0xa0000000 1000bc: e1a036c3 mov r3, r3, asr #13 1000c0: e583001c str r0, [r3, #28] 1000c4: e3a0220a mov r2, #-1610612736 ; 0xa0000000 1000c8: e1a026c2 mov r2, r2, asr #13 while(!(US0_CSR & US_TXRDY)); 1000cc: e5923014 ldr r3, [r2, #20] 1000d0: e3130002 tst r3, #2 ; 0x2 1000d4: 0afffffc beq 1000cc 1000d8: e3a0220a mov r2, #-1610612736 ; 0xa0000000 1000dc: e1a026c2 mov r2, r2, asr #13 while(!(US0_CSR & US_TXEMPTY)); 1000e0: e5923014 ldr r3, [r2, #20] 1000e4: e3130c02 tst r3, #512 ; 0x200 1000e8: 0afffffc beq 1000e0 } 1000ec: e1a0f00e mov pc, lr 001000f0 : void sio_txstr(char *str) { 1000f0: e1a0c00d mov ip, sp 1000f4: e92dd810 stmdb sp!, {r4, fp, ip, lr, pc} 1000f8: e24cb004 sub fp, ip, #4 ; 0x4 1000fc: e1a04000 mov r4, r0 while(*str) { sio_txchr(*str); str++; 100100: e5d03000 ldrb r3, [r0] 100104: e3530000 cmp r3, #0 ; 0x0 100108: 089da810 ldmeqia sp, {r4, fp, sp, pc} 10010c: e5d40000 ldrb r0, [r4] 100110: ebffffe8 bl 1000b8 100114: e5f43001 ldrb r3, [r4, #1]! 100118: e3530000 cmp r3, #0 ; 0x0 10011c: 1afffffa bne 10010c 100120: e89da810 ldmia sp, {r4, fp, sp, pc} 00100124 : } } void romwr() { 100124: e1a0c00d mov ip, sp 100128: e92dd8f0 stmdb sp!, {r4, r5, r6, r7, fp, ip, lr, pc} 10012c: e24cb004 sub fp, ip, #4 ; 0x4 unsigned short *dst; unsigned short *src; unsigned long addr; int i; src = 0x300000; 100130: e3a06603 mov r6, #3145728 ; 0x300000 dst = 0; 100134: e3a04000 mov r4, #0 ; 0x0 for(addr=0;addr<0x1000;addr++) 100138: e1a05004 mov r5, r4 10013c: e3a07c55 mov r7, #21760 ; 0x5500 { if((addr & 0x7f) == 0) 100140: e314007f tst r4, #127 ; 0x7f 100144: 1a000006 bne 100164 { dst = 0x5555; *dst = 0xaaaa; dst = 0x2aaa; *dst = 0x5555; 100148: e2872055 add r2, r7, #85 ; 0x55 10014c: e3a03daa mov r3, #10880 ; 0x2a80 100150: e1c322ba strh r2, [r3, #42] dst = 0x5555; *dst = 0xa0a0; 100154: e3e03c5f mvn r3, #24320 ; 0x5f00 100158: e243305f sub r3, r3, #95 ; 0x5f 10015c: e1c735b5 strh r3, [r7, #85] dst = (unsigned short *)addr; 100160: e1a05004 mov r5, r4 } *dst++ = *src++; 100164: e0d630b2 ldrh r3, [r6], #2 100168: e0c530b2 strh r3, [r5], #2 if((addr & 0x7f) == 0x7f) 10016c: e204307f and r3, r4, #127 ; 0x7f 100170: e353007f cmp r3, #127 ; 0x7f 100174: 1a000008 bne 10019c { for(i=0;i<100000;i++) ; 100178: e243307f sub r3, r3, #127 ; 0x7f 10017c: e3a02b61 mov r2, #99328 ; 0x18400 100180: e2822fa7 add r2, r2, #668 ; 0x29c 100184: e2822003 add r2, r2, #3 ; 0x3 100188: e2833001 add r3, r3, #1 ; 0x1 10018c: e1530002 cmp r3, r2 100190: dafffffc ble 100188 sio_txchr('*'); 100194: e3a0002a mov r0, #42 ; 0x2a 100198: ebffffc6 bl 1000b8 10019c: e2844001 add r4, r4, #1 ; 0x1 1001a0: e3540a01 cmp r4, #4096 ; 0x1000 1001a4: 3affffe5 bcc 100140 } } } 1001a8: e89da8f0 ldmia sp, {r4, r5, r6, r7, fp, sp, pc} 001001ac : void memclr() { unsigned short *dst; dst = 0x5555; 1001ac: e3a01c55 mov r1, #21760 ; 0x5500 1001b0: e2811055 add r1, r1, #85 ; 0x55 *dst = 0xaaaa; 1001b4: e3e03c55 mvn r3, #21760 ; 0x5500 1001b8: e2433055 sub r3, r3, #85 ; 0x55 1001bc: e1c130b0 strh r3, [r1] dst = 0x2aaa; 1001c0: e3a01daa mov r1, #10880 ; 0x2a80 1001c4: e281102a add r1, r1, #42 ; 0x2a *dst = 0x5555; 1001c8: e3a02c55 mov r2, #21760 ; 0x5500 1001cc: e2822055 add r2, r2, #85 ; 0x55 1001d0: e1c120b0 strh r2, [r1] dst = 0x5555; *dst = 0x8080; dst = 0x5555; *dst = 0xaaaa; dst = 0x2aaa; *dst = 0x5555; dst = 0x5555; *dst = 0x1010; 1001d4: e3a03a01 mov r3, #4096 ; 0x1000 1001d8: e2833010 add r3, r3, #16 ; 0x10 1001dc: e1c230b0 strh r3, [r2] } 1001e0: e1a0f00e mov pc, lr 001001e4 : void halt() { while(1); 1001e4: eafffffe b 1001e4 001001e8
: } int main() { 1001e8: e1a0c00d mov ip, sp 1001ec: e92dd8f0 stmdb sp!, {r4, r5, r6, r7, fp, ip, lr, pc} 1001f0: e24cb004 sub fp, ip, #4 ; 0x4 int i = 0; 1001f4: e3a05000 mov r5, #0 ; 0x0 int j = 0; 1001f8: e1a06005 mov r6, r5 char c; unsigned long *ptr; PIO_PER = P24 | P26; 1001fc: e3a03102 mov r3, #-2147483648 ; 0x80000000 100200: e1a037c3 mov r3, r3, asr #15 100204: e3a02405 mov r2, #83886080 ; 0x5000000 100208: e5832000 str r2, [r3] PIO_OER = P24 | P26; 10020c: e5832010 str r2, [r3, #16] PIO_PDR = PIOTXD0 + PIORXD0; 100210: e3a02903 mov r2, #49152 ; 0xc000 100214: e5832004 str r2, [r3, #4] US0_CR = US_RXDIS + US_TXDIS + US_RSTRX + US_RSTTX; 100218: e3a0320a mov r3, #-1610612736 ; 0xa0000000 10021c: e1a036c3 mov r3, r3, asr #13 100220: e3a020ac mov r2, #172 ; 0xac 100224: e5832000 str r2, [r3] US0_MR = US_ASYNC_MODE; 100228: e3a02d23 mov r2, #2240 ; 0x8c0 10022c: e5832004 str r2, [r3, #4] US0_BRGR = US_ASYNC_BAUD_RATE(33333333, 57600); 100230: e3a02024 mov r2, #36 ; 0x24 100234: e5832020 str r2, [r3, #32] US0_CR = US_RXEN + US_TXEN; 100238: e282202c add r2, r2, #44 ; 0x2c 10023c: e5832000 str r2, [r3] US0_RCR = 0; 100240: e5835034 str r5, [r3, #52] US0_TCR = 0; 100244: e583503c str r5, [r3, #60] sio_txstr(HELLOW_MESSAGE); 100248: e59f30e0 ldr r3, [pc, #224] ; 100330 10024c: e5930000 ldr r0, [r3] 100250: ebffffa6 bl 1000f0 100254: e3a07102 mov r7, #-2147483648 ; 0x80000000 100258: e1a077c7 mov r7, r7, asr #15 ptr = 0xffe00020; // *ptr = 1; // remap while(1) { if(sio_rxready()) 10025c: ebffff90 bl 1000a4 100260: e3500000 cmp r0, #0 ; 0x0 100264: 0a000017 beq 1002c8 { c = US0_RHR; 100268: e3a0320a mov r3, #-1610612736 ; 0xa0000000 10026c: e1a036c3 mov r3, r3, asr #13 100270: e5933018 ldr r3, [r3, #24] 100274: e20340ff and r4, r3, #255 ; 0xff if(c >= 0x20 && c < 0x7f) 100278: e2443020 sub r3, r4, #32 ; 0x20 10027c: e353005e cmp r3, #94 ; 0x5e 100280: 8a000007 bhi 1002a4 { sio_txstr(KEY_MESSAGE); 100284: e59f30a8 ldr r3, [pc, #168] ; 100334 100288: e5930000 ldr r0, [r3] 10028c: ebffff97 bl 1000f0 sio_txchr(c); 100290: e1a00004 mov r0, r4 100294: ebffff87 bl 1000b8 sio_txstr("'\n\r"); 100298: e59f0098 ldr r0, [pc, #152] ; 100338 10029c: ebffff93 bl 1000f0 1002a0: ea000002 b 1002b0 } else { sio_txstr(CTRL_MESSAGE); 1002a4: e59f3090 ldr r3, [pc, #144] ; 10033c 1002a8: e5930000 ldr r0, [r3] 1002ac: ebffff8f bl 1000f0 } if(c == 'w') 1002b0: e3540077 cmp r4, #119 ; 0x77 { romwr(); 1002b4: 0bffff9a bleq 100124 } if(c == 'e') 1002b8: e3540065 cmp r4, #101 ; 0x65 1002bc: 1a000001 bne 1002c8 { memclr(); 1002c0: ebffffb9 bl 1001ac halt(); 1002c4: ebffffc6 bl 1001e4 } } if(i == 100000) 1002c8: e3a03b61 mov r3, #99328 ; 0x18400 1002cc: e2833e2a add r3, r3, #672 ; 0x2a0 1002d0: e1550003 cmp r5, r3 { if(j & 0x01) PIO_SODR = P24; else PIO_CODR = P24; if(j & 0x02) PIO_SODR = P26; else PIO_CODR = P26; j++; sio_txchr('.'); i = 0; } else { i++; 1002d4: 12855001 addne r5, r5, #1 ; 0x1 1002d8: 1affffdf bne 10025c 1002dc: e3160001 tst r6, #1 ; 0x1 1002e0: 13a03401 movne r3, #16777216 ; 0x1000000 1002e4: 15873030 strne r3, [r7, #48] 1002e8: 03a03102 moveq r3, #-2147483648 ; 0x80000000 1002ec: 01a037c3 moveq r3, r3, asr #15 1002f0: 03a02401 moveq r2, #16777216 ; 0x1000000 1002f4: 05832034 streq r2, [r3, #52] 1002f8: e3160002 tst r6, #2 ; 0x2 1002fc: 13a03102 movne r3, #-2147483648 ; 0x80000000 100300: 11a037c3 movne r3, r3, asr #15 100304: 13a02301 movne r2, #67108864 ; 0x4000000 100308: 15832030 strne r2, [r3, #48] 10030c: 03a03102 moveq r3, #-2147483648 ; 0x80000000 100310: 01a037c3 moveq r3, r3, asr #15 100314: 03a02301 moveq r2, #67108864 ; 0x4000000 100318: 05832034 streq r2, [r3, #52] 10031c: e2866001 add r6, r6, #1 ; 0x1 100320: e3a0002e mov r0, #46 ; 0x2e 100324: ebffff63 bl 1000b8 100328: e3a05000 mov r5, #0 ; 0x0 10032c: eaffffca b 10025c 100330: 001003a4 andeqs r0, r0, r4, lsr #7 100334: 001003a8 andeqs r0, r0, r8, lsr #7 100338: 001003a0 andeqs r0, r0, r0, lsr #7 10033c: 001003ac andeqs r0, r0, ip, lsr #7 100340: 0d0a0d0a stceq 13, cr0, [sl, -#40] 100344: 6c6c6548 cfstr64vs mvdx6, [ip], -#288 100348: 7720776f strvc r7, [r0, -pc, ror #14]! 10034c: 646c726f strvsbt r7, [ip], -#623 100350: 0d0a2120 stfeqs f2, [sl, -#128] 100354: 6d612049 stcvsl 0, cr2, [r1, -#292]! 100358: 4d524120 ldfmie f4, [r2, -#128] 10035c: 0d0a2e37 stceq 14, cr2, [sl, -#220] 100360: 00000000 andeq r0, r0, r0 100364: 6f590d0a swivs 0x00590d0a 100368: 74207275 strvct r7, [r0], -#629 10036c: 64657079 strvsbt r7, [r5], -#121 100370: 79656b20 stmvcdb r5!, {r5, r8, r9, fp, sp, lr}^ 100374: 20736920 rsbcss r6, r3, r0, lsr #18 100378: 00273e3d eoreq r3, r7, sp, lsr lr 10037c: 6f590d0a swivs 0x00590d0a 100380: 74207275 strvct r7, [r0], -#629 100384: 64657079 strvsbt r7, [r5], -#121 100388: 79656b20 stmvcdb r5!, {r5, r8, r9, fp, sp, lr}^ 10038c: 20736920 rsbcss r6, r3, r0, lsr #18 100390: 746e6f63 strvcbt r6, [lr], -#3939 100394: 206c6f72 rsbcs r6, ip, r2, ror pc 100398: 65646f63 strvsb r6, [r4, -#3939]! 10039c: 00000d0a andeq r0, r0, sl, lsl #26 1003a0: 000d0a27 andeq r0, sp, r7, lsr #20 Disassembly of section .glue_7: Disassembly of section .glue_7t: