Mercurial > hg > Members > tobaru > xv6-osx-rpi
view src/usr/cat.asm @ 0:53676d1f5817 default tip
firsh commit
author | tobaru |
---|---|
date | Sun, 04 Feb 2018 17:54:49 +0900 |
parents | |
children |
line wrap: on
line source
_cat: file format elf32-littlearm Disassembly of section .text: 00000000 <cat>: char buf[512]; void cat(int fd) { 0: e92d4800 push {fp, lr} 4: e1a0b00d mov fp, sp 8: e24dd018 sub sp, sp, #24 c: e1a01000 mov r1, r0 10: e50b0004 str r0, [fp, #-4] 14: e58d100c str r1, [sp, #12] 18: eaffffff b 1c <cat+0x1c> 1c: e51b0004 ldr r0, [fp, #-4] 20: e59f1058 ldr r1, [pc, #88] ; 80 <cat+0x80> 24: e3a02c02 mov r2, #512 ; 0x200 28: eb0001e3 bl 7bc <read> 2c: e50b0008 str r0, [fp, #-8] 30: e3500001 cmp r0, #1 34: ba000006 blt 54 <cat+0x54> 38: eaffffff b 3c <cat+0x3c> 3c: e51b2008 ldr r2, [fp, #-8] 40: e59f1038 ldr r1, [pc, #56] ; 80 <cat+0x80> 44: e3a00001 mov r0, #1 48: eb0001e4 bl 7e0 <write> 4c: e58d0008 str r0, [sp, #8] 50: eafffff1 b 1c <cat+0x1c> 54: e51b0008 ldr r0, [fp, #-8] 58: e3500000 cmp r0, #0 5c: aa000005 bge 78 <cat+0x78> 60: eaffffff b 64 <cat+0x64> 64: e59f1018 ldr r1, [pc, #24] ; 84 <cat+0x84> 68: e3a00001 mov r0, #1 6c: eb00026b bl a20 <printf> 70: eb0001b6 bl 750 <exit> 74: e58d0004 str r0, [sp, #4] 78: e1a0d00b mov sp, fp 7c: e8bd8800 pop {fp, pc} 80: 00001340 .word 0x00001340 84: 000012e8 .word 0x000012e8 00000088 <main>: } } int main(int argc, char *argv[]) { 88: e92d4800 push {fp, lr} 8c: e1a0b00d mov fp, sp 90: e24dd030 sub sp, sp, #48 ; 0x30 94: e1a02001 mov r2, r1 98: e1a03000 mov r3, r0 9c: e3a0c000 mov ip, #0 a0: e50bc004 str ip, [fp, #-4] a4: e50b0008 str r0, [fp, #-8] a8: e50b100c str r1, [fp, #-12] int fd, i; if(argc <= 1){ ac: e51b0008 ldr r0, [fp, #-8] b0: e3500001 cmp r0, #1 b4: e58d2018 str r2, [sp, #24] b8: e58d3014 str r3, [sp, #20] bc: ca000004 bgt d4 <main+0x4c> c0: eaffffff b c4 <main+0x3c> cat(0); c4: e3a00000 mov r0, #0 c8: ebffffcc bl 0 <cat> exit(); cc: eb00019f bl 750 <exit> d0: e58d0010 str r0, [sp, #16] } for(i = 1; i < argc; i++){ d4: e3a00001 mov r0, #1 d8: e50b0014 str r0, [fp, #-20] ; 0xffffffec dc: eaffffff b e0 <main+0x58> e0: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec e4: e51b1008 ldr r1, [fp, #-8] e8: e1500001 cmp r0, r1 ec: aa00001b bge 160 <main+0xd8> f0: eaffffff b f4 <main+0x6c> if((fd = open(argv[i], 0)) < 0){ f4: e51b000c ldr r0, [fp, #-12] f8: e51b1014 ldr r1, [fp, #-20] ; 0xffffffec fc: e7900101 ldr r0, [r0, r1, lsl #2] 100: e3a01000 mov r1, #0 104: eb0001d9 bl 870 <open> 108: e50b0010 str r0, [fp, #-16] 10c: e3500000 cmp r0, #0 110: aa000008 bge 138 <main+0xb0> 114: eaffffff b 118 <main+0x90> printf(1, "cat: cannot open %s\n", argv[i]); 118: e51b000c ldr r0, [fp, #-12] 11c: e51b1014 ldr r1, [fp, #-20] ; 0xffffffec 120: e7902101 ldr r2, [r0, r1, lsl #2] 124: e59f103c ldr r1, [pc, #60] ; 168 <main+0xe0> 128: e3a00001 mov r0, #1 12c: eb00023b bl a20 <printf> exit(); 130: eb000186 bl 750 <exit> 134: e58d000c str r0, [sp, #12] } cat(fd); 138: e51b0010 ldr r0, [fp, #-16] 13c: ebffffaf bl 0 <cat> close(fd); 140: e51b0010 ldr r0, [fp, #-16] 144: eb0001ae bl 804 <close> } 148: e58d0008 str r0, [sp, #8] 14c: eaffffff b 150 <main+0xc8> for(i = 1; i < argc; i++){ 150: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec 154: e2800001 add r0, r0, #1 158: e50b0014 str r0, [fp, #-20] ; 0xffffffec 15c: eaffffdf b e0 <main+0x58> exit(); 160: eb00017a bl 750 <exit> 164: e58d0004 str r0, [sp, #4] 168: 000012f9 .word 0x000012f9 0000016c <strcpy>: #include "fcntl.h" #include "user.h" char* strcpy(char *s, char *t) { 16c: e24dd014 sub sp, sp, #20 170: e1a02001 mov r2, r1 174: e1a03000 mov r3, r0 178: e58d0010 str r0, [sp, #16] 17c: e58d100c str r1, [sp, #12] 180: e59d0010 ldr r0, [sp, #16] 184: e58d0008 str r0, [sp, #8] 188: e58d2004 str r2, [sp, #4] 18c: e58d3000 str r3, [sp] 190: eaffffff b 194 <strcpy+0x28> 194: e59d000c ldr r0, [sp, #12] 198: e2801001 add r1, r0, #1 19c: e58d100c str r1, [sp, #12] 1a0: e5d00000 ldrb r0, [r0] 1a4: e59d1010 ldr r1, [sp, #16] 1a8: e2812001 add r2, r1, #1 1ac: e58d2010 str r2, [sp, #16] 1b0: e5c10000 strb r0, [r1] 1b4: e3500000 cmp r0, #0 1b8: 0a000001 beq 1c4 <strcpy+0x58> 1bc: eaffffff b 1c0 <strcpy+0x54> 1c0: eafffff3 b 194 <strcpy+0x28> 1c4: e59d0008 ldr r0, [sp, #8] 1c8: e28dd014 add sp, sp, #20 1cc: e12fff1e bx lr 000001d0 <strcmp>: 1d0: e24dd014 sub sp, sp, #20 1d4: e1a02001 mov r2, r1 1d8: e1a03000 mov r3, r0 1dc: e58d0010 str r0, [sp, #16] 1e0: e58d100c str r1, [sp, #12] 1e4: e58d2008 str r2, [sp, #8] 1e8: e58d3004 str r3, [sp, #4] 1ec: eaffffff b 1f0 <strcmp+0x20> 1f0: e59d0010 ldr r0, [sp, #16] 1f4: e5d00000 ldrb r0, [r0] 1f8: e3a01000 mov r1, #0 1fc: e3500000 cmp r0, #0 200: e58d1000 str r1, [sp] 204: 0a000009 beq 230 <strcmp+0x60> 208: eaffffff b 20c <strcmp+0x3c> 20c: e59d0010 ldr r0, [sp, #16] 210: e5d00000 ldrb r0, [r0] 214: e59d100c ldr r1, [sp, #12] 218: e5d11000 ldrb r1, [r1] 21c: e3a02000 mov r2, #0 220: e1500001 cmp r0, r1 224: 03a02001 moveq r2, #1 228: e58d2000 str r2, [sp] 22c: eaffffff b 230 <strcmp+0x60> 230: e59d0000 ldr r0, [sp] 234: e3100001 tst r0, #1 238: 0a000007 beq 25c <strcmp+0x8c> 23c: eaffffff b 240 <strcmp+0x70> 240: e59d0010 ldr r0, [sp, #16] 244: e2800001 add r0, r0, #1 248: e58d0010 str r0, [sp, #16] 24c: e59d000c ldr r0, [sp, #12] 250: e2800001 add r0, r0, #1 254: e58d000c str r0, [sp, #12] 258: eaffffe4 b 1f0 <strcmp+0x20> 25c: e59d0010 ldr r0, [sp, #16] 260: e5d00000 ldrb r0, [r0] 264: e59d100c ldr r1, [sp, #12] 268: e5d11000 ldrb r1, [r1] 26c: e0400001 sub r0, r0, r1 270: e28dd014 add sp, sp, #20 274: e12fff1e bx lr 00000278 <strlen>: 278: e24dd00c sub sp, sp, #12 27c: e1a01000 mov r1, r0 280: e58d0008 str r0, [sp, #8] 284: e3a00000 mov r0, #0 288: e58d0004 str r0, [sp, #4] 28c: e58d1000 str r1, [sp] 290: eaffffff b 294 <strlen+0x1c> 294: e59d0008 ldr r0, [sp, #8] 298: e59d1004 ldr r1, [sp, #4] 29c: e7d00001 ldrb r0, [r0, r1] 2a0: e3500000 cmp r0, #0 2a4: 0a000005 beq 2c0 <strlen+0x48> 2a8: eaffffff b 2ac <strlen+0x34> 2ac: eaffffff b 2b0 <strlen+0x38> 2b0: e59d0004 ldr r0, [sp, #4] 2b4: e2800001 add r0, r0, #1 2b8: e58d0004 str r0, [sp, #4] 2bc: eafffff4 b 294 <strlen+0x1c> 2c0: e59d0004 ldr r0, [sp, #4] 2c4: e28dd00c add sp, sp, #12 2c8: e12fff1e bx lr 000002cc <memset>: 2cc: e92d4800 push {fp, lr} 2d0: e1a0b00d mov fp, sp 2d4: e24dd02c sub sp, sp, #44 ; 0x2c 2d8: e1a03002 mov r3, r2 2dc: e1a0c001 mov ip, r1 2e0: e1a0e000 mov lr, r0 2e4: e50b0004 str r0, [fp, #-4] 2e8: e50b1008 str r1, [fp, #-8] 2ec: e50b200c str r2, [fp, #-12] 2f0: e51b0004 ldr r0, [fp, #-4] 2f4: e50b0010 str r0, [fp, #-16] 2f8: e51b0008 ldr r0, [fp, #-8] 2fc: e54b0011 strb r0, [fp, #-17] ; 0xffffffef 300: e55b0011 ldrb r0, [fp, #-17] ; 0xffffffef 304: e1a01c00 lsl r1, r0, #24 308: e1811800 orr r1, r1, r0, lsl #16 30c: e1811400 orr r1, r1, r0, lsl #8 310: e1810000 orr r0, r1, r0 314: e58d0014 str r0, [sp, #20] 318: e58d300c str r3, [sp, #12] 31c: e58dc008 str ip, [sp, #8] 320: e58de004 str lr, [sp, #4] 324: eaffffff b 328 <memset+0x5c> 328: e51b000c ldr r0, [fp, #-12] 32c: e3a01000 mov r1, #0 330: e3500000 cmp r0, #0 334: e58d1000 str r1, [sp] 338: 0a000006 beq 358 <memset+0x8c> 33c: eaffffff b 340 <memset+0x74> 340: e55b0010 ldrb r0, [fp, #-16] 344: e2000003 and r0, r0, #3 348: e3500000 cmp r0, #0 34c: 13a00001 movne r0, #1 350: e58d0000 str r0, [sp] 354: eaffffff b 358 <memset+0x8c> 358: e59d0000 ldr r0, [sp] 35c: e3100001 tst r0, #1 360: 0a00000b beq 394 <memset+0xc8> 364: eaffffff b 368 <memset+0x9c> 368: e55b0011 ldrb r0, [fp, #-17] ; 0xffffffef 36c: e51b1010 ldr r1, [fp, #-16] 370: e5c10000 strb r0, [r1] 374: eaffffff b 378 <memset+0xac> 378: e51b000c ldr r0, [fp, #-12] 37c: e2400001 sub r0, r0, #1 380: e50b000c str r0, [fp, #-12] 384: e51b0010 ldr r0, [fp, #-16] 388: e2800001 add r0, r0, #1 38c: e50b0010 str r0, [fp, #-16] 390: eaffffe4 b 328 <memset+0x5c> 394: e51b0010 ldr r0, [fp, #-16] 398: e58d0010 str r0, [sp, #16] 39c: eaffffff b 3a0 <memset+0xd4> 3a0: e51b000c ldr r0, [fp, #-12] 3a4: e3500004 cmp r0, #4 3a8: 3a00000b bcc 3dc <memset+0x110> 3ac: eaffffff b 3b0 <memset+0xe4> 3b0: e59d0014 ldr r0, [sp, #20] 3b4: e59d1010 ldr r1, [sp, #16] 3b8: e5810000 str r0, [r1] 3bc: eaffffff b 3c0 <memset+0xf4> 3c0: e51b000c ldr r0, [fp, #-12] 3c4: e2400004 sub r0, r0, #4 3c8: e50b000c str r0, [fp, #-12] 3cc: e59d0010 ldr r0, [sp, #16] 3d0: e2800004 add r0, r0, #4 3d4: e58d0010 str r0, [sp, #16] 3d8: eafffff0 b 3a0 <memset+0xd4> 3dc: e59d0010 ldr r0, [sp, #16] 3e0: e50b0010 str r0, [fp, #-16] 3e4: eaffffff b 3e8 <memset+0x11c> 3e8: e51b000c ldr r0, [fp, #-12] 3ec: e3500000 cmp r0, #0 3f0: 0a00000b beq 424 <memset+0x158> 3f4: eaffffff b 3f8 <memset+0x12c> 3f8: e55b0011 ldrb r0, [fp, #-17] ; 0xffffffef 3fc: e51b1010 ldr r1, [fp, #-16] 400: e5c10000 strb r0, [r1] 404: eaffffff b 408 <memset+0x13c> 408: e51b000c ldr r0, [fp, #-12] 40c: e2400001 sub r0, r0, #1 410: e50b000c str r0, [fp, #-12] 414: e51b0010 ldr r0, [fp, #-16] 418: e2800001 add r0, r0, #1 41c: e50b0010 str r0, [fp, #-16] 420: eafffff0 b 3e8 <memset+0x11c> 424: e51b0004 ldr r0, [fp, #-4] 428: e1a0d00b mov sp, fp 42c: e8bd8800 pop {fp, pc} 00000430 <strchr>: 430: e24dd014 sub sp, sp, #20 434: e1a02001 mov r2, r1 438: e1a03000 mov r3, r0 43c: e58d000c str r0, [sp, #12] 440: e5cd100b strb r1, [sp, #11] 444: e58d2004 str r2, [sp, #4] 448: e58d3000 str r3, [sp] 44c: eaffffff b 450 <strchr+0x20> 450: e59d000c ldr r0, [sp, #12] 454: e5d00000 ldrb r0, [r0] 458: e3500000 cmp r0, #0 45c: 0a00000e beq 49c <strchr+0x6c> 460: eaffffff b 464 <strchr+0x34> 464: e59d000c ldr r0, [sp, #12] 468: e5d00000 ldrb r0, [r0] 46c: e5dd100b ldrb r1, [sp, #11] 470: e1500001 cmp r0, r1 474: 1a000003 bne 488 <strchr+0x58> 478: eaffffff b 47c <strchr+0x4c> 47c: e59d000c ldr r0, [sp, #12] 480: e58d0010 str r0, [sp, #16] 484: ea000007 b 4a8 <strchr+0x78> 488: eaffffff b 48c <strchr+0x5c> 48c: e59d000c ldr r0, [sp, #12] 490: e2800001 add r0, r0, #1 494: e58d000c str r0, [sp, #12] 498: eaffffec b 450 <strchr+0x20> 49c: e3a00000 mov r0, #0 4a0: e58d0010 str r0, [sp, #16] 4a4: eaffffff b 4a8 <strchr+0x78> 4a8: e59d0010 ldr r0, [sp, #16] 4ac: e28dd014 add sp, sp, #20 4b0: e12fff1e bx lr 000004b4 <gets>: 4b4: e92d4800 push {fp, lr} 4b8: e1a0b00d mov fp, sp 4bc: e24dd020 sub sp, sp, #32 4c0: e1a02001 mov r2, r1 4c4: e1a03000 mov r3, r0 4c8: e50b0004 str r0, [fp, #-4] 4cc: e50b1008 str r1, [fp, #-8] 4d0: e3a00000 mov r0, #0 4d4: e50b000c str r0, [fp, #-12] 4d8: e58d2008 str r2, [sp, #8] 4dc: e58d3004 str r3, [sp, #4] 4e0: eaffffff b 4e4 <gets+0x30> 4e4: e51b000c ldr r0, [fp, #-12] 4e8: e2800001 add r0, r0, #1 4ec: e51b1008 ldr r1, [fp, #-8] 4f0: e1500001 cmp r0, r1 4f4: aa00001a bge 564 <gets+0xb0> 4f8: eaffffff b 4fc <gets+0x48> 4fc: e3a00000 mov r0, #0 500: e28d100f add r1, sp, #15 504: e3a02001 mov r2, #1 508: eb0000ab bl 7bc <read> 50c: e58d0010 str r0, [sp, #16] 510: e59d0010 ldr r0, [sp, #16] 514: e3500000 cmp r0, #0 518: ca000001 bgt 524 <gets+0x70> 51c: eaffffff b 520 <gets+0x6c> 520: ea00000f b 564 <gets+0xb0> 524: e5dd000f ldrb r0, [sp, #15] 528: e51b1004 ldr r1, [fp, #-4] 52c: e51b200c ldr r2, [fp, #-12] 530: e2823001 add r3, r2, #1 534: e50b300c str r3, [fp, #-12] 538: e7c10002 strb r0, [r1, r2] 53c: e5dd000f ldrb r0, [sp, #15] 540: e350000a cmp r0, #10 544: 0a000004 beq 55c <gets+0xa8> 548: eaffffff b 54c <gets+0x98> 54c: e5dd000f ldrb r0, [sp, #15] 550: e350000d cmp r0, #13 554: 1a000001 bne 560 <gets+0xac> 558: eaffffff b 55c <gets+0xa8> 55c: ea000000 b 564 <gets+0xb0> 560: eaffffdf b 4e4 <gets+0x30> 564: e51b0004 ldr r0, [fp, #-4] 568: e51b100c ldr r1, [fp, #-12] 56c: e3a02000 mov r2, #0 570: e7c02001 strb r2, [r0, r1] 574: e51b0004 ldr r0, [fp, #-4] 578: e1a0d00b mov sp, fp 57c: e8bd8800 pop {fp, pc} 00000580 <stat>: 580: e92d4800 push {fp, lr} 584: e1a0b00d mov fp, sp 588: e24dd020 sub sp, sp, #32 58c: e1a02001 mov r2, r1 590: e1a03000 mov r3, r0 594: e50b0008 str r0, [fp, #-8] 598: e50b100c str r1, [fp, #-12] 59c: e51b0008 ldr r0, [fp, #-8] 5a0: e3a01000 mov r1, #0 5a4: e58d2008 str r2, [sp, #8] 5a8: e58d3004 str r3, [sp, #4] 5ac: eb0000af bl 870 <open> 5b0: e58d0010 str r0, [sp, #16] 5b4: e59d0010 ldr r0, [sp, #16] 5b8: e3500000 cmp r0, #0 5bc: aa000003 bge 5d0 <stat+0x50> 5c0: eaffffff b 5c4 <stat+0x44> 5c4: e3e00000 mvn r0, #0 5c8: e50b0004 str r0, [fp, #-4] 5cc: ea000009 b 5f8 <stat+0x78> 5d0: e59d0010 ldr r0, [sp, #16] 5d4: e51b100c ldr r1, [fp, #-12] 5d8: eb0000bf bl 8dc <fstat> 5dc: e58d000c str r0, [sp, #12] 5e0: e59d0010 ldr r0, [sp, #16] 5e4: eb000086 bl 804 <close> 5e8: e59d100c ldr r1, [sp, #12] 5ec: e50b1004 str r1, [fp, #-4] 5f0: e58d0000 str r0, [sp] 5f4: eaffffff b 5f8 <stat+0x78> 5f8: e51b0004 ldr r0, [fp, #-4] 5fc: e1a0d00b mov sp, fp 600: e8bd8800 pop {fp, pc} 00000604 <atoi>: 604: e24dd010 sub sp, sp, #16 608: e1a01000 mov r1, r0 60c: e58d000c str r0, [sp, #12] 610: e3a00000 mov r0, #0 614: e58d0008 str r0, [sp, #8] 618: e58d1004 str r1, [sp, #4] 61c: eaffffff b 620 <atoi+0x1c> 620: e59d000c ldr r0, [sp, #12] 624: e5d00000 ldrb r0, [r0] 628: e3a01000 mov r1, #0 62c: e3500030 cmp r0, #48 ; 0x30 630: e58d1000 str r1, [sp] 634: ba000007 blt 658 <atoi+0x54> 638: eaffffff b 63c <atoi+0x38> 63c: e59d000c ldr r0, [sp, #12] 640: e5d00000 ldrb r0, [r0] 644: e3a01000 mov r1, #0 648: e350003a cmp r0, #58 ; 0x3a 64c: b3a01001 movlt r1, #1 650: e58d1000 str r1, [sp] 654: eaffffff b 658 <atoi+0x54> 658: e59d0000 ldr r0, [sp] 65c: e3100001 tst r0, #1 660: 0a00000a beq 690 <atoi+0x8c> 664: eaffffff b 668 <atoi+0x64> 668: e59d0008 ldr r0, [sp, #8] 66c: e0800100 add r0, r0, r0, lsl #2 670: e59d100c ldr r1, [sp, #12] 674: e2812001 add r2, r1, #1 678: e58d200c str r2, [sp, #12] 67c: e5d11000 ldrb r1, [r1] 680: e0810080 add r0, r1, r0, lsl #1 684: e2400030 sub r0, r0, #48 ; 0x30 688: e58d0008 str r0, [sp, #8] 68c: eaffffe3 b 620 <atoi+0x1c> 690: e59d0008 ldr r0, [sp, #8] 694: e28dd010 add sp, sp, #16 698: e12fff1e bx lr 0000069c <memmove>: 69c: e92d4800 push {fp, lr} 6a0: e1a0b00d mov fp, sp 6a4: e24dd020 sub sp, sp, #32 6a8: e1a03002 mov r3, r2 6ac: e1a0c001 mov ip, r1 6b0: e1a0e000 mov lr, r0 6b4: e50b0004 str r0, [fp, #-4] 6b8: e50b1008 str r1, [fp, #-8] 6bc: e50b200c str r2, [fp, #-12] 6c0: e51b0004 ldr r0, [fp, #-4] 6c4: e58d0010 str r0, [sp, #16] 6c8: e51b0008 ldr r0, [fp, #-8] 6cc: e58d000c str r0, [sp, #12] 6d0: e58d3008 str r3, [sp, #8] 6d4: e58dc004 str ip, [sp, #4] 6d8: e58de000 str lr, [sp] 6dc: eaffffff b 6e0 <memmove+0x44> 6e0: e51b000c ldr r0, [fp, #-12] 6e4: e2401001 sub r1, r0, #1 6e8: e50b100c str r1, [fp, #-12] 6ec: e3500001 cmp r0, #1 6f0: ba000009 blt 71c <memmove+0x80> 6f4: eaffffff b 6f8 <memmove+0x5c> 6f8: e59d000c ldr r0, [sp, #12] 6fc: e2801001 add r1, r0, #1 700: e58d100c str r1, [sp, #12] 704: e5d00000 ldrb r0, [r0] 708: e59d1010 ldr r1, [sp, #16] 70c: e2812001 add r2, r1, #1 710: e58d2010 str r2, [sp, #16] 714: e5c10000 strb r0, [r1] 718: eafffff0 b 6e0 <memmove+0x44> 71c: e51b0004 ldr r0, [fp, #-4] 720: e1a0d00b mov sp, fp 724: e8bd8800 pop {fp, pc} 00000728 <raise>: return vdst; } void raise() {} 728: e12fff1e bx lr 0000072c <fork>: 72c: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 730: e1a04003 mov r4, r3 734: e1a03002 mov r3, r2 738: e1a02001 mov r2, r1 73c: e1a01000 mov r1, r0 740: e3a00001 mov r0, #1 744: ef000000 svc 0x00000000 748: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 74c: e12fff1e bx lr 00000750 <exit>: 750: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 754: e1a04003 mov r4, r3 758: e1a03002 mov r3, r2 75c: e1a02001 mov r2, r1 760: e1a01000 mov r1, r0 764: e3a00002 mov r0, #2 768: ef000000 svc 0x00000000 76c: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 770: e12fff1e bx lr 00000774 <wait>: 774: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 778: e1a04003 mov r4, r3 77c: e1a03002 mov r3, r2 780: e1a02001 mov r2, r1 784: e1a01000 mov r1, r0 788: e3a00003 mov r0, #3 78c: ef000000 svc 0x00000000 790: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 794: e12fff1e bx lr 00000798 <pipe>: 798: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 79c: e1a04003 mov r4, r3 7a0: e1a03002 mov r3, r2 7a4: e1a02001 mov r2, r1 7a8: e1a01000 mov r1, r0 7ac: e3a00004 mov r0, #4 7b0: ef000000 svc 0x00000000 7b4: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 7b8: e12fff1e bx lr 000007bc <read>: 7bc: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 7c0: e1a04003 mov r4, r3 7c4: e1a03002 mov r3, r2 7c8: e1a02001 mov r2, r1 7cc: e1a01000 mov r1, r0 7d0: e3a00005 mov r0, #5 7d4: ef000000 svc 0x00000000 7d8: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 7dc: e12fff1e bx lr 000007e0 <write>: 7e0: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 7e4: e1a04003 mov r4, r3 7e8: e1a03002 mov r3, r2 7ec: e1a02001 mov r2, r1 7f0: e1a01000 mov r1, r0 7f4: e3a00010 mov r0, #16 7f8: ef000000 svc 0x00000000 7fc: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 800: e12fff1e bx lr 00000804 <close>: 804: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 808: e1a04003 mov r4, r3 80c: e1a03002 mov r3, r2 810: e1a02001 mov r2, r1 814: e1a01000 mov r1, r0 818: e3a00015 mov r0, #21 81c: ef000000 svc 0x00000000 820: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 824: e12fff1e bx lr 00000828 <kill>: 828: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 82c: e1a04003 mov r4, r3 830: e1a03002 mov r3, r2 834: e1a02001 mov r2, r1 838: e1a01000 mov r1, r0 83c: e3a00006 mov r0, #6 840: ef000000 svc 0x00000000 844: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 848: e12fff1e bx lr 0000084c <exec>: 84c: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 850: e1a04003 mov r4, r3 854: e1a03002 mov r3, r2 858: e1a02001 mov r2, r1 85c: e1a01000 mov r1, r0 860: e3a00007 mov r0, #7 864: ef000000 svc 0x00000000 868: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 86c: e12fff1e bx lr 00000870 <open>: 870: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 874: e1a04003 mov r4, r3 878: e1a03002 mov r3, r2 87c: e1a02001 mov r2, r1 880: e1a01000 mov r1, r0 884: e3a0000f mov r0, #15 888: ef000000 svc 0x00000000 88c: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 890: e12fff1e bx lr 00000894 <mknod>: 894: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 898: e1a04003 mov r4, r3 89c: e1a03002 mov r3, r2 8a0: e1a02001 mov r2, r1 8a4: e1a01000 mov r1, r0 8a8: e3a00011 mov r0, #17 8ac: ef000000 svc 0x00000000 8b0: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 8b4: e12fff1e bx lr 000008b8 <unlink>: 8b8: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 8bc: e1a04003 mov r4, r3 8c0: e1a03002 mov r3, r2 8c4: e1a02001 mov r2, r1 8c8: e1a01000 mov r1, r0 8cc: e3a00012 mov r0, #18 8d0: ef000000 svc 0x00000000 8d4: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 8d8: e12fff1e bx lr 000008dc <fstat>: 8dc: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 8e0: e1a04003 mov r4, r3 8e4: e1a03002 mov r3, r2 8e8: e1a02001 mov r2, r1 8ec: e1a01000 mov r1, r0 8f0: e3a00008 mov r0, #8 8f4: ef000000 svc 0x00000000 8f8: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 8fc: e12fff1e bx lr 00000900 <link>: 900: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 904: e1a04003 mov r4, r3 908: e1a03002 mov r3, r2 90c: e1a02001 mov r2, r1 910: e1a01000 mov r1, r0 914: e3a00013 mov r0, #19 918: ef000000 svc 0x00000000 91c: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 920: e12fff1e bx lr 00000924 <mkdir>: 924: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 928: e1a04003 mov r4, r3 92c: e1a03002 mov r3, r2 930: e1a02001 mov r2, r1 934: e1a01000 mov r1, r0 938: e3a00014 mov r0, #20 93c: ef000000 svc 0x00000000 940: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 944: e12fff1e bx lr 00000948 <chdir>: 948: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 94c: e1a04003 mov r4, r3 950: e1a03002 mov r3, r2 954: e1a02001 mov r2, r1 958: e1a01000 mov r1, r0 95c: e3a00009 mov r0, #9 960: ef000000 svc 0x00000000 964: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 968: e12fff1e bx lr 0000096c <dup>: 96c: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 970: e1a04003 mov r4, r3 974: e1a03002 mov r3, r2 978: e1a02001 mov r2, r1 97c: e1a01000 mov r1, r0 980: e3a0000a mov r0, #10 984: ef000000 svc 0x00000000 988: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 98c: e12fff1e bx lr 00000990 <getpid>: 990: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 994: e1a04003 mov r4, r3 998: e1a03002 mov r3, r2 99c: e1a02001 mov r2, r1 9a0: e1a01000 mov r1, r0 9a4: e3a0000b mov r0, #11 9a8: ef000000 svc 0x00000000 9ac: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 9b0: e12fff1e bx lr 000009b4 <sbrk>: 9b4: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 9b8: e1a04003 mov r4, r3 9bc: e1a03002 mov r3, r2 9c0: e1a02001 mov r2, r1 9c4: e1a01000 mov r1, r0 9c8: e3a0000c mov r0, #12 9cc: ef000000 svc 0x00000000 9d0: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 9d4: e12fff1e bx lr 000009d8 <sleep>: 9d8: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 9dc: e1a04003 mov r4, r3 9e0: e1a03002 mov r3, r2 9e4: e1a02001 mov r2, r1 9e8: e1a01000 mov r1, r0 9ec: e3a0000d mov r0, #13 9f0: ef000000 svc 0x00000000 9f4: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 9f8: e12fff1e bx lr 000009fc <uptime>: 9fc: e52d4004 push {r4} ; (str r4, [sp, #-4]!) a00: e1a04003 mov r4, r3 a04: e1a03002 mov r3, r2 a08: e1a02001 mov r2, r1 a0c: e1a01000 mov r1, r0 a10: e3a0000e mov r0, #14 a14: ef000000 svc 0x00000000 a18: e49d4004 pop {r4} ; (ldr r4, [sp], #4) a1c: e12fff1e bx lr 00000a20 <printf>: } // Print to the given fd. Only understands %d, %x, %p, %s. void printf(int fd, char *fmt, ...) { a20: e92d4800 push {fp, lr} a24: e1a0b00d mov fp, sp a28: e24dd028 sub sp, sp, #40 ; 0x28 a2c: e1a02001 mov r2, r1 a30: e1a03000 mov r3, r0 a34: e50b0004 str r0, [fp, #-4] a38: e50b1008 str r1, [fp, #-8] a3c: e3a00000 mov r0, #0 a40: e58d0010 str r0, [sp, #16] a44: e24b1008 sub r1, fp, #8 a48: e2811004 add r1, r1, #4 a4c: e58d100c str r1, [sp, #12] a50: e58d0014 str r0, [sp, #20] a54: e58d2008 str r2, [sp, #8] a58: e58d3004 str r3, [sp, #4] a5c: eaffffff b a60 <printf+0x40> a60: e51b0008 ldr r0, [fp, #-8] a64: e59d1014 ldr r1, [sp, #20] a68: e7d00001 ldrb r0, [r0, r1] a6c: e3500000 cmp r0, #0 a70: 0a00007e beq c70 <printf+0x250> a74: eaffffff b a78 <printf+0x58> a78: e51b0008 ldr r0, [fp, #-8] a7c: e59d1014 ldr r1, [sp, #20] a80: e7d00001 ldrb r0, [r0, r1] a84: e50b0010 str r0, [fp, #-16] a88: e59d0010 ldr r0, [sp, #16] a8c: e3500000 cmp r0, #0 a90: 1a00000c bne ac8 <printf+0xa8> a94: eaffffff b a98 <printf+0x78> a98: e51b0010 ldr r0, [fp, #-16] a9c: e3500025 cmp r0, #37 ; 0x25 aa0: 1a000003 bne ab4 <printf+0x94> aa4: eaffffff b aa8 <printf+0x88> aa8: e3a00025 mov r0, #37 ; 0x25 aac: e58d0010 str r0, [sp, #16] ab0: ea000003 b ac4 <printf+0xa4> ab4: e51b0004 ldr r0, [fp, #-4] ab8: e55b1010 ldrb r1, [fp, #-16] abc: eb00006e bl c7c <putc> ac0: eaffffff b ac4 <printf+0xa4> ac4: ea000064 b c5c <printf+0x23c> ac8: e59d0010 ldr r0, [sp, #16] acc: e3500025 cmp r0, #37 ; 0x25 ad0: 1a000060 bne c58 <printf+0x238> ad4: eaffffff b ad8 <printf+0xb8> ad8: e51b0010 ldr r0, [fp, #-16] adc: e3500064 cmp r0, #100 ; 0x64 ae0: 1a00000a bne b10 <printf+0xf0> ae4: eaffffff b ae8 <printf+0xc8> ae8: e51b0004 ldr r0, [fp, #-4] aec: e59d100c ldr r1, [sp, #12] af0: e5911000 ldr r1, [r1] af4: e3a0200a mov r2, #10 af8: e3a03001 mov r3, #1 afc: eb00006f bl cc0 <printint> b00: e59d000c ldr r0, [sp, #12] b04: e2800004 add r0, r0, #4 b08: e58d000c str r0, [sp, #12] b0c: ea00004e b c4c <printf+0x22c> b10: e51b0010 ldr r0, [fp, #-16] b14: e3500078 cmp r0, #120 ; 0x78 b18: 0a000004 beq b30 <printf+0x110> b1c: eaffffff b b20 <printf+0x100> b20: e51b0010 ldr r0, [fp, #-16] b24: e3500070 cmp r0, #112 ; 0x70 b28: 1a00000a bne b58 <printf+0x138> b2c: eaffffff b b30 <printf+0x110> b30: e51b0004 ldr r0, [fp, #-4] b34: e59d100c ldr r1, [sp, #12] b38: e5911000 ldr r1, [r1] b3c: e3a02010 mov r2, #16 b40: e3a03000 mov r3, #0 b44: eb00005d bl cc0 <printint> b48: e59d000c ldr r0, [sp, #12] b4c: e2800004 add r0, r0, #4 b50: e58d000c str r0, [sp, #12] b54: ea00003b b c48 <printf+0x228> b58: e51b0010 ldr r0, [fp, #-16] b5c: e3500073 cmp r0, #115 ; 0x73 b60: 1a00001a bne bd0 <printf+0x1b0> b64: eaffffff b b68 <printf+0x148> b68: e59d000c ldr r0, [sp, #12] b6c: e4901004 ldr r1, [r0], #4 b70: e50b100c str r1, [fp, #-12] b74: e58d000c str r0, [sp, #12] b78: e51b000c ldr r0, [fp, #-12] b7c: e3500000 cmp r0, #0 b80: 1a000003 bne b94 <printf+0x174> b84: eaffffff b b88 <printf+0x168> b88: e59f00e8 ldr r0, [pc, #232] ; c78 <printf+0x258> b8c: e50b000c str r0, [fp, #-12] b90: eaffffff b b94 <printf+0x174> b94: eaffffff b b98 <printf+0x178> b98: e51b000c ldr r0, [fp, #-12] b9c: e5d00000 ldrb r0, [r0] ba0: e3500000 cmp r0, #0 ba4: 0a000008 beq bcc <printf+0x1ac> ba8: eaffffff b bac <printf+0x18c> bac: e51b0004 ldr r0, [fp, #-4] bb0: e51b100c ldr r1, [fp, #-12] bb4: e5d11000 ldrb r1, [r1] bb8: eb00002f bl c7c <putc> bbc: e51b000c ldr r0, [fp, #-12] bc0: e2800001 add r0, r0, #1 bc4: e50b000c str r0, [fp, #-12] bc8: eafffff2 b b98 <printf+0x178> bcc: ea00001c b c44 <printf+0x224> bd0: e51b0010 ldr r0, [fp, #-16] bd4: e3500063 cmp r0, #99 ; 0x63 bd8: 1a000008 bne c00 <printf+0x1e0> bdc: eaffffff b be0 <printf+0x1c0> be0: e51b0004 ldr r0, [fp, #-4] be4: e59d100c ldr r1, [sp, #12] be8: e5d11000 ldrb r1, [r1] bec: eb000022 bl c7c <putc> bf0: e59d000c ldr r0, [sp, #12] bf4: e2800004 add r0, r0, #4 bf8: e58d000c str r0, [sp, #12] bfc: ea00000f b c40 <printf+0x220> c00: e51b0010 ldr r0, [fp, #-16] c04: e3500025 cmp r0, #37 ; 0x25 c08: 1a000004 bne c20 <printf+0x200> c0c: eaffffff b c10 <printf+0x1f0> c10: e51b0004 ldr r0, [fp, #-4] c14: e55b1010 ldrb r1, [fp, #-16] c18: eb000017 bl c7c <putc> c1c: ea000006 b c3c <printf+0x21c> c20: e51b0004 ldr r0, [fp, #-4] c24: e3a01025 mov r1, #37 ; 0x25 c28: eb000013 bl c7c <putc> c2c: e51b0004 ldr r0, [fp, #-4] c30: e55b1010 ldrb r1, [fp, #-16] c34: eb000010 bl c7c <putc> c38: eaffffff b c3c <printf+0x21c> c3c: eaffffff b c40 <printf+0x220> c40: eaffffff b c44 <printf+0x224> c44: eaffffff b c48 <printf+0x228> c48: eaffffff b c4c <printf+0x22c> c4c: e3a00000 mov r0, #0 c50: e58d0010 str r0, [sp, #16] c54: eaffffff b c58 <printf+0x238> c58: eaffffff b c5c <printf+0x23c> c5c: eaffffff b c60 <printf+0x240> c60: e59d0014 ldr r0, [sp, #20] c64: e2800001 add r0, r0, #1 c68: e58d0014 str r0, [sp, #20] c6c: eaffff7b b a60 <printf+0x40> c70: e1a0d00b mov sp, fp c74: e8bd8800 pop {fp, pc} c78: 0000130e .word 0x0000130e 00000c7c <putc>: { c7c: e92d4800 push {fp, lr} c80: e1a0b00d mov fp, sp c84: e24dd018 sub sp, sp, #24 c88: e1a02001 mov r2, r1 c8c: e1a03000 mov r3, r0 c90: e50b0004 str r0, [fp, #-4] c94: e54b1005 strb r1, [fp, #-5] write(fd, &c, 1); c98: e51b0004 ldr r0, [fp, #-4] c9c: e24b1005 sub r1, fp, #5 ca0: e3a0c001 mov ip, #1 ca4: e58d200c str r2, [sp, #12] ca8: e1a0200c mov r2, ip cac: e58d3008 str r3, [sp, #8] cb0: ebfffeca bl 7e0 <write> } cb4: e58d0004 str r0, [sp, #4] cb8: e1a0d00b mov sp, fp cbc: e8bd8800 pop {fp, pc} 00000cc0 <printint>: { cc0: e92d4830 push {r4, r5, fp, lr} cc4: e28db008 add fp, sp, #8 cc8: e24dd040 sub sp, sp, #64 ; 0x40 ccc: e1a0c003 mov ip, r3 cd0: e1a0e002 mov lr, r2 cd4: e1a04001 mov r4, r1 cd8: e1a05000 mov r5, r0 cdc: e50b000c str r0, [fp, #-12] ce0: e50b1010 str r1, [fp, #-16] ce4: e50b2014 str r2, [fp, #-20] ; 0xffffffec ce8: e50b3018 str r3, [fp, #-24] ; 0xffffffe8 cec: e3a00000 mov r0, #0 cf0: e58d0018 str r0, [sp, #24] cf4: e51b0018 ldr r0, [fp, #-24] ; 0xffffffe8 cf8: e3500000 cmp r0, #0 cfc: e58dc010 str ip, [sp, #16] d00: e58de00c str lr, [sp, #12] d04: e58d4008 str r4, [sp, #8] d08: e58d5004 str r5, [sp, #4] d0c: 0a00000a beq d3c <printint+0x7c> d10: eaffffff b d14 <printint+0x54> d14: e51b0010 ldr r0, [fp, #-16] d18: e3500000 cmp r0, #0 d1c: aa000006 bge d3c <printint+0x7c> d20: eaffffff b d24 <printint+0x64> d24: e3a00001 mov r0, #1 d28: e58d0018 str r0, [sp, #24] d2c: e51b0010 ldr r0, [fp, #-16] d30: e2600000 rsb r0, r0, #0 d34: e58d0014 str r0, [sp, #20] d38: ea000002 b d48 <printint+0x88> d3c: e51b0010 ldr r0, [fp, #-16] d40: e58d0014 str r0, [sp, #20] d44: eaffffff b d48 <printint+0x88> d48: e3a00000 mov r0, #0 d4c: e58d001c str r0, [sp, #28] d50: eaffffff b d54 <printint+0x94> d54: e59d0014 ldr r0, [sp, #20] d58: e51b1014 ldr r1, [fp, #-20] ; 0xffffffec d5c: eb000158 bl 12c4 <__aeabi_uidivmod> d60: e59fe0a0 ldr lr, [pc, #160] ; e08 <printint+0x148> d64: e7de1001 ldrb r1, [lr, r1] d68: e59de01c ldr lr, [sp, #28] d6c: e28e2001 add r2, lr, #1 d70: e58d201c str r2, [sp, #28] d74: e28d2020 add r2, sp, #32 d78: e7c2100e strb r1, [r2, lr] d7c: e58d0000 str r0, [sp] d80: eaffffff b d84 <printint+0xc4> d84: e51b1014 ldr r1, [fp, #-20] ; 0xffffffec d88: e59d0014 ldr r0, [sp, #20] d8c: eb00010f bl 11d0 <__aeabi_uidiv> d90: e58d0014 str r0, [sp, #20] d94: e3500000 cmp r0, #0 d98: 1affffed bne d54 <printint+0x94> d9c: eaffffff b da0 <printint+0xe0> da0: e59d0018 ldr r0, [sp, #24] da4: e3500000 cmp r0, #0 da8: 0a000007 beq dcc <printint+0x10c> dac: eaffffff b db0 <printint+0xf0> db0: e59d001c ldr r0, [sp, #28] db4: e2801001 add r1, r0, #1 db8: e58d101c str r1, [sp, #28] dbc: e28d1020 add r1, sp, #32 dc0: e3a0202d mov r2, #45 ; 0x2d dc4: e7c12000 strb r2, [r1, r0] dc8: eaffffff b dcc <printint+0x10c> dcc: eaffffff b dd0 <printint+0x110> dd0: e59d001c ldr r0, [sp, #28] dd4: e2400001 sub r0, r0, #1 dd8: e58d001c str r0, [sp, #28] ddc: e3500000 cmp r0, #0 de0: ba000006 blt e00 <printint+0x140> de4: eaffffff b de8 <printint+0x128> de8: e51b000c ldr r0, [fp, #-12] dec: e59d101c ldr r1, [sp, #28] df0: e28d2020 add r2, sp, #32 df4: e7d21001 ldrb r1, [r2, r1] df8: ebffff9f bl c7c <putc> dfc: eafffff3 b dd0 <printint+0x110> e00: e24bd008 sub sp, fp, #8 e04: e8bd8830 pop {r4, r5, fp, pc} e08: 00001320 .word 0x00001320 00000e0c <free>: static Header base; static Header *freep; void free(void *ap) { e0c: e24dd014 sub sp, sp, #20 e10: e1a01000 mov r1, r0 e14: e58d0010 str r0, [sp, #16] e18: e59d0010 ldr r0, [sp, #16] e1c: e2400008 sub r0, r0, #8 e20: e58d000c str r0, [sp, #12] e24: e59f0188 ldr r0, [pc, #392] ; fb4 <free+0x1a8> e28: e5900000 ldr r0, [r0] e2c: e58d0008 str r0, [sp, #8] e30: e58d1004 str r1, [sp, #4] e34: eaffffff b e38 <free+0x2c> e38: e59d000c ldr r0, [sp, #12] e3c: e59d1008 ldr r1, [sp, #8] e40: e3a02000 mov r2, #0 e44: e1500001 cmp r0, r1 e48: e58d2000 str r2, [sp] e4c: 9a000008 bls e74 <free+0x68> e50: eaffffff b e54 <free+0x48> e54: e59d000c ldr r0, [sp, #12] e58: e59d1008 ldr r1, [sp, #8] e5c: e5911000 ldr r1, [r1] e60: e3a02000 mov r2, #0 e64: e1500001 cmp r0, r1 e68: 33a02001 movcc r2, #1 e6c: e58d2000 str r2, [sp] e70: eaffffff b e74 <free+0x68> e74: e59d0000 ldr r0, [sp] e78: e1e00000 mvn r0, r0 e7c: e3100001 tst r0, #1 e80: 0a000016 beq ee0 <free+0xd4> e84: eaffffff b e88 <free+0x7c> e88: e59d0008 ldr r0, [sp, #8] e8c: e5901000 ldr r1, [r0] e90: e1500001 cmp r0, r1 e94: 3a00000c bcc ecc <free+0xc0> e98: eaffffff b e9c <free+0x90> e9c: e59d000c ldr r0, [sp, #12] ea0: e59d1008 ldr r1, [sp, #8] ea4: e1500001 cmp r0, r1 ea8: 8a000006 bhi ec8 <free+0xbc> eac: eaffffff b eb0 <free+0xa4> eb0: e59d000c ldr r0, [sp, #12] eb4: e59d1008 ldr r1, [sp, #8] eb8: e5911000 ldr r1, [r1] ebc: e1500001 cmp r0, r1 ec0: 2a000001 bcs ecc <free+0xc0> ec4: eaffffff b ec8 <free+0xbc> ec8: ea000004 b ee0 <free+0xd4> ecc: eaffffff b ed0 <free+0xc4> ed0: e59d0008 ldr r0, [sp, #8] ed4: e5900000 ldr r0, [r0] ed8: e58d0008 str r0, [sp, #8] edc: eaffffd5 b e38 <free+0x2c> ee0: e59d000c ldr r0, [sp, #12] ee4: e5901004 ldr r1, [r0, #4] ee8: e0800181 add r0, r0, r1, lsl #3 eec: e59d1008 ldr r1, [sp, #8] ef0: e5911000 ldr r1, [r1] ef4: e1500001 cmp r0, r1 ef8: 1a00000d bne f34 <free+0x128> efc: eaffffff b f00 <free+0xf4> f00: e59d0008 ldr r0, [sp, #8] f04: e5900000 ldr r0, [r0] f08: e5900004 ldr r0, [r0, #4] f0c: e59d100c ldr r1, [sp, #12] f10: e5912004 ldr r2, [r1, #4] f14: e0820000 add r0, r2, r0 f18: e5810004 str r0, [r1, #4] f1c: e59d0008 ldr r0, [sp, #8] f20: e5900000 ldr r0, [r0] f24: e5900000 ldr r0, [r0] f28: e59d100c ldr r1, [sp, #12] f2c: e5810000 str r0, [r1] f30: ea000004 b f48 <free+0x13c> f34: e59d0008 ldr r0, [sp, #8] f38: e5900000 ldr r0, [r0] f3c: e59d100c ldr r1, [sp, #12] f40: e5810000 str r0, [r1] f44: eaffffff b f48 <free+0x13c> f48: e59d0008 ldr r0, [sp, #8] f4c: e5901004 ldr r1, [r0, #4] f50: e0800181 add r0, r0, r1, lsl #3 f54: e59d100c ldr r1, [sp, #12] f58: e1500001 cmp r0, r1 f5c: 1a00000b bne f90 <free+0x184> f60: eaffffff b f64 <free+0x158> f64: e59d000c ldr r0, [sp, #12] f68: e5900004 ldr r0, [r0, #4] f6c: e59d1008 ldr r1, [sp, #8] f70: e5912004 ldr r2, [r1, #4] f74: e0820000 add r0, r2, r0 f78: e5810004 str r0, [r1, #4] f7c: e59d000c ldr r0, [sp, #12] f80: e5900000 ldr r0, [r0] f84: e59d1008 ldr r1, [sp, #8] f88: e5810000 str r0, [r1] f8c: ea000003 b fa0 <free+0x194> f90: e59d000c ldr r0, [sp, #12] f94: e59d1008 ldr r1, [sp, #8] f98: e5810000 str r0, [r1] f9c: eaffffff b fa0 <free+0x194> fa0: e59d0008 ldr r0, [sp, #8] fa4: e59f1008 ldr r1, [pc, #8] ; fb4 <free+0x1a8> fa8: e5810000 str r0, [r1] fac: e28dd014 add sp, sp, #20 fb0: e12fff1e bx lr fb4: 00001334 .word 0x00001334 00000fb8 <malloc>: fb8: e92d4800 push {fp, lr} fbc: e1a0b00d mov fp, sp fc0: e24dd018 sub sp, sp, #24 fc4: e1a01000 mov r1, r0 fc8: e50b0008 str r0, [fp, #-8] fcc: e51b0008 ldr r0, [fp, #-8] fd0: e2800007 add r0, r0, #7 fd4: e3a02001 mov r2, #1 fd8: e08201a0 add r0, r2, r0, lsr #3 fdc: e58d0004 str r0, [sp, #4] fe0: e59f013c ldr r0, [pc, #316] ; 1124 <malloc+0x16c> fe4: e5900000 ldr r0, [r0] fe8: e58d0008 str r0, [sp, #8] fec: e3500000 cmp r0, #0 ff0: e58d1000 str r1, [sp] ff4: 1a000008 bne 101c <malloc+0x64> ff8: eaffffff b ffc <malloc+0x44> ffc: e59f0124 ldr r0, [pc, #292] ; 1128 <malloc+0x170> 1000: e58d0008 str r0, [sp, #8] 1004: e59f1118 ldr r1, [pc, #280] ; 1124 <malloc+0x16c> 1008: e5810000 str r0, [r1] 100c: e5800000 str r0, [r0] 1010: e3a01000 mov r1, #0 1014: e5801004 str r1, [r0, #4] 1018: eaffffff b 101c <malloc+0x64> 101c: e59d0008 ldr r0, [sp, #8] 1020: e5900000 ldr r0, [r0] 1024: e58d000c str r0, [sp, #12] 1028: eaffffff b 102c <malloc+0x74> 102c: e59d000c ldr r0, [sp, #12] 1030: e5900004 ldr r0, [r0, #4] 1034: e59d1004 ldr r1, [sp, #4] 1038: e1500001 cmp r0, r1 103c: 3a00001f bcc 10c0 <malloc+0x108> 1040: eaffffff b 1044 <malloc+0x8c> 1044: e59d000c ldr r0, [sp, #12] 1048: e5900004 ldr r0, [r0, #4] 104c: e59d1004 ldr r1, [sp, #4] 1050: e1500001 cmp r0, r1 1054: 1a000005 bne 1070 <malloc+0xb8> 1058: eaffffff b 105c <malloc+0xa4> 105c: e59d000c ldr r0, [sp, #12] 1060: e5900000 ldr r0, [r0] 1064: e59d1008 ldr r1, [sp, #8] 1068: e5810000 str r0, [r1] 106c: ea00000c b 10a4 <malloc+0xec> 1070: e59d0004 ldr r0, [sp, #4] 1074: e59d100c ldr r1, [sp, #12] 1078: e5912004 ldr r2, [r1, #4] 107c: e0420000 sub r0, r2, r0 1080: e5810004 str r0, [r1, #4] 1084: e59d000c ldr r0, [sp, #12] 1088: e5901004 ldr r1, [r0, #4] 108c: e0800181 add r0, r0, r1, lsl #3 1090: e58d000c str r0, [sp, #12] 1094: e59d0004 ldr r0, [sp, #4] 1098: e59d100c ldr r1, [sp, #12] 109c: e5810004 str r0, [r1, #4] 10a0: eaffffff b 10a4 <malloc+0xec> 10a4: e59d0008 ldr r0, [sp, #8] 10a8: e59f1074 ldr r1, [pc, #116] ; 1124 <malloc+0x16c> 10ac: e5810000 str r0, [r1] 10b0: e59d000c ldr r0, [sp, #12] 10b4: e2800008 add r0, r0, #8 10b8: e50b0004 str r0, [fp, #-4] 10bc: ea000015 b 1118 <malloc+0x160> 10c0: e59d000c ldr r0, [sp, #12] 10c4: e59f1058 ldr r1, [pc, #88] ; 1124 <malloc+0x16c> 10c8: e5911000 ldr r1, [r1] 10cc: e1500001 cmp r0, r1 10d0: 1a00000a bne 1100 <malloc+0x148> 10d4: eaffffff b 10d8 <malloc+0x120> 10d8: e59d0004 ldr r0, [sp, #4] 10dc: eb000012 bl 112c <morecore> 10e0: e58d000c str r0, [sp, #12] 10e4: e3500000 cmp r0, #0 10e8: 1a000003 bne 10fc <malloc+0x144> 10ec: eaffffff b 10f0 <malloc+0x138> 10f0: e3a00000 mov r0, #0 10f4: e50b0004 str r0, [fp, #-4] 10f8: ea000006 b 1118 <malloc+0x160> 10fc: eaffffff b 1100 <malloc+0x148> 1100: eaffffff b 1104 <malloc+0x14c> 1104: e59d000c ldr r0, [sp, #12] 1108: e58d0008 str r0, [sp, #8] 110c: e5900000 ldr r0, [r0] 1110: e58d000c str r0, [sp, #12] 1114: eaffffc4 b 102c <malloc+0x74> 1118: e51b0004 ldr r0, [fp, #-4] 111c: e1a0d00b mov sp, fp 1120: e8bd8800 pop {fp, pc} 1124: 00001334 .word 0x00001334 1128: 00001338 .word 0x00001338 0000112c <morecore>: freep = p; } static Header* morecore(uint nu) { 112c: e92d4800 push {fp, lr} 1130: e1a0b00d mov fp, sp 1134: e24dd018 sub sp, sp, #24 1138: e1a01000 mov r1, r0 113c: e50b0008 str r0, [fp, #-8] char *p; Header *hp; if(nu < 4096) 1140: e51b0008 ldr r0, [fp, #-8] 1144: e3a02000 mov r2, #0 1148: e1520620 cmp r2, r0, lsr #12 114c: e58d1004 str r1, [sp, #4] 1150: 1a000003 bne 1164 <morecore+0x38> 1154: eaffffff b 1158 <morecore+0x2c> nu = 4096; 1158: e3a00a01 mov r0, #4096 ; 0x1000 115c: e50b0008 str r0, [fp, #-8] 1160: eaffffff b 1164 <morecore+0x38> p = sbrk(nu * sizeof(Header)); 1164: e51b0008 ldr r0, [fp, #-8] 1168: e1a00180 lsl r0, r0, #3 116c: ebfffe10 bl 9b4 <sbrk> 1170: e58d000c str r0, [sp, #12] if(p == (char*)-1) 1174: e59d000c ldr r0, [sp, #12] 1178: e3700001 cmn r0, #1 117c: 1a000003 bne 1190 <morecore+0x64> 1180: eaffffff b 1184 <morecore+0x58> return 0; 1184: e3a00000 mov r0, #0 1188: e50b0004 str r0, [fp, #-4] 118c: ea00000b b 11c0 <morecore+0x94> hp = (Header*)p; 1190: e59d000c ldr r0, [sp, #12] 1194: e58d0008 str r0, [sp, #8] hp->s.size = nu; 1198: e51b0008 ldr r0, [fp, #-8] 119c: e59d1008 ldr r1, [sp, #8] 11a0: e5810004 str r0, [r1, #4] free((void*)(hp + 1)); 11a4: e59d0008 ldr r0, [sp, #8] 11a8: e2800008 add r0, r0, #8 11ac: ebffff16 bl e0c <free> return freep; 11b0: e59f0014 ldr r0, [pc, #20] ; 11cc <morecore+0xa0> 11b4: e5900000 ldr r0, [r0] 11b8: e50b0004 str r0, [fp, #-4] 11bc: eaffffff b 11c0 <morecore+0x94> } 11c0: e51b0004 ldr r0, [fp, #-4] 11c4: e1a0d00b mov sp, fp 11c8: e8bd8800 pop {fp, pc} 11cc: 00001334 .word 0x00001334 000011d0 <__aeabi_uidiv>: 11d0: e2512001 subs r2, r1, #1 11d4: 012fff1e bxeq lr 11d8: 3a000036 bcc 12b8 <__aeabi_uidiv+0xe8> 11dc: e1500001 cmp r0, r1 11e0: 9a000022 bls 1270 <__aeabi_uidiv+0xa0> 11e4: e1110002 tst r1, r2 11e8: 0a000023 beq 127c <__aeabi_uidiv+0xac> 11ec: e311020e tst r1, #-536870912 ; 0xe0000000 11f0: 01a01181 lsleq r1, r1, #3 11f4: 03a03008 moveq r3, #8 11f8: 13a03001 movne r3, #1 11fc: e3510201 cmp r1, #268435456 ; 0x10000000 1200: 31510000 cmpcc r1, r0 1204: 31a01201 lslcc r1, r1, #4 1208: 31a03203 lslcc r3, r3, #4 120c: 3afffffa bcc 11fc <__aeabi_uidiv+0x2c> 1210: e3510102 cmp r1, #-2147483648 ; 0x80000000 1214: 31510000 cmpcc r1, r0 1218: 31a01081 lslcc r1, r1, #1 121c: 31a03083 lslcc r3, r3, #1 1220: 3afffffa bcc 1210 <__aeabi_uidiv+0x40> 1224: e3a02000 mov r2, #0 1228: e1500001 cmp r0, r1 122c: 20400001 subcs r0, r0, r1 1230: 21822003 orrcs r2, r2, r3 1234: e15000a1 cmp r0, r1, lsr #1 1238: 204000a1 subcs r0, r0, r1, lsr #1 123c: 218220a3 orrcs r2, r2, r3, lsr #1 1240: e1500121 cmp r0, r1, lsr #2 1244: 20400121 subcs r0, r0, r1, lsr #2 1248: 21822123 orrcs r2, r2, r3, lsr #2 124c: e15001a1 cmp r0, r1, lsr #3 1250: 204001a1 subcs r0, r0, r1, lsr #3 1254: 218221a3 orrcs r2, r2, r3, lsr #3 1258: e3500000 cmp r0, #0 125c: 11b03223 lsrsne r3, r3, #4 1260: 11a01221 lsrne r1, r1, #4 1264: 1affffef bne 1228 <__aeabi_uidiv+0x58> 1268: e1a00002 mov r0, r2 126c: e12fff1e bx lr 1270: 03a00001 moveq r0, #1 1274: 13a00000 movne r0, #0 1278: e12fff1e bx lr 127c: e3510801 cmp r1, #65536 ; 0x10000 1280: 21a01821 lsrcs r1, r1, #16 1284: 23a02010 movcs r2, #16 1288: 33a02000 movcc r2, #0 128c: e3510c01 cmp r1, #256 ; 0x100 1290: 21a01421 lsrcs r1, r1, #8 1294: 22822008 addcs r2, r2, #8 1298: e3510010 cmp r1, #16 129c: 21a01221 lsrcs r1, r1, #4 12a0: 22822004 addcs r2, r2, #4 12a4: e3510004 cmp r1, #4 12a8: 82822003 addhi r2, r2, #3 12ac: 908220a1 addls r2, r2, r1, lsr #1 12b0: e1a00230 lsr r0, r0, r2 12b4: e12fff1e bx lr 12b8: e3500000 cmp r0, #0 12bc: 13e00000 mvnne r0, #0 12c0: ea000007 b 12e4 <__aeabi_idiv0> 000012c4 <__aeabi_uidivmod>: 12c4: e3510000 cmp r1, #0 12c8: 0afffffa beq 12b8 <__aeabi_uidiv+0xe8> 12cc: e92d4003 push {r0, r1, lr} 12d0: ebffffbe bl 11d0 <__aeabi_uidiv> 12d4: e8bd4006 pop {r1, r2, lr} 12d8: e0030092 mul r3, r2, r0 12dc: e0411003 sub r1, r1, r3 12e0: e12fff1e bx lr 000012e4 <__aeabi_idiv0>: 12e4: e12fff1e bx lr