From d8eaa13f2efc1eeca4e5f230d5a2d535aaf27338 Mon Sep 17 00:00:00 2001 From: Richard Qin Date: Fri, 2 Jan 2026 00:47:16 +0800 Subject: dev(file-system): establish VFS and Read-only FAT32 File System --- build/kernel.elf | Bin 184056 -> 248784 bytes build/src/drivers/virtio_dist.o | Bin 93248 -> 104488 bytes build/src/fs/fat32.o | Bin 0 -> 165984 bytes build/src/fs/file.o | Bin 0 -> 51760 bytes build/src/fs/fs.o | Bin 0 -> 74136 bytes build/src/kernel/bio.o | Bin 0 -> 53432 bytes build/src/kernel/cxx.o | Bin 0 -> 19936 bytes build/src/kernel/initcode.o | Bin 3952 -> 4368 bytes build/src/kernel/main.o | Bin 19608 -> 21336 bytes build/src/kernel/mm/pmm.o | Bin 90424 -> 90360 bytes build/src/kernel/mm/vm.o | Bin 214608 -> 227848 bytes build/src/kernel/proc/proc.o | Bin 212272 -> 221432 bytes build/src/kernel/syscall.o | Bin 61936 -> 91592 bytes build/src/lib/string.o | Bin 27632 -> 31608 bytes build/user/init.o | Bin 112536 -> 121792 bytes build/user/initcode | Bin 2928 -> 3344 bytes build/user/initcode.asm | 1377 +++++++++++++++++++++------------------ build/user/initcode.out | Bin 22440 -> 23808 bytes 18 files changed, 730 insertions(+), 647 deletions(-) create mode 100644 build/src/fs/fat32.o create mode 100644 build/src/fs/file.o create mode 100644 build/src/fs/fs.o create mode 100644 build/src/kernel/bio.o create mode 100644 build/src/kernel/cxx.o (limited to 'build') diff --git a/build/kernel.elf b/build/kernel.elf index 902f32b..cf12d9c 100755 Binary files a/build/kernel.elf and b/build/kernel.elf differ diff --git a/build/src/drivers/virtio_dist.o b/build/src/drivers/virtio_dist.o index cc608ca..594b0e7 100644 Binary files a/build/src/drivers/virtio_dist.o and b/build/src/drivers/virtio_dist.o differ diff --git a/build/src/fs/fat32.o b/build/src/fs/fat32.o new file mode 100644 index 0000000..978eb14 Binary files /dev/null and b/build/src/fs/fat32.o differ diff --git a/build/src/fs/file.o b/build/src/fs/file.o new file mode 100644 index 0000000..7dc96e9 Binary files /dev/null and b/build/src/fs/file.o differ diff --git a/build/src/fs/fs.o b/build/src/fs/fs.o new file mode 100644 index 0000000..dd6a386 Binary files /dev/null and b/build/src/fs/fs.o differ diff --git a/build/src/kernel/bio.o b/build/src/kernel/bio.o new file mode 100644 index 0000000..578821b Binary files /dev/null and b/build/src/kernel/bio.o differ diff --git a/build/src/kernel/cxx.o b/build/src/kernel/cxx.o new file mode 100644 index 0000000..a115a07 Binary files /dev/null and b/build/src/kernel/cxx.o differ diff --git a/build/src/kernel/initcode.o b/build/src/kernel/initcode.o index a1c9bd8..0bfbd9e 100644 Binary files a/build/src/kernel/initcode.o and b/build/src/kernel/initcode.o differ diff --git a/build/src/kernel/main.o b/build/src/kernel/main.o index df27b46..6b663cd 100644 Binary files a/build/src/kernel/main.o and b/build/src/kernel/main.o differ diff --git a/build/src/kernel/mm/pmm.o b/build/src/kernel/mm/pmm.o index db30140..b0bdecf 100644 Binary files a/build/src/kernel/mm/pmm.o and b/build/src/kernel/mm/pmm.o differ diff --git a/build/src/kernel/mm/vm.o b/build/src/kernel/mm/vm.o index 5d30dcd..8743310 100644 Binary files a/build/src/kernel/mm/vm.o and b/build/src/kernel/mm/vm.o differ diff --git a/build/src/kernel/proc/proc.o b/build/src/kernel/proc/proc.o index ad606f0..7ae741b 100644 Binary files a/build/src/kernel/proc/proc.o and b/build/src/kernel/proc/proc.o differ diff --git a/build/src/kernel/syscall.o b/build/src/kernel/syscall.o index d398c30..bc3200e 100644 Binary files a/build/src/kernel/syscall.o and b/build/src/kernel/syscall.o differ diff --git a/build/src/lib/string.o b/build/src/lib/string.o index 6d50c43..6818c98 100644 Binary files a/build/src/lib/string.o and b/build/src/lib/string.o differ diff --git a/build/user/init.o b/build/user/init.o index aea18f2..6380026 100644 Binary files a/build/user/init.o and b/build/user/init.o differ diff --git a/build/user/initcode b/build/user/initcode index b6ac9a3..ef0eb5a 100755 Binary files a/build/user/initcode and b/build/user/initcode differ diff --git a/build/user/initcode.asm b/build/user/initcode.asm index 1cb4088..99769f6 100644 --- a/build/user/initcode.asm +++ b/build/user/initcode.asm @@ -15,15 +15,15 @@ _start: 2: 4581 li a1,0 call main - 4: 578000ef jal 57c
+ 4: 57a000ef jal 57e
call exit - 8: 648000ef jal 650 + 8: 706000ef jal 70e c: a001 j c <_start+0xc> 000000000000000e <_Z6strlenPKc>: -// ============================================================= +#include "common/fcntl.h" int strlen(const char *s) { @@ -55,7 +55,7 @@ void print(const char *s) { 32: 85aa mv a1,a0 while (s[n]) - 34: cf89 beqz a5,4e <_Z5printPKc+0x20> + 34: cf91 beqz a5,50 <_Z5printPKc+0x22> 36: 00150693 addi a3,a0,1 3a: 87b6 mv a5,a3 3c: 0007c703 lbu a4,0(a5) @@ -67,987 +67,1070 @@ void print(const char *s) 48: 2605 addiw a2,a2,1 write(1, s, strlen(s)); 4a: 4505 li a0,1 - 4c: a515 j 670 + 4c: 6e20006f j 72e int n = 0; - 4e: 4601 li a2,0 + 50: 4601 li a2,0 write(1, s, strlen(s)); - 50: 4505 li a0,1 - 52: ad39 j 670 + 52: 4505 li a0,1 + 54: ade9 j 72e -0000000000000054 <_Z9print_inti>: +0000000000000056 <_Z9print_inti>: void print_int(int n) { char buf[16]; int i = 0; int neg = 0; if (n == 0) - 54: c149 beqz a0,d6 <_Z9print_inti+0x82> + 56: c149 beqz a0,d8 <_Z9print_inti+0x82> { - 56: 7179 addi sp,sp,-48 - 58: f406 sd ra,40(sp) - 5a: f022 sd s0,32(sp) - 5c: ec26 sd s1,24(sp) + 58: 7179 addi sp,sp,-48 + 5a: f406 sd ra,40(sp) + 5c: f022 sd s0,32(sp) + 5e: ec26 sd s1,24(sp) int neg = 0; - 5e: 4801 li a6,0 + 60: 4801 li a6,0 { write(1, "0", 1); return; } if (n < 0) - 60: 04054c63 bltz a0,b8 <_Z9print_inti+0x64> - 64: 840a mv s0,sp + 62: 04054c63 bltz a0,ba <_Z9print_inti+0x64> + 66: 840a mv s0,sp { neg = 1; - 66: 86a2 mv a3,s0 - 68: 4701 li a4,0 + 68: 86a2 mv a3,s0 + 6a: 4701 li a4,0 n = -n; } while (n > 0) { buf[i++] = (n % 10) + '0'; - 6a: 4629 li a2,10 - 6c: 02c567bb remw a5,a0,a2 + 6c: 4629 li a2,10 + 6e: 02c567bb remw a5,a0,a2 while (n > 0) - 70: 0685 addi a3,a3,1 - 72: 85ba mv a1,a4 + 72: 0685 addi a3,a3,1 + 74: 85ba mv a1,a4 buf[i++] = (n % 10) + '0'; - 74: 2705 addiw a4,a4,1 + 76: 2705 addiw a4,a4,1 n /= 10; - 76: 02c5453b divw a0,a0,a2 + 78: 02c5453b divw a0,a0,a2 buf[i++] = (n % 10) + '0'; - 7a: 0307879b addiw a5,a5,48 - 7e: fef68fa3 sb a5,-1(a3) + 7c: 0307879b addiw a5,a5,48 + 80: fef68fa3 sb a5,-1(a3) while (n > 0) - 82: f56d bnez a0,6c <_Z9print_inti+0x18> + 84: f56d bnez a0,6e <_Z9print_inti+0x18> } if (neg) - 84: 02081e63 bnez a6,c0 <_Z9print_inti+0x6c> - 88: fff7079b addiw a5,a4,-1 - 8c: ffe40493 addi s1,s0,-2 - 90: 1782 slli a5,a5,0x20 - 92: fff70693 addi a3,a4,-1 - 96: 94ba add s1,s1,a4 - 98: 9381 srli a5,a5,0x20 - 9a: 9436 add s0,s0,a3 - 9c: 8c9d sub s1,s1,a5 + 86: 02081e63 bnez a6,c2 <_Z9print_inti+0x6c> + 8a: fff7079b addiw a5,a4,-1 + 8e: ffe40493 addi s1,s0,-2 + 92: 1782 slli a5,a5,0x20 + 94: fff70693 addi a3,a4,-1 + 98: 94ba add s1,s1,a4 + 9a: 9381 srli a5,a5,0x20 + 9c: 9436 add s0,s0,a3 + 9e: 8c9d sub s1,s1,a5 buf[i++] = '-'; while (i > 0) write(1, &buf[--i], 1); - 9e: 85a2 mv a1,s0 - a0: 4605 li a2,1 - a2: 4505 li a0,1 + a0: 85a2 mv a1,s0 + a2: 4605 li a2,1 + a4: 4505 li a0,1 while (i > 0) - a4: 147d addi s0,s0,-1 + a6: 147d addi s0,s0,-1 write(1, &buf[--i], 1); - a6: 5ca000ef jal 670 + a8: 686000ef jal 72e while (i > 0) - aa: fe849ae3 bne s1,s0,9e <_Z9print_inti+0x4a> + ac: fe849ae3 bne s1,s0,a0 <_Z9print_inti+0x4a> } - ae: 70a2 ld ra,40(sp) - b0: 7402 ld s0,32(sp) - b2: 64e2 ld s1,24(sp) - b4: 6145 addi sp,sp,48 - b6: 8082 ret + b0: 70a2 ld ra,40(sp) + b2: 7402 ld s0,32(sp) + b4: 64e2 ld s1,24(sp) + b6: 6145 addi sp,sp,48 + b8: 8082 ret n = -n; - b8: 40a0053b negw a0,a0 + ba: 40a0053b negw a0,a0 neg = 1; - bc: 4805 li a6,1 - be: b75d j 64 <_Z9print_inti+0x10> + be: 4805 li a6,1 + c0: b75d j 66 <_Z9print_inti+0x10> buf[i++] = '-'; - c0: 01070793 addi a5,a4,16 - c4: 00278733 add a4,a5,sp - c8: 02d00793 li a5,45 - cc: fef70823 sb a5,-16(a4) - d0: 0025871b addiw a4,a1,2 - d4: bf55 j 88 <_Z9print_inti+0x34> + c2: 01070793 addi a5,a4,16 + c6: 00278733 add a4,a5,sp + ca: 02d00793 li a5,45 + ce: fef70823 sb a5,-16(a4) + d2: 0025871b addiw a4,a1,2 + d6: bf55 j 8a <_Z9print_inti+0x34> write(1, "0", 1); - d6: 4605 li a2,1 - d8: 00000597 auipc a1,0x0 - dc: 62858593 addi a1,a1,1576 # 700 - e0: 4505 li a0,1 - e2: a379 j 670 + d8: 4605 li a2,1 + da: 00000597 auipc a1,0x0 + de: 6e658593 addi a1,a1,1766 # 7c0 + e2: 4505 li a0,1 + e4: a5a9 j 72e -00000000000000e4 <_Z9print_hexy>: +00000000000000e6 <_Z9print_hexy>: void print_hex(uint64 n) { char buf[16]; char digits[] = "0123456789ABCDEF"; - e4: 00000797 auipc a5,0x0 - e8: 62c78793 addi a5,a5,1580 # 710 - ec: 6394 ld a3,0(a5) - ee: 6798 ld a4,8(a5) - f0: 0107c783 lbu a5,16(a5) + e6: 00000797 auipc a5,0x0 + ea: 6ea78793 addi a5,a5,1770 # 7d0 + ee: 6394 ld a3,0(a5) + f0: 6798 ld a4,8(a5) + f2: 0107c783 lbu a5,16(a5) { - f4: 715d addi sp,sp,-80 - f6: fc26 sd s1,56(sp) + f6: 715d addi sp,sp,-80 + f8: fc26 sd s1,56(sp) write(1, "0x", 2); - f8: 4609 li a2,2 + fa: 4609 li a2,2 { - fa: 84aa mv s1,a0 + fc: 84aa mv s1,a0 write(1, "0x", 2); - fc: 00000597 auipc a1,0x0 - 100: 60c58593 addi a1,a1,1548 # 708 - 104: 4505 li a0,1 + fe: 00000597 auipc a1,0x0 + 102: 6ca58593 addi a1,a1,1738 # 7c8 + 106: 4505 li a0,1 { - 106: e486 sd ra,72(sp) + 108: e486 sd ra,72(sp) char digits[] = "0123456789ABCDEF"; - 108: ec36 sd a3,24(sp) - 10a: f03a sd a4,32(sp) - 10c: 02f10423 sb a5,40(sp) + 10a: ec36 sd a3,24(sp) + 10c: f03a sd a4,32(sp) + 10e: 02f10423 sb a5,40(sp) write(1, "0x", 2); - 110: 560000ef jal 670 + 112: 61c000ef jal 72e if (n == 0) - 114: cca1 beqz s1,16c <_Z9print_hexy+0x88> - 116: e0a2 sd s0,64(sp) - 118: 0020 addi s0,sp,8 - 11a: 87a2 mv a5,s0 + 116: cca1 beqz s1,16e <_Z9print_hexy+0x88> + 118: e0a2 sd s0,64(sp) + 11a: 0020 addi s0,sp,8 + 11c: 87a2 mv a5,s0 return; } int i = 0; while (n > 0) { buf[i++] = digits[n % 16]; - 11c: 00f4f713 andi a4,s1,15 - 120: 03070713 addi a4,a4,48 - 124: 970a add a4,a4,sp - 126: fe874683 lbu a3,-24(a4) + 11e: 00f4f713 andi a4,s1,15 + 122: 03070713 addi a4,a4,48 + 126: 970a add a4,a4,sp + 128: fe874683 lbu a3,-24(a4) n /= 16; - 12a: 8091 srli s1,s1,0x4 - 12c: 873e mv a4,a5 + 12c: 8091 srli s1,s1,0x4 + 12e: 873e mv a4,a5 buf[i++] = digits[n % 16]; - 12e: 00d78023 sb a3,0(a5) + 130: 00d78023 sb a3,0(a5) while (n > 0) - 132: 0785 addi a5,a5,1 - 134: f4e5 bnez s1,11c <_Z9print_hexy+0x38> - 136: 9f01 subw a4,a4,s0 - 138: 0017079b addiw a5,a4,1 - 13c: fff7871b addiw a4,a5,-1 - 140: ffe40493 addi s1,s0,-2 - 144: 1702 slli a4,a4,0x20 - 146: fff78693 addi a3,a5,-1 - 14a: 94be add s1,s1,a5 - 14c: 9301 srli a4,a4,0x20 - 14e: 9436 add s0,s0,a3 - 150: 8c99 sub s1,s1,a4 + 134: 0785 addi a5,a5,1 + 136: f4e5 bnez s1,11e <_Z9print_hexy+0x38> + 138: 9f01 subw a4,a4,s0 + 13a: 0017079b addiw a5,a4,1 + 13e: fff7871b addiw a4,a5,-1 + 142: ffe40493 addi s1,s0,-2 + 146: 1702 slli a4,a4,0x20 + 148: fff78693 addi a3,a5,-1 + 14c: 94be add s1,s1,a5 + 14e: 9301 srli a4,a4,0x20 + 150: 9436 add s0,s0,a3 + 152: 8c99 sub s1,s1,a4 } while (i > 0) write(1, &buf[--i], 1); - 152: 85a2 mv a1,s0 - 154: 4605 li a2,1 - 156: 4505 li a0,1 + 154: 85a2 mv a1,s0 + 156: 4605 li a2,1 + 158: 4505 li a0,1 while (i > 0) - 158: 147d addi s0,s0,-1 + 15a: 147d addi s0,s0,-1 write(1, &buf[--i], 1); - 15a: 516000ef jal 670 + 15c: 5d2000ef jal 72e while (i > 0) - 15e: fe941ae3 bne s0,s1,152 <_Z9print_hexy+0x6e> - 162: 6406 ld s0,64(sp) + 160: fe941ae3 bne s0,s1,154 <_Z9print_hexy+0x6e> + 164: 6406 ld s0,64(sp) } - 164: 60a6 ld ra,72(sp) - 166: 74e2 ld s1,56(sp) - 168: 6161 addi sp,sp,80 - 16a: 8082 ret - 16c: 60a6 ld ra,72(sp) - 16e: 74e2 ld s1,56(sp) + 166: 60a6 ld ra,72(sp) + 168: 74e2 ld s1,56(sp) + 16a: 6161 addi sp,sp,80 + 16c: 8082 ret + 16e: 60a6 ld ra,72(sp) + 170: 74e2 ld s1,56(sp) write(1, "0", 1); - 170: 4605 li a2,1 - 172: 00000597 auipc a1,0x0 - 176: 58e58593 addi a1,a1,1422 # 700 - 17a: 4505 li a0,1 + 172: 4605 li a2,1 + 174: 00000597 auipc a1,0x0 + 178: 64c58593 addi a1,a1,1612 # 7c0 + 17c: 4505 li a0,1 } - 17c: 6161 addi sp,sp,80 + 17e: 6161 addi sp,sp,80 write(1, "0", 1); - 17e: a9cd j 670 + 180: a37d j 72e -0000000000000180 <_Z13test_syscallsv>: -// ============================================================= -// 系统调用测试套件 -// ============================================================= +0000000000000182 <_Z13test_syscallsv>: void test_syscalls() { - 180: 1101 addi sp,sp,-32 - 182: 00000697 auipc a3,0x0 - 186: 5a668693 addi a3,a3,1446 # 728 - 18a: ec06 sd ra,24(sp) - 18c: e822 sd s0,16(sp) - 18e: e426 sd s1,8(sp) - 190: 87b6 mv a5,a3 + 182: 1101 addi sp,sp,-32 + 184: 00000697 auipc a3,0x0 + 188: 66468693 addi a3,a3,1636 # 7e8 + 18c: ec06 sd ra,24(sp) + 18e: e822 sd s0,16(sp) + 190: e426 sd s1,8(sp) + 192: 87b6 mv a5,a3 while (s[n]) - 192: 0017c703 lbu a4,1(a5) - 196: 863e mv a2,a5 - 198: 0785 addi a5,a5,1 - 19a: ff65 bnez a4,192 <_Z13test_syscallsv+0x12> + 194: 0017c703 lbu a4,1(a5) + 198: 863e mv a2,a5 + 19a: 0785 addi a5,a5,1 + 19c: ff65 bnez a4,194 <_Z13test_syscallsv+0x12> n++; - 19c: 9e15 subw a2,a2,a3 + 19e: 9e15 subw a2,a2,a3 write(1, s, strlen(s)); - 19e: 2605 addiw a2,a2,1 - 1a0: 00000597 auipc a1,0x0 - 1a4: 58858593 addi a1,a1,1416 # 728 - 1a8: 4505 li a0,1 - 1aa: 4c6000ef jal 670 + 1a0: 2605 addiw a2,a2,1 + 1a2: 00000597 auipc a1,0x0 + 1a6: 64658593 addi a1,a1,1606 # 7e8 + 1aa: 4505 li a0,1 + 1ac: 582000ef jal 72e while (s[n]) - 1ae: 00000697 auipc a3,0x0 - 1b2: 5aa68693 addi a3,a3,1450 # 758 + 1b0: 00000697 auipc a3,0x0 + 1b4: 66868693 addi a3,a3,1640 # 818 write(1, s, strlen(s)); - 1b6: 87b6 mv a5,a3 + 1b8: 87b6 mv a5,a3 while (s[n]) - 1b8: 0017c703 lbu a4,1(a5) - 1bc: 863e mv a2,a5 - 1be: 0785 addi a5,a5,1 - 1c0: ff65 bnez a4,1b8 <_Z13test_syscallsv+0x38> + 1ba: 0017c703 lbu a4,1(a5) + 1be: 863e mv a2,a5 + 1c0: 0785 addi a5,a5,1 + 1c2: ff65 bnez a4,1ba <_Z13test_syscallsv+0x38> n++; - 1c2: 9e15 subw a2,a2,a3 + 1c4: 9e15 subw a2,a2,a3 write(1, s, strlen(s)); - 1c4: 2605 addiw a2,a2,1 - 1c6: 00000597 auipc a1,0x0 - 1ca: 59258593 addi a1,a1,1426 # 758 - 1ce: 4505 li a0,1 - 1d0: 4a0000ef jal 670 + 1c6: 2605 addiw a2,a2,1 + 1c8: 00000597 auipc a1,0x0 + 1cc: 65058593 addi a1,a1,1616 # 818 + 1d0: 4505 li a0,1 + 1d2: 55c000ef jal 72e print("\n=== [Test] Starting System Call Check ===\n"); - // 1. 测试 getpid print("[1/4] Checking getpid()... "); int my_pid = getpid(); - 1d4: 4fc000ef jal 6d0 - 1d8: 842a mv s0,a0 + 1d6: 5b8000ef jal 78e + 1da: 842a mv s0,a0 if (my_pid > 0) - 1da: 2aa05463 blez a0,482 <_Z13test_syscallsv+0x302> - 1de: 00000697 auipc a3,0x0 - 1e2: 59a68693 addi a3,a3,1434 # 778 - 1e6: 87b6 mv a5,a3 + 1dc: 2aa05463 blez a0,484 <_Z13test_syscallsv+0x302> + 1e0: 00000697 auipc a3,0x0 + 1e4: 65868693 addi a3,a3,1624 # 838 + 1e8: 87b6 mv a5,a3 while (s[n]) - 1e8: 0017c703 lbu a4,1(a5) - 1ec: 863e mv a2,a5 - 1ee: 0785 addi a5,a5,1 - 1f0: ff65 bnez a4,1e8 <_Z13test_syscallsv+0x68> + 1ea: 0017c703 lbu a4,1(a5) + 1ee: 863e mv a2,a5 + 1f0: 0785 addi a5,a5,1 + 1f2: ff65 bnez a4,1ea <_Z13test_syscallsv+0x68> n++; - 1f2: 9e15 subw a2,a2,a3 + 1f4: 9e15 subw a2,a2,a3 write(1, s, strlen(s)); - 1f4: 2605 addiw a2,a2,1 - 1f6: 00000597 auipc a1,0x0 - 1fa: 58258593 addi a1,a1,1410 # 778 - 1fe: 4505 li a0,1 - 200: 470000ef jal 670 + 1f6: 2605 addiw a2,a2,1 + 1f8: 00000597 auipc a1,0x0 + 1fc: 64058593 addi a1,a1,1600 # 838 + 200: 4505 li a0,1 + 202: 52c000ef jal 72e { print("PASS (PID="); print_int(my_pid); - 204: 8522 mv a0,s0 - 206: e4fff0ef jal 54 <_Z9print_inti> + 206: 8522 mv a0,s0 + 208: e4fff0ef jal 56 <_Z9print_inti> while (s[n]) - 20a: 00000697 auipc a3,0x0 - 20e: 57e68693 addi a3,a3,1406 # 788 + 20c: 00000697 auipc a3,0x0 + 210: 63c68693 addi a3,a3,1596 # 848 print_int(my_pid); - 212: 87b6 mv a5,a3 + 214: 87b6 mv a5,a3 while (s[n]) - 214: 0017c703 lbu a4,1(a5) - 218: 863e mv a2,a5 - 21a: 0785 addi a5,a5,1 - 21c: ff65 bnez a4,214 <_Z13test_syscallsv+0x94> + 216: 0017c703 lbu a4,1(a5) + 21a: 863e mv a2,a5 + 21c: 0785 addi a5,a5,1 + 21e: ff65 bnez a4,216 <_Z13test_syscallsv+0x94> n++; - 21e: 9e15 subw a2,a2,a3 + 220: 9e15 subw a2,a2,a3 write(1, s, strlen(s)); - 220: 2605 addiw a2,a2,1 - 222: 00000597 auipc a1,0x0 - 226: 56658593 addi a1,a1,1382 # 788 - 22a: 4505 li a0,1 - 22c: 444000ef jal 670 + 222: 2605 addiw a2,a2,1 + 224: 00000597 auipc a1,0x0 + 228: 62458593 addi a1,a1,1572 # 848 + 22c: 4505 li a0,1 + 22e: 500000ef jal 72e while (s[n]) - 230: 00000697 auipc a3,0x0 - 234: 57868693 addi a3,a3,1400 # 7a8 + 232: 00000697 auipc a3,0x0 + 236: 63668693 addi a3,a3,1590 # 868 if (my_pid > 0) - 238: 87b6 mv a5,a3 + 23a: 87b6 mv a5,a3 while (s[n]) - 23a: 0017c703 lbu a4,1(a5) - 23e: 863e mv a2,a5 - 240: 0785 addi a5,a5,1 - 242: ff65 bnez a4,23a <_Z13test_syscallsv+0xba> + 23c: 0017c703 lbu a4,1(a5) + 240: 863e mv a2,a5 + 242: 0785 addi a5,a5,1 + 244: ff65 bnez a4,23c <_Z13test_syscallsv+0xba> n++; - 244: 9e15 subw a2,a2,a3 + 246: 9e15 subw a2,a2,a3 write(1, s, strlen(s)); - 246: 2605 addiw a2,a2,1 - 248: 00000597 auipc a1,0x0 - 24c: 56058593 addi a1,a1,1376 # 7a8 - 250: 4505 li a0,1 - 252: 41e000ef jal 670 + 248: 2605 addiw a2,a2,1 + 24a: 00000597 auipc a1,0x0 + 24e: 61e58593 addi a1,a1,1566 # 868 + 252: 4505 li a0,1 + 254: 4da000ef jal 72e + { print("FAIL (Invalid PID)\n"); } - // 2. 测试 sbrk (内存分配) print("[2/4] Checking sbrk() heap allocation... "); - char *p = sbrk(4096); // 分配 4KB - 256: 6505 lui a0,0x1 - 258: 480000ef jal 6d8 + char *p = sbrk(4096); + 258: 6505 lui a0,0x1 + 25a: 53c000ef jal 796 if (p == (char *)-1) - 25c: 57fd li a5,-1 - char *p = sbrk(4096); // 分配 4KB - 25e: 84aa mv s1,a0 + 25e: 57fd li a5,-1 + char *p = sbrk(4096); + 260: 84aa mv s1,a0 if (p == (char *)-1) - 260: 24f50563 beq a0,a5,4aa <_Z13test_syscallsv+0x32a> + 262: 24f50563 beq a0,a5,4ac <_Z13test_syscallsv+0x32a> + { print("FAIL (sbrk returned error)\n"); } else { - // 写入测试,确保映射了物理页 p[0] = 'A'; - 264: 04100793 li a5,65 - 268: 00f50023 sb a5,0(a0) # 1000 + 266: 04100793 li a5,65 + 26a: 00f50023 sb a5,0(a0) # 1000 p[4095] = 'Z'; - 26c: 6785 lui a5,0x1 - 26e: 97aa add a5,a5,a0 - 270: 00000697 auipc a3,0x0 - 274: 58868693 addi a3,a3,1416 # 7f8 - 278: 05a00713 li a4,90 - 27c: fee78fa3 sb a4,-1(a5) # fff - 280: 87b6 mv a5,a3 + 26e: 6785 lui a5,0x1 + 270: 97aa add a5,a5,a0 + 272: 00000697 auipc a3,0x0 + 276: 64668693 addi a3,a3,1606 # 8b8 + 27a: 05a00713 li a4,90 + 27e: fee78fa3 sb a4,-1(a5) # fff + 282: 87b6 mv a5,a3 while (s[n]) - 282: 0017c703 lbu a4,1(a5) - 286: 863e mv a2,a5 - 288: 0785 addi a5,a5,1 - 28a: ff65 bnez a4,282 <_Z13test_syscallsv+0x102> + 284: 0017c703 lbu a4,1(a5) + 288: 863e mv a2,a5 + 28a: 0785 addi a5,a5,1 + 28c: ff65 bnez a4,284 <_Z13test_syscallsv+0x102> n++; - 28c: 9e15 subw a2,a2,a3 + 28e: 9e15 subw a2,a2,a3 write(1, s, strlen(s)); - 28e: 2605 addiw a2,a2,1 - 290: 00000597 auipc a1,0x0 - 294: 56858593 addi a1,a1,1384 # 7f8 - 298: 4505 li a0,1 - 29a: 3d6000ef jal 670 + 290: 2605 addiw a2,a2,1 + 292: 00000597 auipc a1,0x0 + 296: 62658593 addi a1,a1,1574 # 8b8 + 29a: 4505 li a0,1 + 29c: 492000ef jal 72e if (p[0] == 'A' && p[4095] == 'Z') { print("PASS (Allocated at "); print_hex((uint64)p); - 29e: 8526 mv a0,s1 - 2a0: e45ff0ef jal e4 <_Z9print_hexy> + 2a0: 8526 mv a0,s1 + 2a2: e45ff0ef jal e6 <_Z9print_hexy> while (s[n]) - 2a4: 00000697 auipc a3,0x0 - 2a8: 4e468693 addi a3,a3,1252 # 788 + 2a6: 00000697 auipc a3,0x0 + 2aa: 5a268693 addi a3,a3,1442 # 848 print_hex((uint64)p); - 2ac: 87b6 mv a5,a3 + 2ae: 87b6 mv a5,a3 while (s[n]) - 2ae: 0017c703 lbu a4,1(a5) - 2b2: 863e mv a2,a5 - 2b4: 0785 addi a5,a5,1 - 2b6: ff65 bnez a4,2ae <_Z13test_syscallsv+0x12e> + 2b0: 0017c703 lbu a4,1(a5) + 2b4: 863e mv a2,a5 + 2b6: 0785 addi a5,a5,1 + 2b8: ff65 bnez a4,2b0 <_Z13test_syscallsv+0x12e> n++; - 2b8: 9e15 subw a2,a2,a3 + 2ba: 9e15 subw a2,a2,a3 write(1, s, strlen(s)); - 2ba: 2605 addiw a2,a2,1 - 2bc: 00000597 auipc a1,0x0 - 2c0: 4cc58593 addi a1,a1,1228 # 788 - 2c4: 4505 li a0,1 - 2c6: 3aa000ef jal 670 + 2bc: 2605 addiw a2,a2,1 + 2be: 00000597 auipc a1,0x0 + 2c2: 58a58593 addi a1,a1,1418 # 848 + 2c6: 4505 li a0,1 + 2c8: 466000ef jal 72e while (s[n]) - 2ca: 00000697 auipc a3,0x0 - 2ce: 54668693 addi a3,a3,1350 # 810 + 2cc: 00000697 auipc a3,0x0 + 2d0: 60468693 addi a3,a3,1540 # 8d0 print_hex((uint64)p); - 2d2: 87b6 mv a5,a3 + 2d4: 87b6 mv a5,a3 while (s[n]) - 2d4: 0017c703 lbu a4,1(a5) - 2d8: 863e mv a2,a5 - 2da: 0785 addi a5,a5,1 - 2dc: ff65 bnez a4,2d4 <_Z13test_syscallsv+0x154> + 2d6: 0017c703 lbu a4,1(a5) + 2da: 863e mv a2,a5 + 2dc: 0785 addi a5,a5,1 + 2de: ff65 bnez a4,2d6 <_Z13test_syscallsv+0x154> n++; - 2de: 9e15 subw a2,a2,a3 + 2e0: 9e15 subw a2,a2,a3 write(1, s, strlen(s)); - 2e0: 2605 addiw a2,a2,1 - 2e2: 00000597 auipc a1,0x0 - 2e6: 52e58593 addi a1,a1,1326 # 810 - 2ea: 4505 li a0,1 - 2ec: 384000ef jal 670 + 2e2: 2605 addiw a2,a2,1 + 2e4: 00000597 auipc a1,0x0 + 2e8: 5ec58593 addi a1,a1,1516 # 8d0 + 2ec: 4505 li a0,1 + 2ee: 440000ef jal 72e + print("FAIL (Memory read/write check failed)\n"); } } - // 3. 测试 fork 和 wait print("[3/4] Checking fork() and wait()...\n"); int pid = fork(); - 2f0: 358000ef jal 648 - 2f4: 84aa mv s1,a0 + 2f2: 414000ef jal 706 + 2f6: 84aa mv s1,a0 if (pid < 0) - 2f6: 1c054e63 bltz a0,4d2 <_Z13test_syscallsv+0x352> + 2f8: 1c054e63 bltz a0,4d4 <_Z13test_syscallsv+0x352> { print(" FAIL: fork error\n"); } else if (pid == 0) - 2fa: e179 bnez a0,3c0 <_Z13test_syscallsv+0x240> + 2fc: e179 bnez a0,3c2 <_Z13test_syscallsv+0x240> { - // --- 子进程 --- int child_pid = getpid(); - 2fc: 3d4000ef jal 6d0 - 300: 84aa mv s1,a0 + 2fe: 490000ef jal 78e + 302: 84aa mv s1,a0 if (child_pid == my_pid) - 302: 24a40563 beq s0,a0,54c <_Z13test_syscallsv+0x3cc> + 304: 24a40563 beq s0,a0,54e <_Z13test_syscallsv+0x3cc> while (s[n]) - 306: 00000697 auipc a3,0x0 - 30a: 57a68693 addi a3,a3,1402 # 880 + 308: 00000697 auipc a3,0x0 + 30c: 63868693 addi a3,a3,1592 # 940 if (child_pid == my_pid) - 30e: 87b6 mv a5,a3 + 310: 87b6 mv a5,a3 while (s[n]) - 310: 0017c703 lbu a4,1(a5) - 314: 863e mv a2,a5 - 316: 0785 addi a5,a5,1 - 318: ff65 bnez a4,310 <_Z13test_syscallsv+0x190> + 312: 0017c703 lbu a4,1(a5) + 316: 863e mv a2,a5 + 318: 0785 addi a5,a5,1 + 31a: ff65 bnez a4,312 <_Z13test_syscallsv+0x190> n++; - 31a: 9e15 subw a2,a2,a3 + 31c: 9e15 subw a2,a2,a3 write(1, s, strlen(s)); - 31c: 2605 addiw a2,a2,1 - 31e: 00000597 auipc a1,0x0 - 322: 56258593 addi a1,a1,1378 # 880 - 326: 4505 li a0,1 - 328: 348000ef jal 670 + 31e: 2605 addiw a2,a2,1 + 320: 00000597 auipc a1,0x0 + 324: 62058593 addi a1,a1,1568 # 940 + 328: 4505 li a0,1 + 32a: 404000ef jal 72e { print(" FAIL: Child has same PID as parent\n"); exit(1); } print(" [Child] I am alive. PID="); print_int(child_pid); - 32c: 8526 mv a0,s1 - 32e: d27ff0ef jal 54 <_Z9print_inti> + 32e: 8526 mv a0,s1 + 330: d27ff0ef jal 56 <_Z9print_inti> write(1, s, strlen(s)); - 332: 4605 li a2,1 - 334: 00000597 auipc a1,0x0 - 338: 56c58593 addi a1,a1,1388 # 8a0 - 33c: 4505 li a0,1 - 33e: 332000ef jal 670 + 334: 4605 li a2,1 + 336: 00000597 auipc a1,0x0 + 33a: 62a58593 addi a1,a1,1578 # 960 + 33e: 4505 li a0,1 + 340: 3ee000ef jal 72e while (s[n]) - 342: 00000697 auipc a3,0x0 - 346: 56668693 addi a3,a3,1382 # 8a8 + 344: 00000697 auipc a3,0x0 + 348: 62468693 addi a3,a3,1572 # 968 write(1, s, strlen(s)); - 34a: 87b6 mv a5,a3 + 34c: 87b6 mv a5,a3 while (s[n]) - 34c: 0017c703 lbu a4,1(a5) - 350: 863e mv a2,a5 - 352: 0785 addi a5,a5,1 - 354: ff65 bnez a4,34c <_Z13test_syscallsv+0x1cc> + 34e: 0017c703 lbu a4,1(a5) + 352: 863e mv a2,a5 + 354: 0785 addi a5,a5,1 + 356: ff65 bnez a4,34e <_Z13test_syscallsv+0x1cc> n++; - 356: 9e15 subw a2,a2,a3 + 358: 9e15 subw a2,a2,a3 write(1, s, strlen(s)); - 358: 2605 addiw a2,a2,1 - 35a: 00000597 auipc a1,0x0 - 35e: 54e58593 addi a1,a1,1358 # 8a8 - 362: 4505 li a0,1 - 364: 30c000ef jal 670 + 35a: 2605 addiw a2,a2,1 + 35c: 00000597 auipc a1,0x0 + 360: 60c58593 addi a1,a1,1548 # 968 + 364: 4505 li a0,1 + 366: 3c8000ef jal 72e print("\n"); print(" [Child] Exiting now.\n"); exit(0); - 368: 4501 li a0,0 - 36a: 2e6000ef jal 650 + 36a: 4501 li a0,0 + 36c: 3a2000ef jal 70e while (s[n]) - 36e: 00000697 auipc a3,0x0 - 372: 60a68693 addi a3,a3,1546 # 978 + 370: 00000697 auipc a3,0x0 + 374: 6c868693 addi a3,a3,1736 # a38 print("PASS (Fork/Wait cycle)\n"); } else { print("FAIL (Wait returned "); print_int(waited_pid); - 376: 87b6 mv a5,a3 + 378: 87b6 mv a5,a3 while (s[n]) - 378: 0017c703 lbu a4,1(a5) - 37c: 863e mv a2,a5 - 37e: 0785 addi a5,a5,1 - 380: ff65 bnez a4,378 <_Z13test_syscallsv+0x1f8> + 37a: 0017c703 lbu a4,1(a5) + 37e: 863e mv a2,a5 + 380: 0785 addi a5,a5,1 + 382: ff65 bnez a4,37a <_Z13test_syscallsv+0x1f8> n++; - 382: 9e15 subw a2,a2,a3 + 384: 9e15 subw a2,a2,a3 write(1, s, strlen(s)); - 384: 2605 addiw a2,a2,1 - 386: 00000597 auipc a1,0x0 - 38a: 5f258593 addi a1,a1,1522 # 978 - 38e: 4505 li a0,1 - 390: 2e0000ef jal 670 + 386: 2605 addiw a2,a2,1 + 388: 00000597 auipc a1,0x0 + 38c: 6b058593 addi a1,a1,1712 # a38 + 390: 4505 li a0,1 + 392: 39c000ef jal 72e while (s[n]) - 394: 00000697 auipc a3,0x0 - 398: 61468693 addi a3,a3,1556 # 9a8 + 396: 00000697 auipc a3,0x0 + 39a: 6d268693 addi a3,a3,1746 # a68 write(1, s, strlen(s)); - 39c: 87b6 mv a5,a3 + 39e: 87b6 mv a5,a3 while (s[n]) - 39e: 0017c703 lbu a4,1(a5) - 3a2: 863e mv a2,a5 - 3a4: 0785 addi a5,a5,1 - 3a6: ff65 bnez a4,39e <_Z13test_syscallsv+0x21e> + 3a0: 0017c703 lbu a4,1(a5) + 3a4: 863e mv a2,a5 + 3a6: 0785 addi a5,a5,1 + 3a8: ff65 bnez a4,3a0 <_Z13test_syscallsv+0x21e> + } - // 4. 测试 write (如果是能看到这些输出,说明 write 已经正常了) print("[4/4] Checking write()... PASS (Self-evident)\n"); print("=== [Test] All Tests Finished ===\n"); } - 3a8: 6442 ld s0,16(sp) - 3aa: 60e2 ld ra,24(sp) - 3ac: 64a2 ld s1,8(sp) + 3aa: 6442 ld s0,16(sp) + 3ac: 60e2 ld ra,24(sp) + 3ae: 64a2 ld s1,8(sp) n++; - 3ae: 9e15 subw a2,a2,a3 + 3b0: 9e15 subw a2,a2,a3 write(1, s, strlen(s)); - 3b0: 2605 addiw a2,a2,1 - 3b2: 00000597 auipc a1,0x0 - 3b6: 5f658593 addi a1,a1,1526 # 9a8 - 3ba: 4505 li a0,1 + 3b2: 2605 addiw a2,a2,1 + 3b4: 00000597 auipc a1,0x0 + 3b8: 6b458593 addi a1,a1,1716 # a68 + 3bc: 4505 li a0,1 } - 3bc: 6105 addi sp,sp,32 + 3be: 6105 addi sp,sp,32 write(1, s, strlen(s)); - 3be: ac4d j 670 - 3c0: 00000697 auipc a3,0x0 - 3c4: 50868693 addi a3,a3,1288 # 8c8 + 3c0: a6bd j 72e + 3c2: 00000697 auipc a3,0x0 + 3c6: 5c668693 addi a3,a3,1478 # 988 else if (pid == 0) - 3c8: 87b6 mv a5,a3 + 3ca: 87b6 mv a5,a3 while (s[n]) - 3ca: 0017c703 lbu a4,1(a5) - 3ce: 863e mv a2,a5 - 3d0: 0785 addi a5,a5,1 - 3d2: ff65 bnez a4,3ca <_Z13test_syscallsv+0x24a> + 3cc: 0017c703 lbu a4,1(a5) + 3d0: 863e mv a2,a5 + 3d2: 0785 addi a5,a5,1 + 3d4: ff65 bnez a4,3cc <_Z13test_syscallsv+0x24a> n++; - 3d4: 9e15 subw a2,a2,a3 + 3d6: 9e15 subw a2,a2,a3 write(1, s, strlen(s)); - 3d6: 2605 addiw a2,a2,1 - 3d8: 00000597 auipc a1,0x0 - 3dc: 4f058593 addi a1,a1,1264 # 8c8 - 3e0: 4505 li a0,1 - 3e2: 28e000ef jal 670 + 3d8: 2605 addiw a2,a2,1 + 3da: 00000597 auipc a1,0x0 + 3de: 5ae58593 addi a1,a1,1454 # 988 + 3e2: 4505 li a0,1 + 3e4: 34a000ef jal 72e print_int(pid); - 3e6: 8526 mv a0,s1 - 3e8: c6dff0ef jal 54 <_Z9print_inti> + 3e8: 8526 mv a0,s1 + 3ea: c6dff0ef jal 56 <_Z9print_inti> write(1, s, strlen(s)); - 3ec: 4605 li a2,1 - 3ee: 00000597 auipc a1,0x0 - 3f2: 4b258593 addi a1,a1,1202 # 8a0 - 3f6: 4505 li a0,1 - 3f8: 278000ef jal 670 + 3ee: 4605 li a2,1 + 3f0: 00000597 auipc a1,0x0 + 3f4: 57058593 addi a1,a1,1392 # 960 + 3f8: 4505 li a0,1 + 3fa: 334000ef jal 72e while (s[n]) - 3fc: 00000697 auipc a3,0x0 - 400: 4f468693 addi a3,a3,1268 # 8f0 + 3fe: 00000697 auipc a3,0x0 + 402: 5b268693 addi a3,a3,1458 # 9b0 write(1, s, strlen(s)); - 404: 87b6 mv a5,a3 + 406: 87b6 mv a5,a3 while (s[n]) - 406: 0017c703 lbu a4,1(a5) - 40a: 863e mv a2,a5 - 40c: 0785 addi a5,a5,1 - 40e: ff65 bnez a4,406 <_Z13test_syscallsv+0x286> + 408: 0017c703 lbu a4,1(a5) + 40c: 863e mv a2,a5 + 40e: 0785 addi a5,a5,1 + 410: ff65 bnez a4,408 <_Z13test_syscallsv+0x286> n++; - 410: 9e15 subw a2,a2,a3 + 412: 9e15 subw a2,a2,a3 write(1, s, strlen(s)); - 412: 2605 addiw a2,a2,1 - 414: 00000597 auipc a1,0x0 - 418: 4dc58593 addi a1,a1,1244 # 8f0 - 41c: 4505 li a0,1 - 41e: 252000ef jal 670 + 414: 2605 addiw a2,a2,1 + 416: 00000597 auipc a1,0x0 + 41a: 59a58593 addi a1,a1,1434 # 9b0 + 41e: 4505 li a0,1 + 420: 30e000ef jal 72e int waited_pid = wait(0); - 422: 4501 li a0,0 - 424: 234000ef jal 658 - 428: 00000697 auipc a3,0x0 - 42c: 53868693 addi a3,a3,1336 # 960 - 430: 842a mv s0,a0 + 424: 4501 li a0,0 + 426: 2f0000ef jal 716 + 42a: 00000697 auipc a3,0x0 + 42e: 5f668693 addi a3,a3,1526 # a20 + 432: 842a mv s0,a0 if (waited_pid == pid) - 432: 87b6 mv a5,a3 - 434: 0ca48363 beq s1,a0,4fa <_Z13test_syscallsv+0x37a> + 434: 87b6 mv a5,a3 + 436: 0ca48363 beq s1,a0,4fc <_Z13test_syscallsv+0x37a> while (s[n]) - 438: 0017c703 lbu a4,1(a5) - 43c: 863e mv a2,a5 - 43e: 0785 addi a5,a5,1 - 440: ff65 bnez a4,438 <_Z13test_syscallsv+0x2b8> + 43a: 0017c703 lbu a4,1(a5) + 43e: 863e mv a2,a5 + 440: 0785 addi a5,a5,1 + 442: ff65 bnez a4,43a <_Z13test_syscallsv+0x2b8> n++; - 442: 9e15 subw a2,a2,a3 + 444: 9e15 subw a2,a2,a3 write(1, s, strlen(s)); - 444: 2605 addiw a2,a2,1 - 446: 00000597 auipc a1,0x0 - 44a: 51a58593 addi a1,a1,1306 # 960 - 44e: 4505 li a0,1 - 450: 220000ef jal 670 + 446: 2605 addiw a2,a2,1 + 448: 00000597 auipc a1,0x0 + 44c: 5d858593 addi a1,a1,1496 # a20 + 450: 4505 li a0,1 + 452: 2dc000ef jal 72e print_int(waited_pid); - 454: 8522 mv a0,s0 - 456: bffff0ef jal 54 <_Z9print_inti> + 456: 8522 mv a0,s0 + 458: bffff0ef jal 56 <_Z9print_inti> while (s[n]) - 45a: 00000697 auipc a3,0x0 - 45e: 32e68693 addi a3,a3,814 # 788 + 45c: 00000697 auipc a3,0x0 + 460: 3ec68693 addi a3,a3,1004 # 848 print_int(waited_pid); - 462: 87b6 mv a5,a3 + 464: 87b6 mv a5,a3 while (s[n]) - 464: 0017c703 lbu a4,1(a5) - 468: 863e mv a2,a5 - 46a: 0785 addi a5,a5,1 - 46c: ff65 bnez a4,464 <_Z13test_syscallsv+0x2e4> + 466: 0017c703 lbu a4,1(a5) + 46a: 863e mv a2,a5 + 46c: 0785 addi a5,a5,1 + 46e: ff65 bnez a4,466 <_Z13test_syscallsv+0x2e4> n++; - 46e: 9e15 subw a2,a2,a3 + 470: 9e15 subw a2,a2,a3 write(1, s, strlen(s)); - 470: 2605 addiw a2,a2,1 - 472: 00000597 auipc a1,0x0 - 476: 31658593 addi a1,a1,790 # 788 - 47a: 4505 li a0,1 - 47c: 1f4000ef jal 670 + 472: 2605 addiw a2,a2,1 + 474: 00000597 auipc a1,0x0 + 478: 3d458593 addi a1,a1,980 # 848 + 47c: 4505 li a0,1 + 47e: 2b0000ef jal 72e } - 480: b5fd j 36e <_Z13test_syscallsv+0x1ee> - 482: 00000697 auipc a3,0x0 - 486: 30e68693 addi a3,a3,782 # 790 + 482: b5fd j 370 <_Z13test_syscallsv+0x1ee> + 484: 00000697 auipc a3,0x0 + 488: 3cc68693 addi a3,a3,972 # 850 if (my_pid > 0) - 48a: 87b6 mv a5,a3 + 48c: 87b6 mv a5,a3 while (s[n]) - 48c: 0017c703 lbu a4,1(a5) - 490: 863e mv a2,a5 - 492: 0785 addi a5,a5,1 - 494: ff65 bnez a4,48c <_Z13test_syscallsv+0x30c> + 48e: 0017c703 lbu a4,1(a5) + 492: 863e mv a2,a5 + 494: 0785 addi a5,a5,1 + 496: ff65 bnez a4,48e <_Z13test_syscallsv+0x30c> n++; - 496: 9e15 subw a2,a2,a3 + 498: 9e15 subw a2,a2,a3 write(1, s, strlen(s)); - 498: 2605 addiw a2,a2,1 - 49a: 00000597 auipc a1,0x0 - 49e: 2f658593 addi a1,a1,758 # 790 - 4a2: 4505 li a0,1 - 4a4: 1cc000ef jal 670 + 49a: 2605 addiw a2,a2,1 + 49c: 00000597 auipc a1,0x0 + 4a0: 3b458593 addi a1,a1,948 # 850 + 4a4: 4505 li a0,1 + 4a6: 288000ef jal 72e } - 4a8: b361 j 230 <_Z13test_syscallsv+0xb0> - 4aa: 00000697 auipc a3,0x0 - 4ae: 32e68693 addi a3,a3,814 # 7d8 + 4aa: b361 j 232 <_Z13test_syscallsv+0xb0> + 4ac: 00000697 auipc a3,0x0 + 4b0: 3ec68693 addi a3,a3,1004 # 898 if (p == (char *)-1) - 4b2: 87b6 mv a5,a3 + 4b4: 87b6 mv a5,a3 while (s[n]) - 4b4: 0017c703 lbu a4,1(a5) - 4b8: 863e mv a2,a5 - 4ba: 0785 addi a5,a5,1 - 4bc: ff65 bnez a4,4b4 <_Z13test_syscallsv+0x334> + 4b6: 0017c703 lbu a4,1(a5) + 4ba: 863e mv a2,a5 + 4bc: 0785 addi a5,a5,1 + 4be: ff65 bnez a4,4b6 <_Z13test_syscallsv+0x334> n++; - 4be: 9e15 subw a2,a2,a3 + 4c0: 9e15 subw a2,a2,a3 write(1, s, strlen(s)); - 4c0: 2605 addiw a2,a2,1 - 4c2: 00000597 auipc a1,0x0 - 4c6: 31658593 addi a1,a1,790 # 7d8 - 4ca: 4505 li a0,1 - 4cc: 1a4000ef jal 670 + 4c2: 2605 addiw a2,a2,1 + 4c4: 00000597 auipc a1,0x0 + 4c8: 3d458593 addi a1,a1,980 # 898 + 4cc: 4505 li a0,1 + 4ce: 260000ef jal 72e } - 4d0: bbed j 2ca <_Z13test_syscallsv+0x14a> - 4d2: 00000697 auipc a3,0x0 - 4d6: 36668693 addi a3,a3,870 # 838 + 4d2: bbed j 2cc <_Z13test_syscallsv+0x14a> + 4d4: 00000697 auipc a3,0x0 + 4d8: 42468693 addi a3,a3,1060 # 8f8 if (pid < 0) - 4da: 87b6 mv a5,a3 + 4dc: 87b6 mv a5,a3 while (s[n]) - 4dc: 0017c703 lbu a4,1(a5) - 4e0: 863e mv a2,a5 - 4e2: 0785 addi a5,a5,1 - 4e4: ff65 bnez a4,4dc <_Z13test_syscallsv+0x35c> + 4de: 0017c703 lbu a4,1(a5) + 4e2: 863e mv a2,a5 + 4e4: 0785 addi a5,a5,1 + 4e6: ff65 bnez a4,4de <_Z13test_syscallsv+0x35c> n++; - 4e6: 9e15 subw a2,a2,a3 + 4e8: 9e15 subw a2,a2,a3 write(1, s, strlen(s)); - 4e8: 2605 addiw a2,a2,1 - 4ea: 00000597 auipc a1,0x0 - 4ee: 34e58593 addi a1,a1,846 # 838 - 4f2: 4505 li a0,1 - 4f4: 17c000ef jal 670 + 4ea: 2605 addiw a2,a2,1 + 4ec: 00000597 auipc a1,0x0 + 4f0: 40c58593 addi a1,a1,1036 # 8f8 + 4f4: 4505 li a0,1 + 4f6: 238000ef jal 72e } - 4f8: bd9d j 36e <_Z13test_syscallsv+0x1ee> - 4fa: 00000617 auipc a2,0x0 - 4fe: 41e60613 addi a2,a2,1054 # 918 + 4fa: bd9d j 370 <_Z13test_syscallsv+0x1ee> + 4fc: 00000617 auipc a2,0x0 + 500: 4dc60613 addi a2,a2,1244 # 9d8 if (waited_pid == pid) - 502: 87b2 mv a5,a2 + 504: 87b2 mv a5,a2 while (s[n]) - 504: 0017c703 lbu a4,1(a5) - 508: 86be mv a3,a5 - 50a: 0785 addi a5,a5,1 - 50c: ff65 bnez a4,504 <_Z13test_syscallsv+0x384> + 506: 0017c703 lbu a4,1(a5) + 50a: 86be mv a3,a5 + 50c: 0785 addi a5,a5,1 + 50e: ff65 bnez a4,506 <_Z13test_syscallsv+0x384> n++; - 50e: 40c6863b subw a2,a3,a2 + 510: 40c6863b subw a2,a3,a2 write(1, s, strlen(s)); - 512: 2605 addiw a2,a2,1 - 514: 00000597 auipc a1,0x0 - 518: 40458593 addi a1,a1,1028 # 918 - 51c: 4505 li a0,1 - 51e: 152000ef jal 670 + 514: 2605 addiw a2,a2,1 + 516: 00000597 auipc a1,0x0 + 51a: 4c258593 addi a1,a1,1218 # 9d8 + 51e: 4505 li a0,1 + 520: 20e000ef jal 72e while (s[n]) - 522: 00000617 auipc a2,0x0 - 526: 42660613 addi a2,a2,1062 # 948 + 524: 00000617 auipc a2,0x0 + 528: 4e460613 addi a2,a2,1252 # a08 write(1, s, strlen(s)); - 52a: 87b2 mv a5,a2 + 52c: 87b2 mv a5,a2 while (s[n]) - 52c: 0017c703 lbu a4,1(a5) - 530: 86be mv a3,a5 - 532: 0785 addi a5,a5,1 - 534: ff65 bnez a4,52c <_Z13test_syscallsv+0x3ac> + 52e: 0017c703 lbu a4,1(a5) + 532: 86be mv a3,a5 + 534: 0785 addi a5,a5,1 + 536: ff65 bnez a4,52e <_Z13test_syscallsv+0x3ac> n++; - 536: 40c6863b subw a2,a3,a2 + 538: 40c6863b subw a2,a3,a2 write(1, s, strlen(s)); - 53a: 2605 addiw a2,a2,1 - 53c: 00000597 auipc a1,0x0 - 540: 40c58593 addi a1,a1,1036 # 948 - 544: 4505 li a0,1 - 546: 12a000ef jal 670 + 53c: 2605 addiw a2,a2,1 + 53e: 00000597 auipc a1,0x0 + 542: 4ca58593 addi a1,a1,1226 # a08 + 546: 4505 li a0,1 + 548: 1e6000ef jal 72e } - 54a: b515 j 36e <_Z13test_syscallsv+0x1ee> - 54c: 00000617 auipc a2,0x0 - 550: 30460613 addi a2,a2,772 # 850 + 54c: b515 j 370 <_Z13test_syscallsv+0x1ee> + 54e: 00000617 auipc a2,0x0 + 552: 3c260613 addi a2,a2,962 # 910 if (child_pid == my_pid) - 554: 87b2 mv a5,a2 + 556: 87b2 mv a5,a2 while (s[n]) - 556: 0017c703 lbu a4,1(a5) - 55a: 86be mv a3,a5 - 55c: 0785 addi a5,a5,1 - 55e: ff65 bnez a4,556 <_Z13test_syscallsv+0x3d6> + 558: 0017c703 lbu a4,1(a5) + 55c: 86be mv a3,a5 + 55e: 0785 addi a5,a5,1 + 560: ff65 bnez a4,558 <_Z13test_syscallsv+0x3d6> n++; - 560: 40c6863b subw a2,a3,a2 + 562: 40c6863b subw a2,a3,a2 write(1, s, strlen(s)); - 564: 2605 addiw a2,a2,1 - 566: 00000597 auipc a1,0x0 - 56a: 2ea58593 addi a1,a1,746 # 850 - 56e: 4505 li a0,1 - 570: 100000ef jal 670 + 566: 2605 addiw a2,a2,1 + 568: 00000597 auipc a1,0x0 + 56c: 3a858593 addi a1,a1,936 # 910 + 570: 4505 li a0,1 + 572: 1bc000ef jal 72e exit(1); - 574: 4505 li a0,1 - 576: 0da000ef jal 650 - 57a: b371 j 306 <_Z13test_syscallsv+0x186> + 576: 4505 li a0,1 + 578: 196000ef jal 70e + 57c: b371 j 308 <_Z13test_syscallsv+0x186> + +000000000000057e
: -000000000000057c
: -// ============================================================= -// Shell 主循环 -// ============================================================= int main() { - 57c: 715d addi sp,sp,-80 - print("\n[Lume Shell] Ready.\n"); - 57e: 00000517 auipc a0,0x0 - 582: 45250513 addi a0,a0,1106 # 9d0 + 57e: 7119 addi sp,sp,-128 + print("\n[Lume Shell] Init process started.\n"); + 580: 00000517 auipc a0,0x0 + 584: 51050513 addi a0,a0,1296 # a90 { - 586: e486 sd ra,72(sp) - 588: e0a2 sd s0,64(sp) - 58a: fc26 sd s1,56(sp) - 58c: f84a sd s2,48(sp) - 58e: f44e sd s3,40(sp) - 590: f052 sd s4,32(sp) - 592: ec56 sd s5,24(sp) - 594: e85a sd s6,16(sp) - print("\n[Lume Shell] Ready.\n"); - 596: a99ff0ef jal 2e <_Z5printPKc> + 588: fc86 sd ra,120(sp) + 58a: f8a2 sd s0,112(sp) + 58c: f4a6 sd s1,104(sp) + 58e: f0ca sd s2,96(sp) + 590: ecce sd s3,88(sp) + 592: e8d2 sd s4,80(sp) + 594: e4d6 sd s5,72(sp) + 596: e0da sd s6,64(sp) + print("\n[Lume Shell] Init process started.\n"); + 598: a97ff0ef jal 2e <_Z5printPKc> + print("[Test] Opening test.txt...\n"); + 59c: 00000517 auipc a0,0x0 + 5a0: 51c50513 addi a0,a0,1308 # ab8 + 5a4: a8bff0ef jal 2e <_Z5printPKc> + int fd = open("test.txt", O_RDONLY); + 5a8: 4581 li a1,0 + 5aa: 00000517 auipc a0,0x0 + 5ae: 52e50513 addi a0,a0,1326 # ad8 + 5b2: 19c000ef jal 74e + if (fd < 0) + 5b6: 14054063 bltz a0,6f6 + 5ba: 84aa mv s1,a0 + { + print("[Test] Open failed (Is test.txt in fs.img?)\n"); + } + else + { + print("[Test] Open success! fd="); + 5bc: 00000517 auipc a0,0x0 + 5c0: 55c50513 addi a0,a0,1372 # b18 + 5c4: a6bff0ef jal 2e <_Z5printPKc> + print_int(fd); + 5c8: 8526 mv a0,s1 + 5ca: a8dff0ef jal 56 <_Z9print_inti> + print("\n"); + 5ce: 00000517 auipc a0,0x0 + 5d2: 39250513 addi a0,a0,914 # 960 + 5d6: a59ff0ef jal 2e <_Z5printPKc> + + char buf[64]; + int n = read(fd, buf, 63); + 5da: 840a mv s0,sp + 5dc: 03f00613 li a2,63 + 5e0: 85a2 mv a1,s0 + 5e2: 8526 mv a0,s1 + 5e4: 142000ef jal 726 + 5e8: 892a mv s2,a0 + if (n > 0) + 5ea: 0ca05663 blez a0,6b6 + { + buf[n] = 0; + 5ee: 04050793 addi a5,a0,64 + 5f2: 00278933 add s2,a5,sp + print("[Test] Read content:\n---\n"); + 5f6: 00000517 auipc a0,0x0 + 5fa: 54250513 addi a0,a0,1346 # b38 + buf[n] = 0; + 5fe: fc090023 sb zero,-64(s2) + print("[Test] Read content:\n---\n"); + 602: a2dff0ef jal 2e <_Z5printPKc> + print(buf); + 606: 8522 mv a0,s0 + 608: a27ff0ef jal 2e <_Z5printPKc> + print("\n---\n"); + 60c: 00000517 auipc a0,0x0 + 610: 54c50513 addi a0,a0,1356 # b58 + 614: a1bff0ef jal 2e <_Z5printPKc> + { + print("[Test] Read returned "); + print_int(n); + print("\n"); + } + close(fd); + 618: 8526 mv a0,s1 + 61a: 11c000ef jal 736 + print("[Test] File closed.\n"); + 61e: 00000517 auipc a0,0x0 + 622: 55a50513 addi a0,a0,1370 # b78 + 626: a09ff0ef jal 2e <_Z5printPKc> + } + + + print("Commands:\n"); - 59a: 00000517 auipc a0,0x0 - 59e: 44e50513 addi a0,a0,1102 # 9e8 - 5a2: a8dff0ef jal 2e <_Z5printPKc> + 62a: 00000517 auipc a0,0x0 + 62e: 56650513 addi a0,a0,1382 # b90 + 632: 9fdff0ef jal 2e <_Z5printPKc> print(" s: Run System Call Tests (fork, wait, mm)\n"); - 5a6: 00000517 auipc a0,0x0 - 5aa: 45250513 addi a0,a0,1106 # 9f8 - 5ae: a81ff0ef jal 2e <_Z5printPKc> + 636: 00000517 auipc a0,0x0 + 63a: 56a50513 addi a0,a0,1386 # ba0 + 63e: 9f1ff0ef jal 2e <_Z5printPKc> print(" t: Run Disk Driver Test (VirtIO)\n"); - 5b2: 00000517 auipc a0,0x0 - 5b6: 47650513 addi a0,a0,1142 # a28 - 5ba: 00000b17 auipc s6,0x0 - 5be: 49eb0b13 addi s6,s6,1182 # a58 + 642: 00000517 auipc a0,0x0 + 646: 58e50513 addi a0,a0,1422 # bd0 + 64a: 00000b17 auipc s6,0x0 + 64e: 5b6b0b13 addi s6,s6,1462 # c00 n++; - 5c2: 4a85 li s5,1 + 652: 4a85 li s5,1 print(" t: Run Disk Driver Test (VirtIO)\n"); - 5c4: a6bff0ef jal 2e <_Z5printPKc> - 5c8: 848a mv s1,sp + 654: 9dbff0ef jal 2e <_Z5printPKc> while (1) { char buf[16]; write(1, "$ ", 2); - 5ca: 00000417 auipc s0,0x0 - 5ce: 48640413 addi s0,s0,1158 # a50 + 658: 00000497 auipc s1,0x0 + 65c: 5a048493 addi s1,s1,1440 # bf8 int n = read(0, buf, sizeof(buf)); if (n <= 0) continue; if (buf[0] == 's') - 5d2: 07300913 li s2,115 + 660: 07300913 li s2,115 { test_syscalls(); } else if (buf[0] == 't') - 5d6: 07400993 li s3,116 + 664: 07400993 li s3,116 disk_test(); exit(0); } wait(0); } else if (buf[0] != '\n') - 5da: 4a29 li s4,10 + 668: 4a29 li s4,10 n++; - 5dc: 416a8abb subw s5,s5,s6 + 66a: 416a8abb subw s5,s5,s6 write(1, "$ ", 2); - 5e0: 4609 li a2,2 - 5e2: 85a2 mv a1,s0 - 5e4: 4505 li a0,1 - 5e6: 08a000ef jal 670 + 66e: 4609 li a2,2 + 670: 85a6 mv a1,s1 + 672: 4505 li a0,1 + 674: 0ba000ef jal 72e int n = read(0, buf, sizeof(buf)); - 5ea: 4641 li a2,16 - 5ec: 85a6 mv a1,s1 - 5ee: 4501 li a0,0 - 5f0: 078000ef jal 668 + 678: 4641 li a2,16 + 67a: 85a2 mv a1,s0 + 67c: 4501 li a0,0 + 67e: 0a8000ef jal 726 if (n <= 0) - 5f4: fea056e3 blez a0,5e0 + 682: fea056e3 blez a0,66e if (buf[0] == 's') - 5f8: 00014783 lbu a5,0(sp) - 5fc: 03278663 beq a5,s2,628 + 686: 00014783 lbu a5,0(sp) + 68a: 05278663 beq a5,s2,6d6 else if (buf[0] == 't') - 600: 03378763 beq a5,s3,62e + 68e: 05378763 beq a5,s3,6dc else if (buf[0] != '\n') - 604: fd478ee3 beq a5,s4,5e0 - 608: 00000797 auipc a5,0x0 - 60c: 45078793 addi a5,a5,1104 # a58 + 692: fd478ee3 beq a5,s4,66e + 696: 00000797 auipc a5,0x0 + 69a: 56a78793 addi a5,a5,1386 # c00 while (s[n]) - 610: 0017c703 lbu a4,1(a5) - 614: 863e mv a2,a5 - 616: 0785 addi a5,a5,1 - 618: ff65 bnez a4,610 + 69e: 0017c703 lbu a4,1(a5) + 6a2: 863e mv a2,a5 + 6a4: 0785 addi a5,a5,1 + 6a6: ff65 bnez a4,69e write(1, s, strlen(s)); - 61a: 00ca863b addw a2,s5,a2 - 61e: 85da mv a1,s6 - 620: 4505 li a0,1 - 622: 04e000ef jal 670 + 6a8: 00ca863b addw a2,s5,a2 + 6ac: 85da mv a1,s6 + 6ae: 4505 li a0,1 + 6b0: 07e000ef jal 72e } - 626: bf6d j 5e0 + 6b4: bf6d j 66e + print("[Test] Read returned "); + 6b6: 00000517 auipc a0,0x0 + 6ba: 4aa50513 addi a0,a0,1194 # b60 + 6be: 971ff0ef jal 2e <_Z5printPKc> + print_int(n); + 6c2: 854a mv a0,s2 + 6c4: 993ff0ef jal 56 <_Z9print_inti> + print("\n"); + 6c8: 00000517 auipc a0,0x0 + 6cc: 29850513 addi a0,a0,664 # 960 + 6d0: 95fff0ef jal 2e <_Z5printPKc> + 6d4: b791 j 618 test_syscalls(); - 628: b59ff0ef jal 180 <_Z13test_syscallsv> - 62c: bf55 j 5e0 + 6d6: aadff0ef jal 182 <_Z13test_syscallsv> + 6da: bf51 j 66e if (fork() == 0) - 62e: 01a000ef jal 648 - 632: c509 beqz a0,63c + 6dc: 02a000ef jal 706 + 6e0: c509 beqz a0,6ea wait(0); - 634: 4501 li a0,0 - 636: 022000ef jal 658 - 63a: b75d j 5e0 + 6e2: 4501 li a0,0 + 6e4: 032000ef jal 716 + 6e8: b759 j 66e disk_test(); - 63c: 0bc000ef jal 6f8 + 6ea: 0cc000ef jal 7b6 exit(0); - 640: 4501 li a0,0 - 642: 00e000ef jal 650 - 646: b7fd j 634 + 6ee: 4501 li a0,0 + 6f0: 01e000ef jal 70e + 6f4: b7fd j 6e2 + print("[Test] Open failed (Is test.txt in fs.img?)\n"); + 6f6: 00000517 auipc a0,0x0 + 6fa: 3f250513 addi a0,a0,1010 # ae8 + 6fe: 931ff0ef jal 2e <_Z5printPKc> + 702: 840a mv s0,sp + 704: b71d j 62a -0000000000000648 : +0000000000000706 : name: \ li a7, SYS_ ## name; \ ecall; \ ret SYSCALL(fork) - 648: 4889 li a7,2 - 64a: 00000073 ecall - 64e: 8082 ret + 706: 4889 li a7,2 + 708: 00000073 ecall + 70c: 8082 ret -0000000000000650 : +000000000000070e : SYSCALL(exit) - 650: 488d li a7,3 - 652: 00000073 ecall - 656: 8082 ret + 70e: 488d li a7,3 + 710: 00000073 ecall + 714: 8082 ret -0000000000000658 : +0000000000000716 : SYSCALL(wait) - 658: 4891 li a7,4 - 65a: 00000073 ecall - 65e: 8082 ret + 716: 4891 li a7,4 + 718: 00000073 ecall + 71c: 8082 ret -0000000000000660 : +000000000000071e : SYSCALL(pipe) - 660: 4895 li a7,5 - 662: 00000073 ecall - 666: 8082 ret + 71e: 4895 li a7,5 + 720: 00000073 ecall + 724: 8082 ret -0000000000000668 : +0000000000000726 : SYSCALL(read) - 668: 4899 li a7,6 - 66a: 00000073 ecall - 66e: 8082 ret + 726: 4899 li a7,6 + 728: 00000073 ecall + 72c: 8082 ret -0000000000000670 : +000000000000072e : SYSCALL(write) - 670: 48c5 li a7,17 - 672: 00000073 ecall - 676: 8082 ret + 72e: 48c5 li a7,17 + 730: 00000073 ecall + 734: 8082 ret -0000000000000678 : +0000000000000736 : SYSCALL(close) - 678: 48d9 li a7,22 - 67a: 00000073 ecall - 67e: 8082 ret + 736: 48d9 li a7,22 + 738: 00000073 ecall + 73c: 8082 ret -0000000000000680 : +000000000000073e : SYSCALL(kill) - 680: 489d li a7,7 - 682: 00000073 ecall - 686: 8082 ret + 73e: 489d li a7,7 + 740: 00000073 ecall + 744: 8082 ret -0000000000000688 : +0000000000000746 : SYSCALL(exec) - 688: 48a1 li a7,8 - 68a: 00000073 ecall - 68e: 8082 ret + 746: 48a1 li a7,8 + 748: 00000073 ecall + 74c: 8082 ret -0000000000000690 : +000000000000074e : SYSCALL(open) - 690: 48c1 li a7,16 - 692: 00000073 ecall - 696: 8082 ret + 74e: 48c1 li a7,16 + 750: 00000073 ecall + 754: 8082 ret -0000000000000698 : +0000000000000756 : SYSCALL(mknod) - 698: 48c9 li a7,18 - 69a: 00000073 ecall - 69e: 8082 ret + 756: 48c9 li a7,18 + 758: 00000073 ecall + 75c: 8082 ret -00000000000006a0 : +000000000000075e : SYSCALL(unlink) - 6a0: 48cd li a7,19 - 6a2: 00000073 ecall - 6a6: 8082 ret + 75e: 48cd li a7,19 + 760: 00000073 ecall + 764: 8082 ret -00000000000006a8 : +0000000000000766 : SYSCALL(fstat) - 6a8: 48a5 li a7,9 - 6aa: 00000073 ecall - 6ae: 8082 ret + 766: 48a5 li a7,9 + 768: 00000073 ecall + 76c: 8082 ret -00000000000006b0 : +000000000000076e : SYSCALL(link) - 6b0: 48d1 li a7,20 - 6b2: 00000073 ecall - 6b6: 8082 ret + 76e: 48d1 li a7,20 + 770: 00000073 ecall + 774: 8082 ret -00000000000006b8 : +0000000000000776 : SYSCALL(mkdir) - 6b8: 48d5 li a7,21 - 6ba: 00000073 ecall - 6be: 8082 ret + 776: 48d5 li a7,21 + 778: 00000073 ecall + 77c: 8082 ret -00000000000006c0 : +000000000000077e : SYSCALL(chdir) - 6c0: 48a9 li a7,10 - 6c2: 00000073 ecall - 6c6: 8082 ret + 77e: 48a9 li a7,10 + 780: 00000073 ecall + 784: 8082 ret -00000000000006c8 : +0000000000000786 : SYSCALL(dup) - 6c8: 48ad li a7,11 - 6ca: 00000073 ecall - 6ce: 8082 ret + 786: 48ad li a7,11 + 788: 00000073 ecall + 78c: 8082 ret -00000000000006d0 : +000000000000078e : SYSCALL(getpid) - 6d0: 48b1 li a7,12 - 6d2: 00000073 ecall - 6d6: 8082 ret + 78e: 48b1 li a7,12 + 790: 00000073 ecall + 794: 8082 ret -00000000000006d8 : +0000000000000796 : SYSCALL(sbrk) - 6d8: 48b5 li a7,13 - 6da: 00000073 ecall - 6de: 8082 ret + 796: 48b5 li a7,13 + 798: 00000073 ecall + 79c: 8082 ret -00000000000006e0 : +000000000000079e : SYSCALL(sleep) - 6e0: 48b9 li a7,14 - 6e2: 00000073 ecall - 6e6: 8082 ret + 79e: 48b9 li a7,14 + 7a0: 00000073 ecall + 7a4: 8082 ret -00000000000006e8 : +00000000000007a6 : SYSCALL(uptime) - 6e8: 48bd li a7,15 - 6ea: 00000073 ecall - 6ee: 8082 ret + 7a6: 48bd li a7,15 + 7a8: 00000073 ecall + 7ac: 8082 ret -00000000000006f0 : +00000000000007ae : SYSCALL(putc) - 6f0: 4885 li a7,1 - 6f2: 00000073 ecall - 6f6: 8082 ret + 7ae: 4885 li a7,1 + 7b0: 00000073 ecall + 7b4: 8082 ret -00000000000006f8 : - 6f8: 48dd li a7,23 - 6fa: 00000073 ecall - 6fe: 8082 ret +00000000000007b6 : + 7b6: 48dd li a7,23 + 7b8: 00000073 ecall + 7bc: 8082 ret diff --git a/build/user/initcode.out b/build/user/initcode.out index c8d8b7f..78c9958 100755 Binary files a/build/user/initcode.out and b/build/user/initcode.out differ -- cgit v1.2.3