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