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