summaryrefslogtreecommitdiff
path: root/build/user/initcode.asm
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-01-03 02:13:08 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-01-03 02:13:08 +0800
commit10614e04929a6d109a5e90524e446b637aaf0c13 (patch)
treeeb11aeb7b641187f207e3b572c5184cf3526b463 /build/user/initcode.asm
parent1c8e37f63d413a559825020289178d442537449e (diff)
downloadlume-10614e04929a6d109a5e90524e446b637aaf0c13.tar.gz
lume-10614e04929a6d109a5e90524e446b637aaf0c13.tar.xz
Fix: critical malloc size calculation bug
Summary: - Fixed an integer arithmetic error in malloc() where 'nunits' was initialized to 0, causing incorrect heap sizing. - This bug caused malloc to return pointers pointing to unmapped memory pages, leading to Store Page Fault (scause 15) at process boundaries. - Switched memory allocator logic to use byte-based size calculation instead of K&R style units to prevent off-by-one errors. Improvements: - Shell now starts successfully without segfaults.
Diffstat (limited to 'build/user/initcode.asm')
-rw-r--r--build/user/initcode.asm2532
1 files changed, 1273 insertions, 1259 deletions
diff --git a/build/user/initcode.asm b/build/user/initcode.asm
index d2a48a1..711a142 100644
--- a/build/user/initcode.asm
+++ b/build/user/initcode.asm
@@ -14,11 +14,11 @@ int main()
0: 715d addi sp,sp,-80
char *argv[] = {(char *)"sh", 0};
2: 00005797 auipc a5,0x5
- 6: ffe78793 addi a5,a5,-2 # 5000 <_GLOBAL__sub_I__ZSt3cin+0x38>
+ 6: 00e78793 addi a5,a5,14 # 5010 <_GLOBAL__sub_I__ZSt3cin+0x30>
printf("[Init] Starting Lume OS Shell...\n");
a: 00005517 auipc a0,0x5
- e: ffe50513 addi a0,a0,-2 # 5008 <_GLOBAL__sub_I__ZSt3cin+0x40>
+ e: 00e50513 addi a0,a0,14 # 5018 <_GLOBAL__sub_I__ZSt3cin+0x38>
{
12: fc26 sd s1,56(sp)
14: f84a sd s2,48(sp)
@@ -39,7 +39,7 @@ int main()
{
printf("[Init] fork failed!\n");
28: 00005a17 auipc s4,0x5
- 2c: 008a0a13 addi s4,s4,8 # 5030 <_GLOBAL__sub_I__ZSt3cin+0x68>
+ 2c: 018a0a13 addi s4,s4,24 # 5040 <_GLOBAL__sub_I__ZSt3cin+0x60>
printf("Shell Exit");
break;
}
@@ -47,10 +47,10 @@ int main()
{
printf("[Init] wait error or no child\n");
30: 00005997 auipc s3,0x5
- 34: 04098993 addi s3,s3,64 # 5070 <_GLOBAL__sub_I__ZSt3cin+0xa8>
+ 34: 05098993 addi s3,s3,80 # 5080 <_GLOBAL__sub_I__ZSt3cin+0xa0>
printf("Shell Exit");
38: 00005917 auipc s2,0x5
- 3c: 02890913 addi s2,s2,40 # 5060 <_GLOBAL__sub_I__ZSt3cin+0x98>
+ 3c: 03890913 addi s2,s2,56 # 5070 <_GLOBAL__sub_I__ZSt3cin+0x90>
int pid = fork();
40: 088000ef jal c8 <fork>
44: 842a mv s0,a0
@@ -94,7 +94,7 @@ int main()
80: b7c1 j 40 <main+0x40>
char sh_path[] = "/sh";
82: 006877b7 lui a5,0x687
- 86: 32f78793 addi a5,a5,815 # 68732f <_ZSt4cerr+0x67fae7>
+ 86: 32f78793 addi a5,a5,815 # 68732f <_ZSt4cerr+0x67fac7>
exec(sh_path, argv);
8a: 080c addi a1,sp,16
8c: 8526 mv a0,s1
@@ -104,7 +104,7 @@ int main()
90: 070000ef jal 100 <exec>
printf("[Init] exec sh failed\n");
94: 00005517 auipc a0,0x5
- 98: fb450513 addi a0,a0,-76 # 5048 <_GLOBAL__sub_I__ZSt3cin+0x80>
+ 98: fc450513 addi a0,a0,-60 # 5058 <_GLOBAL__sub_I__ZSt3cin+0x78>
9c: 04f030ef jal 38ea <printf>
return 0;
a0: 60a6 ld ra,72(sp)
@@ -349,7 +349,7 @@ SYSCALL(disk_test)
22e: 4359 li t1,22
230: 17036163 bltu t1,a6,392 <stbsp__real_to_str+0x1b8>
234: 00005317 auipc t1,0x5
- 238: 19430313 addi t1,t1,404 # 53c8 <stbsp__bot>
+ 238: 1a430313 addi t1,t1,420 # 53d8 <stbsp__bot>
23c: 080e slli a6,a6,0x3
23e: 981a add a6,a6,t1
240: 00083e03 ld t3,0(a6)
@@ -373,7 +373,7 @@ SYSCALL(disk_test)
288: 7ac77743 fmadd.d fa4,fa4,fa2,fa5
28c: 02d777d3 fadd.d fa5,fa4,fa3
290: 3782e837 lui a6,0x3782e
- 294: acf80813 addi a6,a6,-1329 # 3782dacf <_ZSt4cerr+0x37826287>
+ 294: acf80813 addi a6,a6,-1329 # 3782dacf <_ZSt4cerr+0x37826267>
298: 0832 slli a6,a6,0xc
29a: 9d980813 addi a6,a6,-1575
29e: 084a slli a6,a6,0x12
@@ -417,7 +417,7 @@ SYSCALL(disk_test)
31c: 400e0163 beqz t3,71e <stbsp__real_to_str+0x544>
320: 8fbe mv t6,a5
322: 05f5e7b7 lui a5,0x5f5e
- 326: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f568b7>
+ 326: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f56897>
32a: 04060413 addi s0,a2,64
32e: 03860613 addi a2,a2,56
332: 15f7c863 blt a5,t6,482 <stbsp__real_to_str+0x2a8>
@@ -426,7 +426,7 @@ SYSCALL(disk_test)
33e: 4f01 li t5,0
340: 4f81 li t6,0
342: 00006e97 auipc t4,0x6
- 346: 60ee8e93 addi t4,t4,1550 # 6950 <stbsp__digitpair>
+ 346: 62ee8e93 addi t4,t4,1582 # 6970 <stbsp__digitpair>
34a: aaa9 j 4a4 <stbsp__real_to_str+0x2ca>
34c: 0306 slli t1,t1,0x1
34e: 3e030e63 beqz t1,74a <stbsp__real_to_str+0x570>
@@ -465,7 +465,7 @@ SYSCALL(disk_test)
3be: 22084f63 bltz a6,5fc <stbsp__real_to_str+0x422>
3c2: f2000753 fmv.d.x fa4,zero
3c6: 00005e17 auipc t3,0x5
- 3ca: 002e0e13 addi t3,t3,2 # 53c8 <stbsp__bot>
+ 3ca: 012e0e13 addi t3,t3,18 # 53d8 <stbsp__bot>
3ce: 380e9e63 bnez t4,76a <stbsp__real_to_str+0x590>
3d2: f20887d3 fmv.d.x fa5,a7
3d6: fff30f1b addiw t5,t1,-1
@@ -510,15 +510,15 @@ SYSCALL(disk_test)
466: 10677663 bgeu a4,t1,572 <stbsp__real_to_str+0x398>
46a: e80f93e3 bnez t6,2f0 <stbsp__real_to_str+0x116>
46e: 05f5e7b7 lui a5,0x5f5e
- 472: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f568b7>
+ 472: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f56897>
476: 04060413 addi s0,a2,64
47a: 03860613 addi a2,a2,56
47e: ebf7dce3 bge a5,t6,336 <stbsp__real_to_str+0x15c>
482: 4f01 li t5,0
484: 00006e97 auipc t4,0x6
- 488: 4cce8e93 addi t4,t4,1228 # 6950 <stbsp__digitpair>
+ 488: 4ece8e93 addi t4,t4,1260 # 6970 <stbsp__digitpair>
48c: 05f5e7b7 lui a5,0x5f5e
- 490: 10078793 addi a5,a5,256 # 5f5e100 <_ZSt4cerr+0x5f568b8>
+ 490: 10078793 addi a5,a5,256 # 5f5e100 <_ZSt4cerr+0x5f56898>
494: 02ffe833 rem a6,t6,a5
498: 02ffcfb3 div t6,t6,a5
49c: 0008071b sext.w a4,a6
@@ -526,7 +526,7 @@ SYSCALL(disk_test)
4a4: 8822 mv a6,s0
4a6: 06400893 li a7,100
4aa: 06300e13 li t3,99
- 4ae: 1879 addi a6,a6,-2 # fffffffff7fffffe <_ZSt4cerr+0xfffffffff7ff87b6>
+ 4ae: 1879 addi a6,a6,-2 # fffffffff7fffffe <_ZSt4cerr+0xfffffffff7ff8796>
4b0: 0007031b sext.w t1,a4
4b4: 031777bb remuw a5,a4,a7
4b8: 2785 addiw a5,a5,1
@@ -552,7 +552,7 @@ SYSCALL(disk_test)
4fc: 1461 addi s0,s0,-8
4fe: 00878f1b addiw t5,a5,8
502: 05f5e7b7 lui a5,0x5f5e
- 506: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f568b7>
+ 506: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f56897>
50a: ff840613 addi a2,s0,-8
50e: f7f7cfe3 blt a5,t6,48c <stbsp__real_to_str+0x2b2>
512: 000f871b sext.w a4,t6
@@ -578,10 +578,10 @@ SYSCALL(disk_test)
54a: bf59 j 4e0 <stbsp__real_to_str+0x306>
54c: 0eb2 slli t4,t4,0xc
54e: 00005797 auipc a5,0x5
- 552: b4a78793 addi a5,a5,-1206 # 5098 <_GLOBAL__sub_I__ZSt3cin+0xd0>
+ 552: b5a78793 addi a5,a5,-1190 # 50a8 <_GLOBAL__sub_I__ZSt3cin+0xc8>
556: 000e8663 beqz t4,562 <stbsp__real_to_str+0x388>
55a: 00005797 auipc a5,0x5
- 55e: b3678793 addi a5,a5,-1226 # 5090 <_GLOBAL__sub_I__ZSt3cin+0xc8>
+ 55e: b4678793 addi a5,a5,-1210 # 50a0 <_GLOBAL__sub_I__ZSt3cin+0xc0>
562: 00f2b023 sd a5,0(t0)
566: 679d lui a5,0x7
568: c29c sw a5,0(a3)
@@ -589,13 +589,13 @@ SYSCALL(disk_test)
56c: 01e5a023 sw t5,0(a1)
570: 8082 ret
572: 3b9ad737 lui a4,0x3b9ad
- 576: 9ff70713 addi a4,a4,-1537 # 3b9ac9ff <_ZSt4cerr+0x3b9a51b7>
+ 576: 9ff70713 addi a4,a4,-1537 # 3b9ac9ff <_ZSt4cerr+0x3b9a5197>
57a: 07f76f63 bltu a4,t6,5f8 <stbsp__real_to_str+0x41e>
57e: 4805 li a6,1
580: 02081713 slli a4,a6,0x20
584: 01d75893 srli a7,a4,0x1d
588: 00005717 auipc a4,0x5
- 58c: 1f870713 addi a4,a4,504 # 5780 <stbsp__powten>
+ 58c: 20870713 addi a4,a4,520 # 5790 <stbsp__powten>
590: 9746 add a4,a4,a7
592: 4e51 li t3,20
594: a021 j 59c <stbsp__real_to_str+0x3c2>
@@ -610,7 +610,7 @@ SYSCALL(disk_test)
5b0: eb076de3 bltu a4,a6,46a <stbsp__real_to_str+0x290>
5b4: 080e slli a6,a6,0x3
5b6: 00005717 auipc a4,0x5
- 5ba: e1270713 addi a4,a4,-494 # 53c8 <stbsp__bot>
+ 5ba: e2270713 addi a4,a4,-478 # 53d8 <stbsp__bot>
5be: 9742 add a4,a4,a6
5c0: 3b873803 ld a6,952(a4)
5c4: 00185713 srli a4,a6,0x1
@@ -640,7 +640,7 @@ SYSCALL(disk_test)
60c: fffe881b addiw a6,t4,-1
610: 9e7a add t3,t3,t5
612: 00005e97 auipc t4,0x5
- 616: db6e8e93 addi t4,t4,-586 # 53c8 <stbsp__bot>
+ 616: dc6e8e93 addi t4,t4,-570 # 53d8 <stbsp__bot>
61a: 0e0e slli t3,t3,0x3
61c: 080e slli a6,a6,0x3
61e: 9876 add a6,a6,t4
@@ -672,7 +672,7 @@ SYSCALL(disk_test)
682: 02d777d3 fadd.d fa5,fa4,fa3
686: fff3089b addiw a7,t1,-1
68a: 00005817 auipc a6,0x5
- 68e: d3e80813 addi a6,a6,-706 # 53c8 <stbsp__bot>
+ 68e: d4e80813 addi a6,a6,-690 # 53d8 <stbsp__bot>
692: 030e slli t1,t1,0x3
694: 088e slli a7,a7,0x3
696: 98c2 add a7,a7,a6
@@ -736,7 +736,7 @@ SYSCALL(disk_test)
75c: 01e5a023 sw t5,0(a1)
760: 6105 addi sp,sp,32
762: 8082 ret
- 764: 0805 addi a6,a6,1 # fffffffff8000001 <_ZSt4cerr+0xfffffffff7ff87b9>
+ 764: 0805 addi a6,a6,1 # fffffffff8000001 <_ZSt4cerr+0xfffffffff7ff8799>
766: 3f7d addiw t5,t5,-1
768: b3d1 j 52c <stbsp__real_to_str+0x352>
76a: e826 sd s1,16(sp)
@@ -746,7 +746,7 @@ SYSCALL(disk_test)
772: 11d84363 blt a6,t4,878 <stbsp__real_to_str+0x69e>
776: 0009049b sext.w s1,s2
77a: 00005e17 auipc t3,0x5
- 77e: c4ee0e13 addi t3,t3,-946 # 53c8 <stbsp__bot>
+ 77e: c5ee0e13 addi t3,t3,-930 # 53d8 <stbsp__bot>
782: 00349813 slli a6,s1,0x3
786: 9872 add a6,a6,t3
788: 00083687 fld fa3,0(a6)
@@ -911,7 +911,7 @@ static int _in_char(_InContext *ctx)
924: 00170693 addi a3,a4,1
if (ctx->buf[ctx->pos] == '\0')
928: 97ba add a5,a5,a4
- 92a: 0007c703 lbu a4,0(a5) # 7000 <_stdout+0x190>
+ 92a: 0007c703 lbu a4,0(a5) # 7000 <_stdout+0x170>
92e: cb19 beqz a4,944 <_skip_space+0x50>
return (unsigned char)ctx->buf[ctx->pos++];
930: e814 sd a3,16(s0)
@@ -1095,7 +1095,7 @@ static int _vscanf_core(_InContext *ctx, const char *format, va_list ap)
aa4: 00120637 lui a2,0x120
aa8: 4585 li a1,1
aaa: 00d595b3 sll a1,a1,a3
- aae: 02160613 addi a2,a2,33 # 120021 <_ZSt4cerr+0x1187d9>
+ aae: 02160613 addi a2,a2,33 # 120021 <_ZSt4cerr+0x1187b9>
ab2: 8e6d and a2,a2,a1
ab4: ee69 bnez a2,b8e <_vscanf_core.constprop.0+0x226>
ab6: 89b9 andi a1,a1,14
@@ -1334,7 +1334,7 @@ static int _vscanf_core(_InContext *ctx, const char *format, va_list ap)
int i = 0, c = _in_char(ctx);
cca: 4d01 li s10,0
ccc: 80000937 lui s2,0x80000
- cd0: 197d addi s2,s2,-1 # ffffffff7fffffff <_ZSt4cerr+0xffffffff7fff87b7>
+ cd0: 197d addi s2,s2,-1 # ffffffff7fffffff <_ZSt4cerr+0xffffffff7fff8797>
cd2: 0932 slli s2,s2,0xc
cd4: 80194913 xori s2,s2,-2047
cd8: 093e slli s2,s2,0xf
@@ -1624,7 +1624,7 @@ static int _vscanf_core(_InContext *ctx, const char *format, va_list ap)
f1e: 02b00793 li a5,43
f22: 20f60a63 beq a2,a5,1136 <_vscanf_core.constprop.0+0x7ce>
f26: 00005797 auipc a5,0x5
- f2a: 9127b587 fld fa1,-1774(a5) # 5838 <STDIN_FD+0x10>
+ f2a: 9227b587 fld fa1,-1758(a5) # 5848 <STDIN_FD+0x10>
f2e: 101c addi a5,sp,32
while (*str >= '0' && *str <= '9')
f30: fd06069b addiw a3,a2,-48
@@ -1633,7 +1633,7 @@ static int _vscanf_core(_InContext *ctx, const char *format, va_list ap)
f3a: f20007d3 fmv.d.x fa5,zero
f3e: 02a5e463 bltu a1,a0,f66 <_vscanf_core.constprop.0+0x5fe>
f42: 00005717 auipc a4,0x5
- f46: 8fe73707 fld fa4,-1794(a4) # 5840 <STDIN_FD+0x18>
+ f46: 90e73707 fld fa4,-1778(a4) # 5850 <STDIN_FD+0x18>
f4a: 4525 li a0,9
f4c: 0017c603 lbu a2,1(a5)
val = val * 10.0 + (*str - '0');
@@ -1689,7 +1689,7 @@ static int _vscanf_core(_InContext *ctx, const char *format, va_list ap)
int64 val = strtoll(num_buf, NULL, base);
fb4: 4581 li a1,0
fb6: 1008 addi a0,sp,32
- fb8: 67e030ef jal 4636 <strtoll>
+ fb8: 696030ef jal 464e <strtoll>
*va_arg(ap, int64 *) = val;
fbc: 67a2 ld a5,8(sp)
if (len_mod == 2)
@@ -1802,9 +1802,9 @@ static int _vscanf_core(_InContext *ctx, const char *format, va_list ap)
1092: 12098463 beqz s3,11ba <_vscanf_core.constprop.0+0x852>
double p = 1.0;
1096: 00004717 auipc a4,0x4
- 109a: 7a273687 fld fa3,1954(a4) # 5838 <STDIN_FD+0x10>
+ 109a: 7b273687 fld fa3,1970(a4) # 5848 <STDIN_FD+0x10>
109e: 00004717 auipc a4,0x4
- 10a2: 7a273707 fld fa4,1954(a4) # 5840 <STDIN_FD+0x18>
+ 10a2: 7b273707 fld fa4,1970(a4) # 5850 <STDIN_FD+0x18>
while (eval--)
10a6: 56fd li a3,-1
10a8: 37fd addiw a5,a5,-1
@@ -1820,13 +1820,13 @@ static int _vscanf_core(_InContext *ctx, const char *format, va_list ap)
10bc: b5c9 j f7e <_vscanf_core.constprop.0+0x616>
double p = 1.0;
10be: 00004797 auipc a5,0x4
- 10c2: 77a7b687 fld fa3,1914(a5) # 5838 <STDIN_FD+0x10>
+ 10c2: 78a7b687 fld fa3,1930(a5) # 5848 <STDIN_FD+0x10>
val *= p;
10c6: 12d7f7d3 fmul.d fa5,fa5,fa3
10ca: bd55 j f7e <_vscanf_core.constprop.0+0x616>
while (*str >= '0' && *str <= '9')
10cc: 00004797 auipc a5,0x4
- 10d0: 7647b587 fld fa1,1892(a5) # 5830 <STDIN_FD+0x8>
+ 10d0: 7747b587 fld fa1,1908(a5) # 5840 <STDIN_FD+0x8>
10d4: 02114603 lbu a2,33(sp)
str++;
10d8: 02110793 addi a5,sp,33
@@ -1842,7 +1842,7 @@ static int _vscanf_core(_InContext *ctx, const char *format, va_list ap)
10ee: e8a5e2e3 bltu a1,a0,f72 <_vscanf_core.constprop.0+0x60a>
double div = 10.0;
10f2: 00004717 auipc a4,0x4
- 10f6: 74e73707 fld fa4,1870(a4) # 5840 <STDIN_FD+0x18>
+ 10f6: 75e73707 fld fa4,1886(a4) # 5850 <STDIN_FD+0x18>
10fa: 22e70653 fmv.d fa2,fa4
while (*str >= '0' && *str <= '9')
10fe: 4525 li a0,9
@@ -1879,7 +1879,7 @@ static int _vscanf_core(_InContext *ctx, const char *format, va_list ap)
1134: b54d j fd6 <_vscanf_core.constprop.0+0x66e>
while (*str >= '0' && *str <= '9')
1136: 00004797 auipc a5,0x4
- 113a: 7027b587 fld fa1,1794(a5) # 5838 <STDIN_FD+0x10>
+ 113a: 7127b587 fld fa1,1810(a5) # 5848 <STDIN_FD+0x10>
113e: 02114603 lbu a2,33(sp)
str++;
1142: 02110793 addi a5,sp,33
@@ -1898,7 +1898,7 @@ static int _vscanf_core(_InContext *ctx, const char *format, va_list ap)
115c: f0f577e3 bgeu a0,a5,106a <_vscanf_core.constprop.0+0x702>
double p = 1.0;
1160: 00004797 auipc a5,0x4
- 1164: 6d87b687 fld fa3,1752(a5) # 5838 <STDIN_FD+0x10>
+ 1164: 6e87b687 fld fa3,1768(a5) # 5848 <STDIN_FD+0x10>
val /= p;
1168: 1ad7f7d3 fdiv.d fa5,fa5,fa3
116c: bd09 j f7e <_vscanf_core.constprop.0+0x616>
@@ -1941,7 +1941,7 @@ static int _vscanf_core(_InContext *ctx, const char *format, va_list ap)
11b8: bb99 j f0e <_vscanf_core.constprop.0+0x5a6>
double p = 1.0;
11ba: 00004797 auipc a5,0x4
- 11be: 67e7b687 fld fa3,1662(a5) # 5838 <STDIN_FD+0x10>
+ 11be: 68e7b687 fld fa3,1678(a5) # 5848 <STDIN_FD+0x10>
11c2: bdc5 j 10b2 <_vscanf_core.constprop.0+0x74a>
buf[i] = '\0';
11c4: 67e2 ld a5,24(sp)
@@ -2078,7 +2078,7 @@ STBSP__PUBLICDEF void STB_SPRINTF_DECORATE(set_separators)(char pcomma, char ppe
{
stbsp__period = pperiod;
12ac: 00005797 auipc a5,0x5
- 12b0: 6a478793 addi a5,a5,1700 # 6950 <stbsp__digitpair>
+ 12b0: 6c478793 addi a5,a5,1732 # 6970 <stbsp__digitpair>
12b4: 0cb78623 sb a1,204(a5)
stbsp__comma = pcomma;
12b8: 0ca786a3 sb a0,205(a5)
@@ -2102,7 +2102,7 @@ STBSP__PUBLICDEF int STB_SPRINTF_DECORATE(vsprintfcb)(STBSP_SPRINTFCB *callback,
12c2: 808087b7 lui a5,0x80808
if (((v ^ 0x25252525) - 0x01010101) & c)
12c6: 252523b7 lui t2,0x25252
- 12ca: 52538393 addi t2,t2,1317 # 25252525 <_ZSt4cerr+0x2524acdd>
+ 12ca: 52538393 addi t2,t2,1317 # 25252525 <_ZSt4cerr+0x2524acbd>
{
12ce: 29913c23 sd s9,664(sp)
12d2: 29b13423 sd s11,648(sp)
@@ -2111,7 +2111,7 @@ STBSP__PUBLICDEF int STB_SPRINTF_DECORATE(vsprintfcb)(STBSP_SPRINTFCB *callback,
if (((v ^ 0x25252525) - 0x01010101) & c)
12d8: feff0db7 lui s11,0xfeff0
c = (~v) & 0x80808080;
- 12dc: 08078793 addi a5,a5,128 # ffffffff80808080 <_ZSt4cerr+0xffffffff80800838>
+ 12dc: 08078793 addi a5,a5,128 # ffffffff80808080 <_ZSt4cerr+0xffffffff80800818>
{
12e0: 2e813023 sd s0,736(sp)
12e4: 2c913c23 sd s1,728(sp)
@@ -2132,7 +2132,7 @@ STBSP__PUBLICDEF int STB_SPRINTF_DECORATE(vsprintfcb)(STBSP_SPRINTFCB *callback,
for (;;) {
1310: 8932 mv s2,a2
if (((v ^ 0x25252525) - 0x01010101) & c)
- 1312: effd8d9b addiw s11,s11,-257 # fffffffffefefeff <_ZSt4cerr+0xfffffffffefe86b7>
+ 1312: effd8d9b addiw s11,s11,-257 # fffffffffefefeff <_ZSt4cerr+0xfffffffffefe8697>
goto schk1;
if ((v - 0x01010101) & c)
goto schk2;
@@ -2276,7 +2276,7 @@ done:
switch (f[0]) {
1420: 03f00593 li a1,63
1424: 00004617 auipc a2,0x4
- 1428: d3460613 addi a2,a2,-716 # 5158 <_GLOBAL__sub_I__ZSt3cin+0x190>
+ 1428: d4460613 addi a2,a2,-700 # 5168 <_GLOBAL__sub_I__ZSt3cin+0x188>
142c: fff6c783 lbu a5,-1(a3)
1430: fff68493 addi s1,a3,-1
1434: fe07871b addiw a4,a5,-32
@@ -2318,7 +2318,7 @@ done:
1482: 46c9 li a3,18
1484: 02e6e063 bltu a3,a4,14a4 <stbsp_vsprintfcb+0x1e6>
1488: 00004697 auipc a3,0x4
- 148c: dd068693 addi a3,a3,-560 # 5258 <_GLOBAL__sub_I__ZSt3cin+0x290>
+ 148c: de068693 addi a3,a3,-544 # 5268 <_GLOBAL__sub_I__ZSt3cin+0x288>
1490: 070a slli a4,a4,0x2
1492: 9736 add a4,a4,a3
1494: 4318 lw a4,0(a4)
@@ -2336,7 +2336,7 @@ done:
14ac: 03700693 li a3,55
14b0: 0ee6ea63 bltu a3,a4,15a4 <stbsp_vsprintfcb+0x2e6>
14b4: 00004697 auipc a3,0x4
- 14b8: df068693 addi a3,a3,-528 # 52a4 <_GLOBAL__sub_I__ZSt3cin+0x2dc>
+ 14b8: e0068693 addi a3,a3,-512 # 52b4 <_GLOBAL__sub_I__ZSt3cin+0x2d4>
14bc: 070a slli a4,a4,0x2
14be: 9736 add a4,a4,a3
14c0: 4318 lw a4,0(a4)
@@ -2591,7 +2591,7 @@ done:
16c6: 0ce05763 blez a4,1794 <stbsp_vsprintfcb+0x4d6>
*(stbsp__uint32 *)bf = 0x30303030;
16ca: 30303837 lui a6,0x30303
- 16ce: 03080813 addi a6,a6,48 # 30303030 <_ZSt4cerr+0x302fb7e8>
+ 16ce: 03080813 addi a6,a6,48 # 30303030 <_ZSt4cerr+0x302fb7c8>
16d2: f026 sd s1,32(sp)
16d4: 854a mv a0,s2
16d6: 84da mv s1,s6
@@ -2604,7 +2604,7 @@ done:
16e4: 8d6e mv s10,s11
*bf++ = stbsp__comma;
16e6: 00005f17 auipc t5,0x5
- 16ea: 26af0f13 addi t5,t5,618 # 6950 <stbsp__digitpair>
+ 16ea: 28af0f13 addi t5,t5,650 # 6970 <stbsp__digitpair>
16ee: 8de6 mv s11,s9
*bf++ = '0';
16f0: 03000e93 li t4,48
@@ -2657,7 +2657,7 @@ done:
1762: 842a mv s0,a0
1764: 1fe00293 li t0,510
1768: 00005f17 auipc t5,0x5
- 176c: 1e8f0f13 addi t5,t5,488 # 6950 <stbsp__digitpair>
+ 176c: 208f0f13 addi t5,t5,520 # 6970 <stbsp__digitpair>
1770: 03000e93 li t4,48
while (pr > 0) {
1774: f93049e3 bgtz s3,1706 <stbsp_vsprintfcb+0x448>
@@ -2859,7 +2859,7 @@ done:
stbsp__chk_cb_buf(1);
191a: 1fe00693 li a3,510
*(stbsp__uint32 *)bf = 0x30303030;
- 191e: 030b0b13 addi s6,s6,48 # 30303030 <_ZSt4cerr+0x302fb7e8>
+ 191e: 030b0b13 addi s6,s6,48 # 30303030 <_ZSt4cerr+0x302fb7c8>
stbsp__cb_buf_clamp(i, tz);
1922: 20000b93 li s7,512
1926: 040989e3 beqz s3,2178 <stbsp_vsprintfcb+0xeba>
@@ -3124,7 +3124,7 @@ done:
1b60: 2300106f j 2d90 <stbsp_vsprintfcb+0x1ad2>
divisor = 1024.0;
1b64: 00004797 auipc a5,0x4
- 1b68: ce47b787 fld fa5,-796(a5) # 5848 <STDIN_FD+0x20>
+ 1b68: cf47b787 fld fa5,-780(a5) # 5858 <STDIN_FD+0x20>
if ((fv < divisor) && (fv > -divisor))
1b6c: 22f79753 fneg.d fa4,fa5
fl += 0x1000000;
@@ -3149,10 +3149,10 @@ done:
1b98: 020e7713 andi a4,t3,32
h = (f[0] == 'X') ? hexu : hex;
1b9c: 00005817 auipc a6,0x5
- 1ba0: e9c80813 addi a6,a6,-356 # 6a38 <hex.0>
+ 1ba0: ebc80813 addi a6,a6,-324 # 6a58 <hex.0>
1ba4: 00d79663 bne a5,a3,1bb0 <stbsp_vsprintfcb+0x8f2>
1ba8: 00005817 auipc a6,0x5
- 1bac: e7880813 addi a6,a6,-392 # 6a20 <hexu.1>
+ 1bac: e9880813 addi a6,a6,-360 # 6a40 <hexu.1>
l = (4 << 4) | (4 << 8);
1bb0: 44000793 li a5,1088
1bb4: d0be sw a5,96(sp)
@@ -3205,7 +3205,7 @@ done:
h = (f[0] == 'E') ? hexu : hex;
1c12: 04500713 li a4,69
1c16: 00005317 auipc t1,0x5
- 1c1a: e2230313 addi t1,t1,-478 # 6a38 <hex.0>
+ 1c1a: e4230313 addi t1,t1,-446 # 6a58 <hex.0>
1c1e: 1ce78ae3 beq a5,a4,25f2 <stbsp_vsprintfcb+0x1334>
fv = va_arg(va, double);
1c22: 008b8713 addi a4,s7,8
@@ -3291,7 +3291,7 @@ done:
h = (f[0] == 'G') ? hexu : hex;
1cba: 04700713 li a4,71
1cbe: 00005317 auipc t1,0x5
- 1cc2: d7a30313 addi t1,t1,-646 # 6a38 <hex.0>
+ 1cc2: d9a30313 addi t1,t1,-614 # 6a58 <hex.0>
1cc6: 14e783e3 beq a5,a4,260c <stbsp_vsprintfcb+0x134e>
fv = va_arg(va, double);
1cca: 008b8713 addi a4,s7,8
@@ -3361,14 +3361,14 @@ done:
1d50: 38fd addiw a7,a7,-1
while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
1d52: 211e80e3 beq t4,a7,2752 <stbsp_vsprintfcb+0x1494>
- 1d56: 177d addi a4,a4,-1 # 6fff <_stdout+0x18f>
+ 1d56: 177d addi a4,a4,-1 # 6fff <_stdout+0x16f>
1d58: 4f05 li t5,1
1d5a: 1e088ce3 beqz a7,2752 <stbsp_vsprintfcb+0x1494>
--l;
1d5e: 85b6 mv a1,a3
while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
1d60: 00074803 lbu a6,0(a4)
- 1d64: fff6861b addiw a2,a3,-1 # ffffff <_ZSt4cerr+0xff87b7>
+ 1d64: fff6861b addiw a2,a3,-1 # ffffff <_ZSt4cerr+0xff8797>
1d68: 0006851b sext.w a0,a3
1d6c: 2581 sext.w a1,a1
1d6e: 0006069b sext.w a3,a2
@@ -3407,7 +3407,7 @@ done:
h = (f[0] == 'A') ? hexu : hex;
1dbe: 04100713 li a4,65
1dc2: 00005597 auipc a1,0x5
- 1dc6: c7658593 addi a1,a1,-906 # 6a38 <hex.0>
+ 1dc6: c9658593 addi a1,a1,-874 # 6a58 <hex.0>
1dca: 00e783e3 beq a5,a4,25d0 <stbsp_vsprintfcb+0x1312>
fv = va_arg(va, double);
1dce: 008b8693 addi a3,s7,8
@@ -3554,7 +3554,7 @@ done:
fw -= n;
1ef2: 40f3033b subw t1,t1,a5
cs = 1 + (3 << 24);
- 1ef6: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff87b9>
+ 1ef6: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff8799>
s = num + 64;
1ef8: 0c010a93 addi s5,sp,192
goto scopy;
@@ -3562,7 +3562,7 @@ done:
h = (f[0] == 'B') ? hexu : hex;
1efe: 04200713 li a4,66
1f02: 00005817 auipc a6,0x5
- 1f06: b3680813 addi a6,a6,-1226 # 6a38 <hex.0>
+ 1f06: b5680813 addi a6,a6,-1194 # 6a58 <hex.0>
1f0a: 6ce78963 beq a5,a4,25dc <stbsp_vsprintfcb+0x131e>
if (fl & STBSP__LEADING_0X) {
1f0e: 008e7793 andi a5,t3,8
@@ -3674,7 +3674,7 @@ done:
1fd8: 02e5f5bb remuw a1,a1,a4
*s++ = stbsp__comma;
1fdc: 00005a17 auipc s4,0x5
- 1fe0: 974a0a13 addi s4,s4,-1676 # 6950 <stbsp__digitpair>
+ 1fe0: 994a0a13 addi s4,s4,-1644 # 6970 <stbsp__digitpair>
s = (char *)sn;
1fe4: 7f66 ld t5,120(sp)
*s++ = stbsp__comma;
@@ -3702,7 +3702,7 @@ done:
200c: 0015061b addiw a2,a0,1
2010: 0006051b sext.w a0,a2
*s++ = sn[n];
- 2014: fff70fa3 sb t6,-1(a4) # 6fff <_stdout+0x18f>
+ 2014: fff70fa3 sb t6,-1(a4) # 6fff <_stdout+0x16f>
if (n >= (stbsp__uint32)dp)
2018: 7bd57563 bgeu a0,t4,27c2 <stbsp_vsprintfcb+0x1504>
*s++ = stbsp__comma;
@@ -3740,7 +3740,7 @@ done:
205c: 020e7713 andi a4,t3,32
h = hexu;
2060: 00005817 auipc a6,0x5
- 2064: 9c080813 addi a6,a6,-1600 # 6a20 <hexu.1>
+ 2064: 9e080813 addi a6,a6,-1568 # 6a40 <hexu.1>
goto radixnum;
2068: bea9 j 1bc2 <stbsp_vsprintfcb+0x904>
fl &= ~STBSP__LEADINGZERO; // 'p' only prints the pointer with zeros
@@ -3751,7 +3751,7 @@ done:
2076: 48c1 li a7,16
h = (f[0] == 'X') ? hexu : hex;
2078: 00005817 auipc a6,0x5
- 207c: 9c080813 addi a6,a6,-1600 # 6a38 <hex.0>
+ 207c: 9e080813 addi a6,a6,-1568 # 6a58 <hex.0>
2080: be05 j 1bb0 <stbsp_vsprintfcb+0x8f2>
s = va_arg(va, char *);
2082: 000bba83 ld s5,0(s7)
@@ -3944,7 +3944,7 @@ done:
2204: 894e mv s2,s3
2206: 69a2 ld s3,8(sp)
*(stbsp__uint32 *)bf = 0x20202020;
- 2208: 02080813 addi a6,a6,32 # 20202020 <_ZSt4cerr+0x201fa7d8>
+ 2208: 02080813 addi a6,a6,32 # 20202020 <_ZSt4cerr+0x201fa7b8>
stbsp__cb_buf_clamp(i, fw);
220c: ec52 sd s4,24(sp)
220e: f426 sd s1,40(sp)
@@ -4006,7 +4006,7 @@ done:
while (i >= 4) {
227a: 40d5863b subw a2,a1,a3
227e: fecbcbe3 blt s7,a2,2274 <stbsp_vsprintfcb+0xfb6>
- 2282: ffcf861b addiw a2,t6,-4 # fffffffff7fffffc <_ZSt4cerr+0xfffffffff7ff87b4>
+ 2282: ffcf861b addiw a2,t6,-4 # fffffffff7fffffc <_ZSt4cerr+0xfffffffff7ff8794>
2286: 0026561b srliw a2,a2,0x2
228a: 0016069b addiw a3,a2,1
228e: 3771 addiw a4,a4,-4
@@ -4108,7 +4108,7 @@ done:
237a: 5586 lw a1,96(sp)
*--s = stbsp__comma;
237c: 00004f17 auipc t5,0x4
- 2380: 6a1f4f03 lbu t5,1697(t5) # 6a1d <stbsp__comma>
+ 2380: 6c1f4f03 lbu t5,1729(t5) # 6a3d <stbsp__comma>
2384: 0510 addi a2,sp,640
2386: 0085d71b srliw a4,a1,0x8
*--s = h[n64 & ((1 << (l >> 8)) - 1)];
@@ -4268,7 +4268,7 @@ done:
24d6: 06055ee3 bgez a0,2d52 <stbsp_vsprintfcb+0x1a94>
tail[idx + 1] = "_KMGT"[fl >> 24];
24da: 00003517 auipc a0,0x3
- 24de: bce50513 addi a0,a0,-1074 # 50a8 <_GLOBAL__sub_I__ZSt3cin+0xe0>
+ 24de: bde50513 addi a0,a0,-1058 # 50b8 <_GLOBAL__sub_I__ZSt3cin+0xd8>
24e2: 972a add a4,a4,a0
24e4: 00074503 lbu a0,0(a4)
if (fl & STBSP__METRIC_1024 && !(fl & STBSP__METRIC_JEDEC)) {
@@ -4279,7 +4279,7 @@ done:
24f0: 06010813 addi a6,sp,96
24f4: 22060693 addi a3,a2,544
24f8: 96c2 add a3,a3,a6
- 24fa: dea68823 sb a0,-528(a3) # efffdf0 <_ZSt4cerr+0xeff85a8>
+ 24fa: dea68823 sb a0,-528(a3) # efffdf0 <_ZSt4cerr+0xeff8588>
if (fl & STBSP__METRIC_1024 && !(fl & STBSP__METRIC_JEDEC)) {
24fe: 8007071b addiw a4,a4,-2048
2502: 060715e3 bnez a4,2d6c <stbsp_vsprintfcb+0x1aae>
@@ -4387,30 +4387,30 @@ done:
25ce: b801 j 1dde <stbsp_vsprintfcb+0xb20>
h = (f[0] == 'A') ? hexu : hex;
25d0: 00004597 auipc a1,0x4
- 25d4: 45058593 addi a1,a1,1104 # 6a20 <hexu.1>
+ 25d4: 47058593 addi a1,a1,1136 # 6a40 <hexu.1>
25d8: ff6ff06f j 1dce <stbsp_vsprintfcb+0xb10>
h = (f[0] == 'B') ? hexu : hex;
25dc: 00004817 auipc a6,0x4
- 25e0: 44480813 addi a6,a6,1092 # 6a20 <hexu.1>
+ 25e0: 46480813 addi a6,a6,1124 # 6a40 <hexu.1>
25e4: b22d j 1f0e <stbsp_vsprintfcb+0xc50>
25e6: 80000737 lui a4,0x80000
- 25ea: 0719 addi a4,a4,6 # ffffffff80000006 <_ZSt4cerr+0xffffffff7fff87be>
+ 25ea: 0719 addi a4,a4,6 # ffffffff80000006 <_ZSt4cerr+0xffffffff7fff879e>
pr = 6; // default is 6
25ec: 4899 li a7,6
25ee: e4eff06f j 1c3c <stbsp_vsprintfcb+0x97e>
h = (f[0] == 'E') ? hexu : hex;
25f2: 00004317 auipc t1,0x4
- 25f6: 42e30313 addi t1,t1,1070 # 6a20 <hexu.1>
+ 25f6: 44e30313 addi t1,t1,1102 # 6a40 <hexu.1>
25fa: e28ff06f j 1c22 <stbsp_vsprintfcb+0x964>
25fe: 80000737 lui a4,0x80000
2602: 4a99 li s5,6
- 2604: 0715 addi a4,a4,5 # ffffffff80000005 <_ZSt4cerr+0xffffffff7fff87bd>
+ 2604: 0715 addi a4,a4,5 # ffffffff80000005 <_ZSt4cerr+0xffffffff7fff879d>
pr = 6;
2606: 4a19 li s4,6
2608: ee8ff06f j 1cf0 <stbsp_vsprintfcb+0xa32>
h = (f[0] == 'G') ? hexu : hex;
260c: 00004317 auipc t1,0x4
- 2610: 41430313 addi t1,t1,1044 # 6a20 <hexu.1>
+ 2610: 43430313 addi t1,t1,1076 # 6a40 <hexu.1>
2614: eb6ff06f j 1cca <stbsp_vsprintfcb+0xa0c>
2618: 7be6 ld s7,120(sp)
if ((dp <= -4) || (dp > (stbsp__int32)n)) {
@@ -4461,7 +4461,7 @@ done:
266c: 54088563 beqz a7,2bb6 <stbsp_vsprintfcb+0x18f8>
*s++ = stbsp__period;
2670: 00004617 auipc a2,0x4
- 2674: 3ac64603 lbu a2,940(a2) # 6a1c <stbsp__period>
+ 2674: 3cc64603 lbu a2,972(a2) # 6a3c <stbsp__period>
if ((l - 1) > (stbsp__uint32)pr)
2678: fff6871b addiw a4,a3,-1
*s++ = stbsp__period;
@@ -4522,7 +4522,7 @@ done:
26f0: 06010893 addi a7,sp,96
26f4: 0202d293 srli t0,t0,0x20
26f8: 01180eb3 add t4,a6,a7
- 26fc: 22028813 addi a6,t0,544 # 3000220 <_ZSt4cerr+0x2ff89d8>
+ 26fc: 22028813 addi a6,t0,544 # 3000220 <_ZSt4cerr+0x2ff89b8>
2700: 011802b3 add t0,a6,a7
tail[0] = (char)n;
2704: 07f10823 sb t6,112(sp)
@@ -4558,7 +4558,7 @@ done:
l = (stbsp__uint32)(s - (num + 64));
274a: 415607b3 sub a5,a2,s5
cs = 1 + (3 << 24); // how many tens
- 274e: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff87b9>
+ 274e: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff8799>
2750: bbc9 j 2522 <stbsp_vsprintfcb+0x1264>
2752: fc2e sd a1,56(sp)
2754: d0b2 sw a2,96(sp)
@@ -4716,7 +4716,7 @@ done:
2888: 96be add a3,a3,a5
*s++ = stbsp__period;
288a: 00004517 auipc a0,0x4
- 288e: 19254503 lbu a0,402(a0) # 6a1c <stbsp__period>
+ 288e: 1b254503 lbu a0,434(a0) # 6a3c <stbsp__period>
lead[2 + lead[0]] = 'x';
2892: 07800813 li a6,120
sn = s;
@@ -4775,10 +4775,10 @@ done:
2900: d76ff06f j 1e76 <stbsp_vsprintfcb+0xbb8>
*--s = stbsp__comma;
2904: 00004a17 auipc s4,0x4
- 2908: 04ca0a13 addi s4,s4,76 # 6950 <stbsp__digitpair>
+ 2908: 06ca0a13 addi s4,s4,108 # 6970 <stbsp__digitpair>
if (n64 >= 100000000) {
290c: 05f5e7b7 lui a5,0x5f5e
- 2910: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f568b7>
+ 2910: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f56897>
n = (stbsp__uint32)(n64 % 100000000);
2914: 05f5e637 lui a2,0x5f5e
*--s = stbsp__comma;
@@ -4786,7 +4786,7 @@ done:
if (n64 >= 100000000) {
291c: e83e sd a5,16(sp)
n = (stbsp__uint32)(n64 % 100000000);
- 291e: 10060793 addi a5,a2,256 # 5f5e100 <_ZSt4cerr+0x5f568b8>
+ 291e: 10060793 addi a5,a2,256 # 5f5e100 <_ZSt4cerr+0x5f56898>
l = 0;
2922: d082 sw zero,96(sp)
if ((fl & STBSP__TRIPLET_COMMA) == 0) {
@@ -4967,7 +4967,7 @@ done:
*bf++ = ' ';
2a72: 02000a93 li s5,32
*(stbsp__uint32 *)bf = 0x20202020;
- 2a76: 020b0b13 addi s6,s6,32 # 20202020 <_ZSt4cerr+0x201fa7d8>
+ 2a76: 020b0b13 addi s6,s6,32 # 20202020 <_ZSt4cerr+0x201fa7b8>
stbsp__chk_cb_buf(1);
2a7a: 1fe00a13 li s4,510
stbsp__cb_buf_clamp(i, fw);
@@ -5065,8 +5065,8 @@ done:
if ((v - 0x01010101) & (~v) & 0x80808080UL)
2b48: feff05b7 lui a1,0xfeff0
2b4c: 80808637 lui a2,0x80808
- 2b50: eff5859b addiw a1,a1,-257 # fffffffffefefeff <_ZSt4cerr+0xfffffffffefe86b7>
- 2b54: 08060613 addi a2,a2,128 # ffffffff80808080 <_ZSt4cerr+0xffffffff80800838>
+ 2b50: eff5859b addiw a1,a1,-257 # fffffffffefefeff <_ZSt4cerr+0xfffffffffefe8697>
+ 2b54: 08060613 addi a2,a2,128 # ffffffff80808080 <_ZSt4cerr+0xffffffff80800818>
while (limit >= 4) {
2b58: 480d li a6,3
2b5a: a029 j 2b64 <stbsp_vsprintfcb+0x18a6>
@@ -5162,7 +5162,7 @@ done:
2c06: b6d5 j 27ea <stbsp_vsprintfcb+0x152c>
s = (char *)"null";
2c08: 00002a97 auipc s5,0x2
- 2c0c: 498a8a93 addi s5,s5,1176 # 50a0 <_GLOBAL__sub_I__ZSt3cin+0xd8>
+ 2c0c: 4a8a8a93 addi s5,s5,1192 # 50b0 <_GLOBAL__sub_I__ZSt3cin+0xd0>
2c10: c80ff06f j 2090 <stbsp_vsprintfcb+0xdd2>
} else if (fl & STBSP__LEADINGPLUS) {
2c14: 002e7793 andi a5,t3,2
@@ -5187,7 +5187,7 @@ done:
2c42: 1a088c63 beqz a7,2dfa <stbsp_vsprintfcb+0x1b3c>
*s++ = stbsp__period;
2c46: 00004717 auipc a4,0x4
- 2c4a: dd674703 lbu a4,-554(a4) # 6a1c <stbsp__period>
+ 2c4a: df674703 lbu a4,-522(a4) # 6a3c <stbsp__period>
n = -dp;
2c4e: 40f007bb negw a5,a5
*s++ = stbsp__period;
@@ -5255,7 +5255,7 @@ done:
l = (stbsp__uint32)(s - (num + 64));
2cd2: 415787b3 sub a5,a5,s5
cs = 1 + (3 << 24); // how many tens did we write (for commas below)
- 2cd6: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff87b9>
+ 2cd6: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff8799>
2cd8: fbcff06f j 2494 <stbsp_vsprintfcb+0x11d6>
*--s = '0';
2cdc: 03000793 li a5,48
@@ -5268,7 +5268,7 @@ done:
2cec: 1afd addi s5,s5,-1
l = 1;
2cee: 4605 li a2,1
- 2cf0: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff87b9>
+ 2cf0: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff8799>
2cf2: 4685 li a3,1
2cf4: b9dd j 29ea <stbsp_vsprintfcb+0x172c>
} else if (fl & STBSP__LEADINGSPACE) {
@@ -5320,7 +5320,7 @@ done:
2d4e: f1dfe06f j 1c6a <stbsp_vsprintfcb+0x9ac>
tail[idx + 1] = "_kMGT"[fl >> 24];
2d52: 00002697 auipc a3,0x2
- 2d56: 35e68693 addi a3,a3,862 # 50b0 <_GLOBAL__sub_I__ZSt3cin+0xe8>
+ 2d56: 36e68693 addi a3,a3,878 # 50c0 <_GLOBAL__sub_I__ZSt3cin+0xe0>
2d5a: 9736 add a4,a4,a3
2d5c: 00074683 lbu a3,0(a4)
2d60: 1088 addi a0,sp,96
@@ -5345,7 +5345,7 @@ done:
2d8c: 814ff06f j 1da0 <stbsp_vsprintfcb+0xae2>
divisor = 1000.0f;
2d90: 00003797 auipc a5,0x3
- 2d94: ac07b787 fld fa5,-1344(a5) # 5850 <STDIN_FD+0x28>
+ 2d94: ad07b787 fld fa5,-1328(a5) # 5860 <STDIN_FD+0x28>
2d98: dd5fe06f j 1b6c <stbsp_vsprintfcb+0x8ae>
2d9c: 678d lui a5,0x3
2d9e: b017879b addiw a5,a5,-1279 # 2b01 <stbsp_vsprintfcb+0x1843>
@@ -5355,7 +5355,7 @@ done:
2da8: b125 j 29d0 <stbsp_vsprintfcb+0x1712>
*s++ = stbsp__period;
2daa: 00004517 auipc a0,0x4
- 2dae: c7254503 lbu a0,-910(a0) # 6a1c <stbsp__period>
+ 2dae: c9254503 lbu a0,-878(a0) # 6a3c <stbsp__period>
sn = s;
2db2: 0c210793 addi a5,sp,194
n = pr;
@@ -5411,7 +5411,7 @@ done:
*(stbsp__uint32 *)s = 0x30303030;
2e18: 30303537 lui a0,0x30303
2e1c: 963e add a2,a2,a5
- 2e1e: 03050513 addi a0,a0,48 # 30303030 <_ZSt4cerr+0x302fb7e8>
+ 2e1e: 03050513 addi a0,a0,48 # 30303030 <_ZSt4cerr+0x302fb7c8>
2e22: c388 sw a0,0(a5)
s += 4;
2e24: 0791 addi a5,a5,4
@@ -5465,7 +5465,7 @@ done:
*(stbsp__uint32 *)s = 0x30303030;
2e84: 30303637 lui a2,0x30303
2e88: 96ba add a3,a3,a4
- 2e8a: 03060613 addi a2,a2,48 # 30303030 <_ZSt4cerr+0x302fb7e8>
+ 2e8a: 03060613 addi a2,a2,48 # 30303030 <_ZSt4cerr+0x302fb7c8>
2e8e: c310 sw a2,0(a4)
s += 4;
2e90: 0711 addi a4,a4,4
@@ -5752,7 +5752,7 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
3074: 02500a93 li s5,37
3078: 49c1 li s3,16
307a: 00002917 auipc s2,0x2
- 307e: 30a90913 addi s2,s2,778 # 5384 <_GLOBAL__sub_I__ZSt3cin+0x3bc>
+ 307e: 31a90913 addi s2,s2,794 # 5394 <_GLOBAL__sub_I__ZSt3cin+0x3b4>
3082: a039 j 3090 <_vprintf_core.constprop.0.isra.0+0x44>
_out_char(ctx, spec);
3084: 8526 mv a0,s1
@@ -6030,7 +6030,7 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
32be: 4e05 li t3,1
32c0: 00091637 lui a2,0x91
32c4: 00de1333 sll t1,t3,a3
- 32c8: 81060613 addi a2,a2,-2032 # 90810 <_ZSt4cerr+0x88fc8>
+ 32c8: 81060613 addi a2,a2,-2032 # 90810 <_ZSt4cerr+0x88fa8>
32cc: 00c37633 and a2,t1,a2
32d0: 1a061463 bnez a2,3478 <_vprintf_core.constprop.0.isra.0+0x42c>
32d4: 00737313 andi t1,t1,7
@@ -6145,7 +6145,7 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
33c6: 00091337 lui t1,0x91
33ca: 4685 li a3,1
33cc: 00c696b3 sll a3,a3,a2
- 33d0: 81030313 addi t1,t1,-2032 # 90810 <_ZSt4cerr+0x88fc8>
+ 33d0: 81030313 addi t1,t1,-2032 # 90810 <_ZSt4cerr+0x88fa8>
33d4: 0066f333 and t1,a3,t1
33d8: 34031c63 bnez t1,3730 <_vprintf_core.constprop.0.isra.0+0x6e4>
33dc: 8a9d andi a3,a3,7
@@ -6199,7 +6199,7 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
3444: 01aa0533 add a0,s4,s10
3448: 865e mv a2,s7
344a: 00002597 auipc a1,0x2
- 344e: cbe58593 addi a1,a1,-834 # 5108 <_GLOBAL__sub_I__ZSt3cin+0x140>
+ 344e: cce58593 addi a1,a1,-818 # 5118 <_GLOBAL__sub_I__ZSt3cin+0x138>
3452: ba5ff0ef jal 2ff6 <sprintf>
3456: 00ad0d3b addw s10,s10,a0
345a: b341 j 31da <_vprintf_core.constprop.0.isra.0+0x18e>
@@ -6207,7 +6207,7 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
345c: 01aa0533 add a0,s4,s10
3460: 8622 mv a2,s0
3462: 00002597 auipc a1,0x2
- 3466: c9e58593 addi a1,a1,-866 # 5100 <_GLOBAL__sub_I__ZSt3cin+0x138>
+ 3466: cae58593 addi a1,a1,-850 # 5110 <_GLOBAL__sub_I__ZSt3cin+0x130>
346a: b8dff0ef jal 2ff6 <sprintf>
346e: 00ad0d3b addw s10,s10,a0
if (precision >= 0)
@@ -6234,7 +6234,7 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
349a: 4341 li t1,16
const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
349c: 00002f97 auipc t6,0x2
- 34a0: c34f8f93 addi t6,t6,-972 # 50d0 <_GLOBAL__sub_I__ZSt3cin+0x108>
+ 34a0: c44f8f93 addi t6,t6,-956 # 50e0 <_GLOBAL__sub_I__ZSt3cin+0x100>
if (val == 0)
34a4: 120e0363 beqz t3,35ca <_vprintf_core.constprop.0.isra.0+0x57e>
34a8: 01010293 addi t0,sp,16
@@ -6382,7 +6382,7 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
35bc: 4329 li t1,10
35be: 00002f97 auipc t6,0x2
- 35c2: b12f8f93 addi t6,t6,-1262 # 50d0 <_GLOBAL__sub_I__ZSt3cin+0x108>
+ 35c2: b22f8f93 addi t6,t6,-1246 # 50e0 <_GLOBAL__sub_I__ZSt3cin+0x100>
if (val == 0)
35c6: ee0e11e3 bnez t3,34a8 <_vprintf_core.constprop.0.isra.0+0x45c>
buf[i++] = '0';
@@ -6406,7 +6406,7 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
35e8: 0d1c9f63 bne s9,a7,36c6 <_vprintf_core.constprop.0.isra.0+0x67a>
prefix_str = (spec == 'X') ? "0X" : "0x";
35ec: 00002c97 auipc s9,0x2
- 35f0: afcc8c93 addi s9,s9,-1284 # 50e8 <_GLOBAL__sub_I__ZSt3cin+0x120>
+ 35f0: b0cc8c93 addi s9,s9,-1268 # 50f8 <_GLOBAL__sub_I__ZSt3cin+0x118>
prefix_len += 2;
35f4: 2589 addiw a1,a1,2
int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
@@ -6479,7 +6479,7 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
3672: 4341 li t1,16
const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
3674: 00002f97 auipc t6,0x2
- 3678: a44f8f93 addi t6,t6,-1468 # 50b8 <_GLOBAL__sub_I__ZSt3cin+0xf0>
+ 3678: a54f8f93 addi t6,t6,-1452 # 50c8 <_GLOBAL__sub_I__ZSt3cin+0xe8>
367c: b525 j 34a4 <_vprintf_core.constprop.0.isra.0+0x458>
int padding = (width > len) ? width - len : 0;
367e: ca8058e3 blez s0,332e <_vprintf_core.constprop.0.isra.0+0x2e2>
@@ -6554,13 +6554,13 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
3708: 4329 li t1,10
const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
370a: 00002f97 auipc t6,0x2
- 370e: 9c6f8f93 addi t6,t6,-1594 # 50d0 <_GLOBAL__sub_I__ZSt3cin+0x108>
+ 370e: 9d6f8f93 addi t6,t6,-1578 # 50e0 <_GLOBAL__sub_I__ZSt3cin+0x100>
sign_char = '-';
3712: e03e sd a5,0(sp)
3714: bb51 j 34a8 <_vprintf_core.constprop.0.isra.0+0x45c>
s = "(null)";
3716: 00002c97 auipc s9,0x2
- 371a: 9e2c8c93 addi s9,s9,-1566 # 50f8 <_GLOBAL__sub_I__ZSt3cin+0x130>
+ 371a: 9f2c8c93 addi s9,s9,-1550 # 5108 <_GLOBAL__sub_I__ZSt3cin+0x128>
371e: bed1 j 32f2 <_vprintf_core.constprop.0.isra.0+0x2a6>
val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
3720: 000c3683 ld a3,0(s8)
@@ -6590,7 +6590,7 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
3750: 4341 li t1,16
const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
3752: 00002f97 auipc t6,0x2
- 3756: 97ef8f93 addi t6,t6,-1666 # 50d0 <_GLOBAL__sub_I__ZSt3cin+0x108>
+ 3756: 98ef8f93 addi t6,t6,-1650 # 50e0 <_GLOBAL__sub_I__ZSt3cin+0x100>
375a: b3a9 j 34a4 <_vprintf_core.constprop.0.isra.0+0x458>
for (int i = 0; i < padding; i++)
375c: c809 beqz s0,376e <_vprintf_core.constprop.0.isra.0+0x722>
@@ -6627,7 +6627,7 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
3790: 5c7d li s8,-1
prefix_str = (spec == 'X') ? "0X" : "0x";
3792: 00002c97 auipc s9,0x2
- 3796: 956c8c93 addi s9,s9,-1706 # 50e8 <_GLOBAL__sub_I__ZSt3cin+0x120>
+ 3796: 966c8c93 addi s9,s9,-1690 # 50f8 <_GLOBAL__sub_I__ZSt3cin+0x118>
379a: bda9 j 35f4 <_vprintf_core.constprop.0.isra.0+0x5a8>
if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
379c: 8d52 mv s10,s4
@@ -6645,7 +6645,7 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
37b4: 4329 li t1,10
const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
37b6: 00002f97 auipc t6,0x2
- 37ba: 91af8f93 addi t6,t6,-1766 # 50d0 <_GLOBAL__sub_I__ZSt3cin+0x108>
+ 37ba: 92af8f93 addi t6,t6,-1750 # 50e0 <_GLOBAL__sub_I__ZSt3cin+0x100>
37be: b1dd j 34a4 <_vprintf_core.constprop.0.isra.0+0x458>
val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
37c0: 000c3e03 ld t3,0(s8)
@@ -6655,7 +6655,7 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
37c8: 4341 li t1,16
const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
37ca: 00002f97 auipc t6,0x2
- 37ce: 906f8f93 addi t6,t6,-1786 # 50d0 <_GLOBAL__sub_I__ZSt3cin+0x108>
+ 37ce: 916f8f93 addi t6,t6,-1770 # 50e0 <_GLOBAL__sub_I__ZSt3cin+0x100>
37d2: b9c9 j 34a4 <_vprintf_core.constprop.0.isra.0+0x458>
char spec = *p++;
37d4: 8dbe mv s11,a5
@@ -6681,11 +6681,11 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
37f8: 4341 li t1,16
const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
37fa: 00002f97 auipc t6,0x2
- 37fe: 8d6f8f93 addi t6,t6,-1834 # 50d0 <_GLOBAL__sub_I__ZSt3cin+0x108>
+ 37fe: 8e6f8f93 addi t6,t6,-1818 # 50e0 <_GLOBAL__sub_I__ZSt3cin+0x100>
3802: b14d j 34a4 <_vprintf_core.constprop.0.isra.0+0x458>
prefix_str = (spec == 'X') ? "0X" : "0x";
3804: 00002c97 auipc s9,0x2
- 3808: 8ecc8c93 addi s9,s9,-1812 # 50f0 <_GLOBAL__sub_I__ZSt3cin+0x128>
+ 3808: 8fcc8c93 addi s9,s9,-1796 # 5100 <_GLOBAL__sub_I__ZSt3cin+0x120>
380c: b3e5 j 35f4 <_vprintf_core.constprop.0.isra.0+0x5a8>
val = (uint64)va_arg(ap, void *);
380e: 008c0713 addi a4,s8,8
@@ -6712,7 +6712,7 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
3836: e002 sd zero,0(sp)
3838: 4329 li t1,10
383a: 00002f97 auipc t6,0x2
- 383e: 896f8f93 addi t6,t6,-1898 # 50d0 <_GLOBAL__sub_I__ZSt3cin+0x108>
+ 383e: 8a6f8f93 addi t6,t6,-1882 # 50e0 <_GLOBAL__sub_I__ZSt3cin+0x100>
3842: b18d j 34a4 <_vprintf_core.constprop.0.isra.0+0x458>
val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
3844: 000c3e03 ld t3,0(s8)
@@ -6840,7 +6840,7 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
38f6: 85aa mv a1,a0
ctx.stream = stdout;
38f8: 00004797 auipc a5,0x4
- 38fc: db87b783 ld a5,-584(a5) # 76b0 <stdout>
+ 38fc: dd87b783 ld a5,-552(a5) # 76d0 <stdout>
_vprintf_core(&ctx, format, ap);
3900: 0808 addi a0,sp,16
3902: 861a mv a2,t1
@@ -6953,7 +6953,7 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
398c: e04a sd s2,0(sp)
if (strcmp(mode, "r") == 0)
398e: 00001597 auipc a1,0x1
- 3992: 78258593 addi a1,a1,1922 # 5110 <_GLOBAL__sub_I__ZSt3cin+0x148>
+ 3992: 79258593 addi a1,a1,1938 # 5120 <_GLOBAL__sub_I__ZSt3cin+0x140>
{
3996: 892a mv s2,a0
if (strcmp(mode, "r") == 0)
@@ -6962,14 +6962,14 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
399a: e822 sd s0,16(sp)
399c: ec06 sd ra,24(sp)
if (strcmp(mode, "r") == 0)
- 399e: 280010ef jal 4c1e <strcmp>
+ 399e: 298010ef jal 4c36 <strcmp>
39a2: 842a mv s0,a0
39a4: c919 beqz a0,39ba <fopen+0x34>
else if (strcmp(mode, "w") == 0)
39a6: 00001597 auipc a1,0x1
- 39aa: 77258593 addi a1,a1,1906 # 5118 <_GLOBAL__sub_I__ZSt3cin+0x150>
+ 39aa: 78258593 addi a1,a1,1922 # 5128 <_GLOBAL__sub_I__ZSt3cin+0x148>
39ae: 8526 mv a0,s1
- 39b0: 26e010ef jal 4c1e <strcmp>
+ 39b0: 286010ef jal 4c36 <strcmp>
flags = O_WRONLY | O_CREAT | O_TRUNC;
39b4: 24100413 li s0,577
else if (strcmp(mode, "w") == 0)
@@ -6990,7 +6990,7 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
memset(f, 0, sizeof(FILE));
39d4: 42000613 li a2,1056
39d8: 4581 li a1,0
- 39da: 0d6010ef jal 4ab0 <memset>
+ 39da: 0ee010ef jal 4ac8 <memset>
if (fd == 1)
39de: 4785 li a5,1
f->fd = (int)fd;
@@ -7024,18 +7024,18 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
3a14: 8082 ret
else if (strcmp(mode, "a") == 0)
3a16: 00001597 auipc a1,0x1
- 3a1a: 70a58593 addi a1,a1,1802 # 5120 <_GLOBAL__sub_I__ZSt3cin+0x158>
+ 3a1a: 71a58593 addi a1,a1,1818 # 5130 <_GLOBAL__sub_I__ZSt3cin+0x150>
3a1e: 8526 mv a0,s1
- 3a20: 1fe010ef jal 4c1e <strcmp>
+ 3a20: 216010ef jal 4c36 <strcmp>
flags = O_WRONLY | O_CREAT | O_APPEND;
3a24: 44100413 li s0,1089
else if (strcmp(mode, "a") == 0)
3a28: d949 beqz a0,39ba <fopen+0x34>
else if (strcmp(mode, "r+") == 0)
3a2a: 00001597 auipc a1,0x1
- 3a2e: 6fe58593 addi a1,a1,1790 # 5128 <_GLOBAL__sub_I__ZSt3cin+0x160>
+ 3a2e: 70e58593 addi a1,a1,1806 # 5138 <_GLOBAL__sub_I__ZSt3cin+0x158>
3a32: 8526 mv a0,s1
- 3a34: 1ea010ef jal 4c1e <strcmp>
+ 3a34: 202010ef jal 4c36 <strcmp>
flags = O_RDWR;
3a38: 4409 li s0,2
else if (strcmp(mode, "r+") == 0)
@@ -7064,7 +7064,7 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
3a58: 02c04a63 bgtz a2,3a8c <fclose+0x42>
if (stream != stdin && stream != stdout && stream != stderr)
3a5c: 00004797 auipc a5,0x4
- 3a60: c5478793 addi a5,a5,-940 # 76b0 <stdout>
+ 3a60: c7478793 addi a5,a5,-908 # 76d0 <stdout>
3a64: 6798 ld a4,8(a5)
3a66: 00870e63 beq a4,s0,3a82 <fclose+0x38>
3a6a: 6398 ld a4,0(a5)
@@ -7780,7 +7780,7 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
3f38: 8932 mv s2,a2
memcpy(dst + bytes_read, stream->buffer + stream->buf_read_pos, to_copy);
3f3a: 864a mv a2,s2
- 3f3c: 3c9000ef jal 4b04 <memcpy>
+ 3f3c: 3e1000ef jal 4b1c <memcpy>
stream->buf_read_pos += to_copy;
3f40: 41442783 lw a5,1044(s0)
bytes_read += to_copy;
@@ -7884,7 +7884,7 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
3fee: 059a6763 bltu s4,s9,403c <fwrite+0xac>
memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, remaining);
3ff2: 8666 mv a2,s9
- 3ff4: 311000ef jal 4b04 <memcpy>
+ 3ff4: 329000ef jal 4b1c <memcpy>
stream->buf_write_pos += remaining;
3ff8: 41042783 lw a5,1040(s0)
if (stream->buf_write_pos == BUFSIZ)
@@ -7920,7 +7920,7 @@ static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
4038: 6125 addi sp,sp,96
403a: 8082 ret
memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, space_left);
- 403c: 2c9000ef jal 4b04 <memcpy>
+ 403c: 2e1000ef jal 4b1c <memcpy>
stream->buf_write_pos += space_left;
4040: 41042783 lw a5,1040(s0)
int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
@@ -8301,7 +8301,7 @@ unsigned long long strtoull(const char *nptr, char **endptr, int base)
4298: 03000793 li a5,48
429c: 0ef70463 beq a4,a5,4384 <strtoull.part.0+0x12a>
42a0: 00ccd8b7 lui a7,0xccd
- 42a4: ccd88893 addi a7,a7,-819 # cccccd <_ZSt4cerr+0xcc5485>
+ 42a4: ccd88893 addi a7,a7,-819 # cccccd <_ZSt4cerr+0xcc5465>
42a8: 08b2 slli a7,a7,0xc
42aa: ccd88893 addi a7,a7,-819
42ae: 08b2 slli a7,a7,0xc
@@ -8422,7 +8422,7 @@ unsigned long long strtoull(const char *nptr, char **endptr, int base)
errno = ERANGE;
435c: 02200793 li a5,34
4360: 00003717 auipc a4,0x3
- 4364: 3af72823 sw a5,944(a4) # 7710 <errno>
+ 4364: 3cf72823 sw a5,976(a4) # 7730 <errno>
acc = ULLONG_MAX;
4368: 557d li a0,-1
if (endptr != 0)
@@ -8480,7 +8480,7 @@ unsigned long long strtoull(const char *nptr, char **endptr, int base)
00000000000043da <atexit>:
if (__atexit_func_count >= ATEXIT_MAX)
43da: 00003717 auipc a4,0x3
- 43de: 33670713 addi a4,a4,822 # 7710 <errno>
+ 43de: 35670713 addi a4,a4,854 # 7730 <errno>
43e2: 435c lw a5,4(a4)
43e4: 46fd li a3,31
43e6: 00f6ca63 blt a3,a5,43fa <atexit+0x20>
@@ -8504,7 +8504,7 @@ unsigned long long strtoull(const char *nptr, char **endptr, int base)
4400: e822 sd s0,16(sp)
while (__atexit_func_count > 0)
4402: 00003417 auipc s0,0x3
- 4406: 30e40413 addi s0,s0,782 # 7710 <errno>
+ 4406: 32e40413 addi s0,s0,814 # 7730 <errno>
440a: 405c lw a5,4(s0)
{
440c: e426 sd s1,8(sp)
@@ -8554,7 +8554,7 @@ unsigned long long strtoull(const char *nptr, char **endptr, int base)
4448: c121 beqz a0,4488 <free+0x40>
for (p = freep; !(bp > p && bp < p->next); p = p->next)
444a: 00003617 auipc a2,0x3
- 444e: 2c660613 addi a2,a2,710 # 7710 <errno>
+ 444e: 2e660613 addi a2,a2,742 # 7730 <errno>
4452: 10863783 ld a5,264(a2)
bp = (header_t *)ptr - 1;
4456: ff050693 addi a3,a0,-16
@@ -8609,2057 +8609,2071 @@ unsigned long long strtoull(const char *nptr, char **endptr, int base)
00000000000044be <malloc>:
if (size == 0)
- 44be: c54d beqz a0,4568 <malloc+0xaa>
+ 44be: c169 beqz a0,4580 <malloc+0xc2>
{
- 44c0: 1101 addi sp,sp,-32
- 44c2: e426 sd s1,8(sp)
+ 44c0: 7179 addi sp,sp,-48
+ 44c2: ec26 sd s1,24(sp)
if ((prevp = freep) == NULL)
44c4: 00003497 auipc s1,0x3
- 44c8: 24c48493 addi s1,s1,588 # 7710 <errno>
+ 44c8: 26c48493 addi s1,s1,620 # 7730 <errno>
44cc: 1084b783 ld a5,264(s1)
{
- 44d0: e822 sd s0,16(sp)
+ 44d0: f022 sd s0,32(sp)
size = ALIGN(size + sizeof(header_t));
44d2: 057d addi a0,a0,31
{
- 44d4: ec06 sd ra,24(sp)
+ 44d4: f406 sd ra,40(sp)
size = ALIGN(size + sizeof(header_t));
44d6: ff057413 andi s0,a0,-16
if ((prevp = freep) == NULL)
- 44da: c7b5 beqz a5,4546 <malloc+0x88>
+ 44da: c3d1 beqz a5,455e <malloc+0xa0>
for (p = prevp->next;; prevp = p, p = p->next)
44dc: 6788 ld a0,8(a5)
if (p->size >= size)
44de: 6118 ld a4,0(a0)
- 44e0: 04877663 bgeu a4,s0,452c <malloc+0x6e>
- 44e4: e04a sd s2,0(sp)
+ 44e0: 06877163 bgeu a4,s0,4542 <malloc+0x84>
+ 44e4: e44e sd s3,8(sp)
+ 44e6: e052 sd s4,0(sp)
+ 44e8: e84a sd s2,16(sp)
+ if (nu < 4096)
+ 44ea: 6a05 lui s4,0x1
if (cp == (void *)-1)
- 44e6: 597d li s2,-1
- 44e8: a029 j 44f2 <malloc+0x34>
+ 44ec: 59fd li s3,-1
+ 44ee: a029 j 44f8 <malloc+0x3a>
for (p = prevp->next;; prevp = p, p = p->next)
- 44ea: 6788 ld a0,8(a5)
+ 44f0: 6788 ld a0,8(a5)
if (p->size >= size)
- 44ec: 6118 ld a4,0(a0)
- 44ee: 02877e63 bgeu a4,s0,452a <malloc+0x6c>
+ 44f2: 6118 ld a4,0(a0)
+ 44f4: 04877463 bgeu a4,s0,453c <malloc+0x7e>
if (p == freep)
- 44f2: 1084b703 ld a4,264(s1)
- 44f6: 87aa mv a5,a0
- 44f8: fea719e3 bne a4,a0,44ea <malloc+0x2c>
+ 44f8: 1084b703 ld a4,264(s1)
+ 44fc: 87aa mv a5,a0
+ 44fe: fee519e3 bne a0,a4,44f0 <malloc+0x32>
+ if (nu < 4096)
+ 4502: 8922 mv s2,s0
+ 4504: 01447363 bgeu s0,s4,450a <malloc+0x4c>
+ 4508: 6905 lui s2,0x1
cp = (char *)sbrk(nu);
- 44fc: 6505 lui a0,0x1
- 44fe: c53fb0ef jal 150 <sbrk>
- 4502: 87aa mv a5,a0
+ 450a: 854a mv a0,s2
+ 450c: c45fb0ef jal 150 <sbrk>
+ 4510: 87aa mv a5,a0
free((void *)(up + 1));
- 4504: 0541 addi a0,a0,16 # 1010 <_vscanf_core.constprop.0+0x6a8>
+ 4512: 0541 addi a0,a0,16
if (cp == (void *)-1)
- 4506: 01278963 beq a5,s2,4518 <malloc+0x5a>
+ 4514: 01378963 beq a5,s3,4526 <malloc+0x68>
up->size = nu;
- 450a: 6705 lui a4,0x1
- 450c: e398 sd a4,0(a5)
+ 4518: 0127b023 sd s2,0(a5)
free((void *)(up + 1));
- 450e: f3bff0ef jal 4448 <free>
+ 451c: f2dff0ef jal 4448 <free>
return freep;
- 4512: 1084b783 ld a5,264(s1)
- if ((p = morecore(nunits * sizeof(header_t))) == NULL)
- 4516: fbf1 bnez a5,44ea <malloc+0x2c>
+ 4520: 1084b783 ld a5,264(s1)
+ if ((p = morecore(size)) == NULL)
+ 4524: f7f1 bnez a5,44f0 <malloc+0x32>
}
- 4518: 60e2 ld ra,24(sp)
- 451a: 6442 ld s0,16(sp)
+ 4526: 70a2 ld ra,40(sp)
+ 4528: 7402 ld s0,32(sp)
errno = ENOMEM;
- 451c: 47b1 li a5,12
- 451e: c09c sw a5,0(s1)
+ 452a: 47b1 li a5,12
+ 452c: c09c sw a5,0(s1)
return NULL;
- 4520: 6902 ld s2,0(sp)
+ 452e: 6942 ld s2,16(sp)
+ 4530: 69a2 ld s3,8(sp)
+ 4532: 6a02 ld s4,0(sp)
}
- 4522: 64a2 ld s1,8(sp)
+ 4534: 64e2 ld s1,24(sp)
return NULL;
- 4524: 4501 li a0,0
+ 4536: 4501 li a0,0
}
- 4526: 6105 addi sp,sp,32
- 4528: 8082 ret
- 452a: 6902 ld s2,0(sp)
+ 4538: 6145 addi sp,sp,48
+ 453a: 8082 ret
+ 453c: 6942 ld s2,16(sp)
+ 453e: 69a2 ld s3,8(sp)
+ 4540: 6a02 ld s4,0(sp)
if (p->size == size)
- 452c: 02e40b63 beq s0,a4,4562 <malloc+0xa4>
+ 4542: 02e40c63 beq s0,a4,457a <malloc+0xbc>
+ p->size -= size;
+ 4546: 8f01 sub a4,a4,s0
+ 4548: e118 sd a4,0(a0)
p = (header_t *)((char *)p + p->size);
- 4530: 953a add a0,a0,a4
- p->size = (nunits * sizeof(header_t));
- 4532: 00053023 sd zero,0(a0)
+ 454a: 953a add a0,a0,a4
+ p->size = size;
+ 454c: e100 sd s0,0(a0)
}
- 4536: 60e2 ld ra,24(sp)
- 4538: 6442 ld s0,16(sp)
+ 454e: 70a2 ld ra,40(sp)
+ 4550: 7402 ld s0,32(sp)
freep = prevp;
- 453a: 10f4b423 sd a5,264(s1)
+ 4552: 10f4b423 sd a5,264(s1)
return (void *)(p + 1);
- 453e: 0541 addi a0,a0,16
+ 4556: 0541 addi a0,a0,16
}
- 4540: 64a2 ld s1,8(sp)
- 4542: 6105 addi sp,sp,32
- 4544: 8082 ret
+ 4558: 64e2 ld s1,24(sp)
+ 455a: 6145 addi sp,sp,48
+ 455c: 8082 ret
base.next = freep = prevp = &base;
- 4546: 00003517 auipc a0,0x3
- 454a: 2da50513 addi a0,a0,730 # 7820 <base>
- 454e: 10a4b423 sd a0,264(s1)
- 4552: 10a4bc23 sd a0,280(s1)
+ 455e: 00003517 auipc a0,0x3
+ 4562: 2e250513 addi a0,a0,738 # 7840 <base>
+ 4566: 10a4b423 sd a0,264(s1)
+ 456a: 10a4bc23 sd a0,280(s1)
base.size = 0;
- 4556: 00003797 auipc a5,0x3
- 455a: 2c07b523 sd zero,714(a5) # 7820 <base>
+ 456e: 00003797 auipc a5,0x3
+ 4572: 2c07b923 sd zero,722(a5) # 7840 <base>
if (p->size >= size)
- 455e: f059 bnez s0,44e4 <malloc+0x26>
+ 4576: f43d bnez s0,44e4 <malloc+0x26>
base.next = freep = prevp = &base;
- 4560: 87aa mv a5,a0
+ 4578: 87aa mv a5,a0
prevp->next = p->next;
- 4562: 6518 ld a4,8(a0)
- 4564: e798 sd a4,8(a5)
- 4566: bfc1 j 4536 <malloc+0x78>
+ 457a: 6518 ld a4,8(a0)
+ 457c: e798 sd a4,8(a5)
+ 457e: bfc1 j 454e <malloc+0x90>
return NULL;
- 4568: 4501 li a0,0
+ 4580: 4501 li a0,0
}
- 456a: 8082 ret
+ 4582: 8082 ret
-000000000000456c <calloc>:
+0000000000004584 <calloc>:
if (__builtin_mul_overflow(nmemb, size, &total))
- 456c: 02b537b3 mulhu a5,a0,a1
+ 4584: 02b537b3 mulhu a5,a0,a1
{
- 4570: 1101 addi sp,sp,-32
- 4572: e822 sd s0,16(sp)
- 4574: ec06 sd ra,24(sp)
- 4576: e426 sd s1,8(sp)
+ 4588: 1101 addi sp,sp,-32
+ 458a: e822 sd s0,16(sp)
+ 458c: ec06 sd ra,24(sp)
+ 458e: e426 sd s1,8(sp)
if (__builtin_mul_overflow(nmemb, size, &total))
- 4578: 02b50433 mul s0,a0,a1
- 457c: e385 bnez a5,459c <calloc+0x30>
+ 4590: 02b50433 mul s0,a0,a1
+ 4594: e385 bnez a5,45b4 <calloc+0x30>
void *p = malloc(total);
- 457e: 8522 mv a0,s0
- 4580: f3fff0ef jal 44be <malloc>
- 4584: 84aa mv s1,a0
+ 4596: 8522 mv a0,s0
+ 4598: f27ff0ef jal 44be <malloc>
+ 459c: 84aa mv s1,a0
if (p)
- 4586: c509 beqz a0,4590 <calloc+0x24>
+ 459e: c509 beqz a0,45a8 <calloc+0x24>
memset(p, 0, total);
- 4588: 8622 mv a2,s0
- 458a: 4581 li a1,0
- 458c: 524000ef jal 4ab0 <memset>
-}
- 4590: 60e2 ld ra,24(sp)
- 4592: 6442 ld s0,16(sp)
- 4594: 8526 mv a0,s1
- 4596: 64a2 ld s1,8(sp)
- 4598: 6105 addi sp,sp,32
- 459a: 8082 ret
- 459c: 60e2 ld ra,24(sp)
- 459e: 6442 ld s0,16(sp)
- errno = ENOMEM;
- 45a0: 47b1 li a5,12
- return NULL;
- 45a2: 4481 li s1,0
- errno = ENOMEM;
- 45a4: 00003717 auipc a4,0x3
- 45a8: 16f72623 sw a5,364(a4) # 7710 <errno>
+ 45a0: 8622 mv a2,s0
+ 45a2: 4581 li a1,0
+ 45a4: 524000ef jal 4ac8 <memset>
}
+ 45a8: 60e2 ld ra,24(sp)
+ 45aa: 6442 ld s0,16(sp)
45ac: 8526 mv a0,s1
45ae: 64a2 ld s1,8(sp)
45b0: 6105 addi sp,sp,32
45b2: 8082 ret
+ 45b4: 60e2 ld ra,24(sp)
+ 45b6: 6442 ld s0,16(sp)
+ errno = ENOMEM;
+ 45b8: 47b1 li a5,12
+ return NULL;
+ 45ba: 4481 li s1,0
+ errno = ENOMEM;
+ 45bc: 00003717 auipc a4,0x3
+ 45c0: 16f72a23 sw a5,372(a4) # 7730 <errno>
+}
+ 45c4: 8526 mv a0,s1
+ 45c6: 64a2 ld s1,8(sp)
+ 45c8: 6105 addi sp,sp,32
+ 45ca: 8082 ret
-00000000000045b4 <realloc>:
+00000000000045cc <realloc>:
if (!ptr)
- 45b4: c929 beqz a0,4606 <realloc+0x52>
+ 45cc: c929 beqz a0,461e <realloc+0x52>
{
- 45b6: 1101 addi sp,sp,-32
- 45b8: ec06 sd ra,24(sp)
- 45ba: e426 sd s1,8(sp)
+ 45ce: 1101 addi sp,sp,-32
+ 45d0: ec06 sd ra,24(sp)
+ 45d2: e426 sd s1,8(sp)
if (size == 0)
- 45bc: c5b9 beqz a1,460a <realloc+0x56>
+ 45d4: c5b9 beqz a1,4622 <realloc+0x56>
if (bp->size >= new_size)
- 45be: ff053703 ld a4,-16(a0)
+ 45d6: ff053703 ld a4,-16(a0)
size_t new_size = ALIGN(size + sizeof(header_t));
- 45c2: 01f58793 addi a5,a1,31
- 45c6: e822 sd s0,16(sp)
- 45c8: 9bc1 andi a5,a5,-16
- 45ca: 842a mv s0,a0
+ 45da: 01f58793 addi a5,a1,31
+ 45de: e822 sd s0,16(sp)
+ 45e0: 9bc1 andi a5,a5,-16
+ 45e2: 842a mv s0,a0
return ptr;
- 45cc: 84aa mv s1,a0
+ 45e4: 84aa mv s1,a0
if (bp->size >= new_size)
- 45ce: 00f76863 bltu a4,a5,45de <realloc+0x2a>
- 45d2: 6442 ld s0,16(sp)
-}
- 45d4: 60e2 ld ra,24(sp)
- 45d6: 8526 mv a0,s1
- 45d8: 64a2 ld s1,8(sp)
- 45da: 6105 addi sp,sp,32
- 45dc: 8082 ret
+ 45e6: 00f76863 bltu a4,a5,45f6 <realloc+0x2a>
+ 45ea: 6442 ld s0,16(sp)
+}
+ 45ec: 60e2 ld ra,24(sp)
+ 45ee: 8526 mv a0,s1
+ 45f0: 64a2 ld s1,8(sp)
+ 45f2: 6105 addi sp,sp,32
+ 45f4: 8082 ret
void *new_ptr = malloc(size);
- 45de: 852e mv a0,a1
- 45e0: edfff0ef jal 44be <malloc>
- 45e4: 84aa mv s1,a0
+ 45f6: 852e mv a0,a1
+ 45f8: ec7ff0ef jal 44be <malloc>
+ 45fc: 84aa mv s1,a0
if (!new_ptr)
- 45e6: d575 beqz a0,45d2 <realloc+0x1e>
+ 45fe: d575 beqz a0,45ea <realloc+0x1e>
memcpy(new_ptr, ptr, bp->size - sizeof(header_t));
- 45e8: ff043603 ld a2,-16(s0)
- 45ec: 85a2 mv a1,s0
- 45ee: 1641 addi a2,a2,-16
- 45f0: 514000ef jal 4b04 <memcpy>
+ 4600: ff043603 ld a2,-16(s0)
+ 4604: 85a2 mv a1,s0
+ 4606: 1641 addi a2,a2,-16
+ 4608: 514000ef jal 4b1c <memcpy>
free(ptr);
- 45f4: 8522 mv a0,s0
- 45f6: e53ff0ef jal 4448 <free>
+ 460c: 8522 mv a0,s0
+ 460e: e3bff0ef jal 4448 <free>
}
- 45fa: 60e2 ld ra,24(sp)
+ 4612: 60e2 ld ra,24(sp)
free(ptr);
- 45fc: 6442 ld s0,16(sp)
+ 4614: 6442 ld s0,16(sp)
}
- 45fe: 8526 mv a0,s1
- 4600: 64a2 ld s1,8(sp)
- 4602: 6105 addi sp,sp,32
- 4604: 8082 ret
+ 4616: 8526 mv a0,s1
+ 4618: 64a2 ld s1,8(sp)
+ 461a: 6105 addi sp,sp,32
+ 461c: 8082 ret
return malloc(size);
- 4606: 852e mv a0,a1
- 4608: bd5d j 44be <malloc>
+ 461e: 852e mv a0,a1
+ 4620: bd79 j 44be <malloc>
free(ptr);
- 460a: e3fff0ef jal 4448 <free>
+ 4622: e27ff0ef jal 4448 <free>
return NULL;
- 460e: 4481 li s1,0
- 4610: b7d1 j 45d4 <realloc+0x20>
+ 4626: 4481 li s1,0
+ 4628: b7d1 j 45ec <realloc+0x20>
-0000000000004612 <strtoull>:
+000000000000462a <strtoull>:
if (base < 0 || base == 1 || base > 36)
- 4612: 02400813 li a6,36
+ 462a: 02400813 li a6,36
{
- 4616: 86aa mv a3,a0
- 4618: 872e mv a4,a1
+ 462e: 86aa mv a3,a0
+ 4630: 872e mv a4,a1
if (base < 0 || base == 1 || base > 36)
- 461a: 00c86663 bltu a6,a2,4626 <strtoull+0x14>
- 461e: 4805 li a6,1
- 4620: 01060363 beq a2,a6,4626 <strtoull+0x14>
- 4624: b91d j 425a <strtoull.part.0>
+ 4632: 00c86663 bltu a6,a2,463e <strtoull+0x14>
+ 4636: 4805 li a6,1
+ 4638: 01060363 beq a2,a6,463e <strtoull+0x14>
+ 463c: b939 j 425a <strtoull.part.0>
if (endptr)
- 4626: c311 beqz a4,462a <strtoull+0x18>
+ 463e: c311 beqz a4,4642 <strtoull+0x18>
*endptr = (char *)nptr;
- 4628: e314 sd a3,0(a4)
+ 4640: e314 sd a3,0(a4)
errno = 0; /* EINVAL */
- 462a: 00003797 auipc a5,0x3
- 462e: 0e07a323 sw zero,230(a5) # 7710 <errno>
+ 4642: 00003797 auipc a5,0x3
+ 4646: 0e07a723 sw zero,238(a5) # 7730 <errno>
}
- 4632: 4501 li a0,0
- 4634: 8082 ret
+ 464a: 4501 li a0,0
+ 464c: 8082 ret
-0000000000004636 <strtoll>:
+000000000000464e <strtoll>:
long long strtoll(const char *nptr, char **endptr, int base)
{
- 4636: 1141 addi sp,sp,-16
- 4638: e406 sd ra,8(sp)
- 463a: e022 sd s0,0(sp)
+ 464e: 1141 addi sp,sp,-16
+ 4650: e406 sd ra,8(sp)
+ 4652: e022 sd s0,0(sp)
const char *s = nptr;
- 463c: 86aa mv a3,a0
+ 4654: 86aa mv a3,a0
static inline int isspace(int c) { return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; }
- 463e: 02000813 li a6,32
- 4642: 4891 li a7,4
+ 4656: 02000813 li a6,32
+ 465a: 4891 li a7,4
unsigned long long acc;
int c, neg = 0;
do
{
c = *s++;
- 4644: 0006c783 lbu a5,0(a3)
- 4648: 0685 addi a3,a3,1
- 464a: ff77871b addiw a4,a5,-9
- 464e: 0ff77713 zext.b a4,a4
- 4652: 0007841b sext.w s0,a5
- 4656: ff0787e3 beq a5,a6,4644 <strtoll+0xe>
- 465a: fee8f5e3 bgeu a7,a4,4644 <strtoll+0xe>
+ 465c: 0006c783 lbu a5,0(a3)
+ 4660: 0685 addi a3,a3,1
+ 4662: ff77871b addiw a4,a5,-9
+ 4666: 0ff77713 zext.b a4,a4
+ 466a: 0007841b sext.w s0,a5
+ 466e: ff0787e3 beq a5,a6,465c <strtoll+0xe>
+ 4672: fee8f5e3 bgeu a7,a4,465c <strtoll+0xe>
if (base < 0 || base == 1 || base > 36)
- 465e: 02400793 li a5,36
- 4662: 02c7ec63 bltu a5,a2,469a <strtoll+0x64>
- 4666: 4785 li a5,1
- 4668: 02f60963 beq a2,a5,469a <strtoll+0x64>
- 466c: befff0ef jal 425a <strtoull.part.0>
+ 4676: 02400793 li a5,36
+ 467a: 02c7ec63 bltu a5,a2,46b2 <strtoll+0x64>
+ 467e: 4785 li a5,1
+ 4680: 02f60963 beq a2,a5,46b2 <strtoll+0x64>
+ 4684: bd7ff0ef jal 425a <strtoull.part.0>
if (c == '-')
neg = 1;
acc = strtoull(nptr, endptr, base);
if (errno == ERANGE && acc == ULLONG_MAX)
- 4670: 00003797 auipc a5,0x3
- 4674: 0a078793 addi a5,a5,160 # 7710 <errno>
- 4678: 4394 lw a3,0(a5)
- 467a: 02200713 li a4,34
- 467e: 04e68363 beq a3,a4,46c4 <strtoll+0x8e>
+ 4688: 00003797 auipc a5,0x3
+ 468c: 0a878793 addi a5,a5,168 # 7730 <errno>
+ 4690: 4394 lw a3,0(a5)
+ 4692: 02200713 li a4,34
+ 4696: 04e68363 beq a3,a4,46dc <strtoll+0x8e>
return neg ? LLONG_MIN : LLONG_MAX;
if (!neg && acc > (unsigned long long)LLONG_MAX)
- 4682: 02d00713 li a4,45
- 4686: 02e40563 beq s0,a4,46b0 <strtoll+0x7a>
- 468a: 00055f63 bgez a0,46a8 <strtoll+0x72>
+ 469a: 02d00713 li a4,45
+ 469e: 02e40563 beq s0,a4,46c8 <strtoll+0x7a>
+ 46a2: 00055f63 bgez a0,46c0 <strtoll+0x72>
{
errno = ERANGE;
- 468e: 02200713 li a4,34
- 4692: c398 sw a4,0(a5)
+ 46a6: 02200713 li a4,34
+ 46aa: c398 sw a4,0(a5)
return neg ? LLONG_MIN : LLONG_MAX;
- 4694: 557d li a0,-1
- 4696: 8105 srli a0,a0,0x1
- 4698: a801 j 46a8 <strtoll+0x72>
+ 46ac: 557d li a0,-1
+ 46ae: 8105 srli a0,a0,0x1
+ 46b0: a801 j 46c0 <strtoll+0x72>
if (endptr)
- 469a: c191 beqz a1,469e <strtoll+0x68>
+ 46b2: c191 beqz a1,46b6 <strtoll+0x68>
*endptr = (char *)nptr;
- 469c: e188 sd a0,0(a1)
+ 46b4: e188 sd a0,0(a1)
errno = 0; /* EINVAL */
- 469e: 00003797 auipc a5,0x3
- 46a2: 0607a923 sw zero,114(a5) # 7710 <errno>
+ 46b6: 00003797 auipc a5,0x3
+ 46ba: 0607ad23 sw zero,122(a5) # 7730 <errno>
{
errno = ERANGE;
return LLONG_MIN;
}
return neg ? -(long long)acc : (long long)acc;
- 46a6: 4501 li a0,0
+ 46be: 4501 li a0,0
}
- 46a8: 60a2 ld ra,8(sp)
- 46aa: 6402 ld s0,0(sp)
- 46ac: 0141 addi sp,sp,16
- 46ae: 8082 ret
+ 46c0: 60a2 ld ra,8(sp)
+ 46c2: 6402 ld s0,0(sp)
+ 46c4: 0141 addi sp,sp,16
+ 46c6: 8082 ret
if (neg && acc > (unsigned long long)LLONG_MAX + 1)
- 46b0: 577d li a4,-1
- 46b2: 177e slli a4,a4,0x3f
- 46b4: 02a76263 bltu a4,a0,46d8 <strtoll+0xa2>
+ 46c8: 577d li a4,-1
+ 46ca: 177e slli a4,a4,0x3f
+ 46cc: 02a76263 bltu a4,a0,46f0 <strtoll+0xa2>
}
- 46b8: 60a2 ld ra,8(sp)
- 46ba: 6402 ld s0,0(sp)
+ 46d0: 60a2 ld ra,8(sp)
+ 46d2: 6402 ld s0,0(sp)
return neg ? -(long long)acc : (long long)acc;
- 46bc: 40a00533 neg a0,a0
+ 46d4: 40a00533 neg a0,a0
}
- 46c0: 0141 addi sp,sp,16
- 46c2: 8082 ret
+ 46d8: 0141 addi sp,sp,16
+ 46da: 8082 ret
if (errno == ERANGE && acc == ULLONG_MAX)
- 46c4: 577d li a4,-1
- 46c6: fae51ee3 bne a0,a4,4682 <strtoll+0x4c>
+ 46dc: 577d li a4,-1
+ 46de: fae51ee3 bne a0,a4,469a <strtoll+0x4c>
return neg ? LLONG_MIN : LLONG_MAX;
- 46ca: 02d00793 li a5,45
- 46ce: fcf413e3 bne s0,a5,4694 <strtoll+0x5e>
+ 46e2: 02d00793 li a5,45
+ 46e6: fcf413e3 bne s0,a5,46ac <strtoll+0x5e>
return LLONG_MIN;
- 46d2: 557d li a0,-1
- 46d4: 157e slli a0,a0,0x3f
- 46d6: bfc9 j 46a8 <strtoll+0x72>
+ 46ea: 557d li a0,-1
+ 46ec: 157e slli a0,a0,0x3f
+ 46ee: bfc9 j 46c0 <strtoll+0x72>
errno = ERANGE;
- 46d8: 02200713 li a4,34
- 46dc: c398 sw a4,0(a5)
+ 46f0: 02200713 li a4,34
+ 46f4: c398 sw a4,0(a5)
return LLONG_MIN;
- 46de: bfd5 j 46d2 <strtoll+0x9c>
+ 46f6: bfd5 j 46ea <strtoll+0x9c>
-00000000000046e0 <strtoul>:
+00000000000046f8 <strtoul>:
if (base < 0 || base == 1 || base > 36)
- 46e0: 02400813 li a6,36
+ 46f8: 02400813 li a6,36
unsigned long strtoul(const char *nptr, char **endptr, int base)
{
- 46e4: 86aa mv a3,a0
- 46e6: 872e mv a4,a1
+ 46fc: 86aa mv a3,a0
+ 46fe: 872e mv a4,a1
if (base < 0 || base == 1 || base > 36)
- 46e8: 00c86663 bltu a6,a2,46f4 <strtoul+0x14>
- 46ec: 4805 li a6,1
- 46ee: 01060363 beq a2,a6,46f4 <strtoul+0x14>
- 46f2: b6a5 j 425a <strtoull.part.0>
+ 4700: 00c86663 bltu a6,a2,470c <strtoul+0x14>
+ 4704: 4805 li a6,1
+ 4706: 01060363 beq a2,a6,470c <strtoul+0x14>
+ 470a: be81 j 425a <strtoull.part.0>
if (endptr)
- 46f4: c311 beqz a4,46f8 <strtoul+0x18>
+ 470c: c311 beqz a4,4710 <strtoul+0x18>
*endptr = (char *)nptr;
- 46f6: e314 sd a3,0(a4)
+ 470e: e314 sd a3,0(a4)
errno = 0; /* EINVAL */
- 46f8: 00003797 auipc a5,0x3
- 46fc: 0007ac23 sw zero,24(a5) # 7710 <errno>
+ 4710: 00003797 auipc a5,0x3
+ 4714: 0207a023 sw zero,32(a5) # 7730 <errno>
{
errno = ERANGE;
return ULONG_MAX;
}
return (unsigned long)ret;
}
- 4700: 4501 li a0,0
- 4702: 8082 ret
+ 4718: 4501 li a0,0
+ 471a: 8082 ret
-0000000000004704 <strtol>:
+000000000000471c <strtol>:
long strtol(const char *nptr, char **endptr, int base)
{
long long ret = strtoll(nptr, endptr, base);
- 4704: bf0d j 4636 <strtoll>
+ 471c: bf0d j 464e <strtoll>
-0000000000004706 <atoi>:
+000000000000471e <atoi>:
return LONG_MIN;
}
return (long)ret;
}
int atoi(const char *nptr) { return (int)strtol(nptr, NULL, 10); }
- 4706: 1141 addi sp,sp,-16
+ 471e: 1141 addi sp,sp,-16
long long ret = strtoll(nptr, endptr, base);
- 4708: 4629 li a2,10
- 470a: 4581 li a1,0
+ 4720: 4629 li a2,10
+ 4722: 4581 li a1,0
int atoi(const char *nptr) { return (int)strtol(nptr, NULL, 10); }
- 470c: e406 sd ra,8(sp)
+ 4724: e406 sd ra,8(sp)
long long ret = strtoll(nptr, endptr, base);
- 470e: f29ff0ef jal 4636 <strtoll>
+ 4726: f29ff0ef jal 464e <strtoll>
int atoi(const char *nptr) { return (int)strtol(nptr, NULL, 10); }
- 4712: 60a2 ld ra,8(sp)
- 4714: 2501 sext.w a0,a0
- 4716: 0141 addi sp,sp,16
- 4718: 8082 ret
+ 472a: 60a2 ld ra,8(sp)
+ 472c: 2501 sext.w a0,a0
+ 472e: 0141 addi sp,sp,16
+ 4730: 8082 ret
-000000000000471a <atol>:
+0000000000004732 <atol>:
long long ret = strtoll(nptr, endptr, base);
- 471a: 4629 li a2,10
- 471c: 4581 li a1,0
- 471e: bf21 j 4636 <strtoll>
+ 4732: 4629 li a2,10
+ 4734: 4581 li a1,0
+ 4736: bf21 j 464e <strtoll>
-0000000000004720 <atoll>:
+0000000000004738 <atoll>:
long atol(const char *nptr) { return strtol(nptr, NULL, 10); }
long long atoll(const char *nptr) { return strtoll(nptr, NULL, 10); }
- 4720: 4629 li a2,10
- 4722: 4581 li a1,0
- 4724: bf09 j 4636 <strtoll>
+ 4738: 4629 li a2,10
+ 473a: 4581 li a1,0
+ 473c: bf09 j 464e <strtoll>
-0000000000004726 <strtod>:
- 4726: 02000693 li a3,32
- 472a: 4611 li a2,4
+000000000000473e <strtod>:
+ 473e: 02000693 li a3,32
+ 4742: 4611 li a2,4
{
double val = 0.0;
int sign = 1;
const char *s = nptr;
while (isspace(*s))
- 472c: 00054783 lbu a5,0(a0)
- 4730: ff77871b addiw a4,a5,-9
- 4734: 0ff77713 zext.b a4,a4
- 4738: 06d78263 beq a5,a3,479c <strtod+0x76>
- 473c: 06e67063 bgeu a2,a4,479c <strtod+0x76>
+ 4744: 00054783 lbu a5,0(a0)
+ 4748: ff77871b addiw a4,a5,-9
+ 474c: 0ff77713 zext.b a4,a4
+ 4750: 06d78263 beq a5,a3,47b4 <strtod+0x76>
+ 4754: 06e67063 bgeu a2,a4,47b4 <strtod+0x76>
s++;
if (*s == '-')
- 4740: 02d00713 li a4,45
- 4744: 08e78e63 beq a5,a4,47e0 <strtod+0xba>
+ 4758: 02d00713 li a4,45
+ 475c: 08e78e63 beq a5,a4,47f8 <strtod+0xba>
{
sign = -1;
s++;
}
else if (*s == '+')
- 4748: 02b00713 li a4,43
- 474c: 0ae78263 beq a5,a4,47f0 <strtod+0xca>
- 4750: 00001717 auipc a4,0x1
- 4754: 0e873507 fld fa0,232(a4) # 5838 <STDIN_FD+0x10>
+ 4760: 02b00713 li a4,43
+ 4764: 0ae78263 beq a5,a4,4808 <strtod+0xca>
+ 4768: 00001717 auipc a4,0x1
+ 476c: 0e073507 fld fa0,224(a4) # 5848 <STDIN_FD+0x10>
static inline int isdigit(int c) { return c >= '0' && c <= '9'; }
- 4758: fd07861b addiw a2,a5,-48
+ 4770: fd07861b addiw a2,a5,-48
s++;
while (isdigit(*s))
- 475c: 46a5 li a3,9
- 475e: f20007d3 fmv.d.x fa5,zero
- 4762: 8732 mv a4,a2
- 4764: 02c6e363 bltu a3,a2,478a <strtod+0x64>
- 4768: 00001797 auipc a5,0x1
- 476c: 0d87b687 fld fa3,216(a5) # 5840 <STDIN_FD+0x18>
- 4770: 4625 li a2,9
- 4772: 00154783 lbu a5,1(a0)
+ 4774: 46a5 li a3,9
+ 4776: f20007d3 fmv.d.x fa5,zero
+ 477a: 8732 mv a4,a2
+ 477c: 02c6e363 bltu a3,a2,47a2 <strtod+0x64>
+ 4780: 00001797 auipc a5,0x1
+ 4784: 0d07b687 fld fa3,208(a5) # 5850 <STDIN_FD+0x18>
+ 4788: 4625 li a2,9
+ 478a: 00154783 lbu a5,1(a0)
{
val = val * 10.0 + (*s - '0');
- 4776: d2070753 fcvt.d.w fa4,a4
+ 478e: d2070753 fcvt.d.w fa4,a4
s++;
- 477a: 0505 addi a0,a0,1
- 477c: fd07869b addiw a3,a5,-48
+ 4792: 0505 addi a0,a0,1
+ 4794: fd07869b addiw a3,a5,-48
val = val * 10.0 + (*s - '0');
- 4780: 72d7f7c3 fmadd.d fa5,fa5,fa3,fa4
- 4784: 8736 mv a4,a3
+ 4798: 72d7f7c3 fmadd.d fa5,fa5,fa3,fa4
+ 479c: 8736 mv a4,a3
while (isdigit(*s))
- 4786: fed676e3 bgeu a2,a3,4772 <strtod+0x4c>
+ 479e: fed676e3 bgeu a2,a3,478a <strtod+0x4c>
}
if (*s == '.')
- 478a: 02e00713 li a4,46
- 478e: 00e78963 beq a5,a4,47a0 <strtod+0x7a>
+ 47a2: 02e00713 li a4,46
+ 47a6: 00e78963 beq a5,a4,47b8 <strtod+0x7a>
val += (*s - '0') * factor;
s++;
}
}
if (endptr)
- 4792: c191 beqz a1,4796 <strtod+0x70>
+ 47aa: c191 beqz a1,47ae <strtod+0x70>
*endptr = (char *)s;
- 4794: e188 sd a0,0(a1)
+ 47ac: e188 sd a0,0(a1)
return val * sign;
}
- 4796: 12a7f553 fmul.d fa0,fa5,fa0
- 479a: 8082 ret
+ 47ae: 12a7f553 fmul.d fa0,fa5,fa0
+ 47b2: 8082 ret
s++;
- 479c: 0505 addi a0,a0,1
- 479e: b779 j 472c <strtod+0x6>
+ 47b4: 0505 addi a0,a0,1
+ 47b6: b779 j 4744 <strtod+0x6>
while (isdigit(*s))
- 47a0: 00154703 lbu a4,1(a0)
- 47a4: 46a5 li a3,9
+ 47b8: 00154703 lbu a4,1(a0)
+ 47bc: 46a5 li a3,9
s++;
- 47a6: 0505 addi a0,a0,1
- 47a8: fd07071b addiw a4,a4,-48
- 47ac: 87ba mv a5,a4
+ 47be: 0505 addi a0,a0,1
+ 47c0: fd07071b addiw a4,a4,-48
+ 47c4: 87ba mv a5,a4
while (isdigit(*s))
- 47ae: fee6e2e3 bltu a3,a4,4792 <strtod+0x6c>
+ 47c6: fee6e2e3 bltu a3,a4,47aa <strtod+0x6c>
double factor = 1.0;
- 47b2: 00001717 auipc a4,0x1
- 47b6: 08673707 fld fa4,134(a4) # 5838 <STDIN_FD+0x10>
- 47ba: 00001717 auipc a4,0x1
- 47be: 09e73607 fld fa2,158(a4) # 5858 <STDIN_FD+0x30>
+ 47ca: 00001717 auipc a4,0x1
+ 47ce: 07e73707 fld fa4,126(a4) # 5848 <STDIN_FD+0x10>
+ 47d2: 00001717 auipc a4,0x1
+ 47d6: 09673607 fld fa2,150(a4) # 5868 <STDIN_FD+0x30>
factor *= 0.1;
- 47c2: 12c77753 fmul.d fa4,fa4,fa2
+ 47da: 12c77753 fmul.d fa4,fa4,fa2
while (isdigit(*s))
- 47c6: 00154703 lbu a4,1(a0)
+ 47de: 00154703 lbu a4,1(a0)
val += (*s - '0') * factor;
- 47ca: d20786d3 fcvt.d.w fa3,a5
+ 47e2: d20786d3 fcvt.d.w fa3,a5
s++;
- 47ce: 0505 addi a0,a0,1
- 47d0: fd07071b addiw a4,a4,-48
- 47d4: 87ba mv a5,a4
+ 47e6: 0505 addi a0,a0,1
+ 47e8: fd07071b addiw a4,a4,-48
+ 47ec: 87ba mv a5,a4
val += (*s - '0') * factor;
- 47d6: 7ae6f7c3 fmadd.d fa5,fa3,fa4,fa5
+ 47ee: 7ae6f7c3 fmadd.d fa5,fa3,fa4,fa5
while (isdigit(*s))
- 47da: fee6f4e3 bgeu a3,a4,47c2 <strtod+0x9c>
- 47de: bf55 j 4792 <strtod+0x6c>
+ 47f2: fee6f4e3 bgeu a3,a4,47da <strtod+0x9c>
+ 47f6: bf55 j 47aa <strtod+0x6c>
while (isdigit(*s))
- 47e0: 00154783 lbu a5,1(a0)
- 47e4: 00001717 auipc a4,0x1
- 47e8: 04c73507 fld fa0,76(a4) # 5830 <STDIN_FD+0x8>
+ 47f8: 00154783 lbu a5,1(a0)
+ 47fc: 00001717 auipc a4,0x1
+ 4800: 04473507 fld fa0,68(a4) # 5840 <STDIN_FD+0x8>
s++;
- 47ec: 0505 addi a0,a0,1
- 47ee: b7ad j 4758 <strtod+0x32>
+ 4804: 0505 addi a0,a0,1
+ 4806: b7ad j 4770 <strtod+0x32>
while (isdigit(*s))
- 47f0: 00154783 lbu a5,1(a0)
- 47f4: 00001717 auipc a4,0x1
- 47f8: 04473507 fld fa0,68(a4) # 5838 <STDIN_FD+0x10>
+ 4808: 00154783 lbu a5,1(a0)
+ 480c: 00001717 auipc a4,0x1
+ 4810: 03c73507 fld fa0,60(a4) # 5848 <STDIN_FD+0x10>
s++;
- 47fc: 0505 addi a0,a0,1
- 47fe: bfa9 j 4758 <strtod+0x32>
+ 4814: 0505 addi a0,a0,1
+ 4816: bfa9 j 4770 <strtod+0x32>
-0000000000004800 <atof>:
+0000000000004818 <atof>:
double atof(const char *nptr) { return strtod(nptr, NULL); }
- 4800: 4581 li a1,0
- 4802: b715 j 4726 <strtod>
+ 4818: 4581 li a1,0
+ 481a: b715 j 473e <strtod>
-0000000000004804 <strtof>:
+000000000000481c <strtof>:
float strtof(const char *nptr, char **endptr) { return (float)strtod(nptr, endptr); }
- 4804: 1141 addi sp,sp,-16
- 4806: e406 sd ra,8(sp)
- 4808: f1fff0ef jal 4726 <strtod>
- 480c: 60a2 ld ra,8(sp)
- 480e: 40157553 fcvt.s.d fa0,fa0
- 4812: 0141 addi sp,sp,16
- 4814: 8082 ret
-
-0000000000004816 <qsort>:
+ 481c: 1141 addi sp,sp,-16
+ 481e: e406 sd ra,8(sp)
+ 4820: f1fff0ef jal 473e <strtod>
+ 4824: 60a2 ld ra,8(sp)
+ 4826: 40157553 fcvt.s.d fa0,fa0
+ 482a: 0141 addi sp,sp,16
+ 482c: 8082 ret
+
+000000000000482e <qsort>:
}
}
void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *))
{
if (nmemb < 2 || size == 0)
- 4816: 4785 li a5,1
- 4818: 0cb7fd63 bgeu a5,a1,48f2 <qsort+0xdc>
+ 482e: 4785 li a5,1
+ 4830: 0cb7fd63 bgeu a5,a1,490a <qsort+0xdc>
{
- 481c: 715d addi sp,sp,-80
- 481e: f44e sd s3,40(sp)
- 4820: e486 sd ra,72(sp)
- 4822: 89b2 mv s3,a2
+ 4834: 715d addi sp,sp,-80
+ 4836: f44e sd s3,40(sp)
+ 4838: e486 sd ra,72(sp)
+ 483a: 89b2 mv s3,a2
if (nmemb < 2 || size == 0)
- 4824: c279 beqz a2,48ea <qsort+0xd4>
- 4826: e85a sd s6,16(sp)
- 4828: 8b2e mv s6,a1
+ 483c: c279 beqz a2,4902 <qsort+0xd4>
+ 483e: e85a sd s6,16(sp)
+ 4840: 8b2e mv s6,a1
return;
char *base_ptr = (char *)base;
char *pivot = base_ptr + (nmemb - 1) * size;
- 482a: 1b7d addi s6,s6,-1
- 482c: fc26 sd s1,56(sp)
- 482e: 033b04b3 mul s1,s6,s3
- 4832: ec56 sd s5,24(sp)
- 4834: 8aaa mv s5,a0
- 4836: f052 sd s4,32(sp)
- 4838: e45e sd s7,8(sp)
- 483a: e0a2 sd s0,64(sp)
- 483c: f84a sd s2,48(sp)
- 483e: 8a36 mv s4,a3
+ 4842: 1b7d addi s6,s6,-1
+ 4844: fc26 sd s1,56(sp)
+ 4846: 033b04b3 mul s1,s6,s3
+ 484a: ec56 sd s5,24(sp)
+ 484c: 8aaa mv s5,a0
+ 484e: f052 sd s4,32(sp)
+ 4850: e45e sd s7,8(sp)
+ 4852: e0a2 sd s0,64(sp)
+ 4854: f84a sd s2,48(sp)
+ 4856: 8a36 mv s4,a3
if (nmemb < 2 || size == 0)
- 4840: 4b85 li s7,1
+ 4858: 4b85 li s7,1
char *pivot = base_ptr + (nmemb - 1) * size;
- 4842: 94d6 add s1,s1,s5
+ 485a: 94d6 add s1,s1,s5
char *i = base_ptr;
char *j = base_ptr;
/* Partition */
for (; j < pivot; j += size)
- 4844: 069af763 bgeu s5,s1,48b2 <qsort+0x9c>
+ 485c: 069af763 bgeu s5,s1,48ca <qsort+0x9c>
char *j = base_ptr;
- 4848: 8956 mv s2,s5
+ 4860: 8956 mv s2,s5
char *i = base_ptr;
- 484a: 8456 mv s0,s5
- 484c: a021 j 4854 <qsort+0x3e>
+ 4862: 8456 mv s0,s5
+ 4864: a021 j 486c <qsort+0x3e>
for (; j < pivot; j += size)
- 484e: 994e add s2,s2,s3
- 4850: 00997f63 bgeu s2,s1,486e <qsort+0x58>
+ 4866: 994e add s2,s2,s3
+ 4868: 00997f63 bgeu s2,s1,4886 <qsort+0x58>
{
if (compar(j, pivot) < 0)
- 4854: 85a6 mv a1,s1
- 4856: 854a mv a0,s2
- 4858: 9a02 jalr s4
- 485a: fe055ae3 bgez a0,484e <qsort+0x38>
+ 486c: 85a6 mv a1,s1
+ 486e: 854a mv a0,s2
+ 4870: 9a02 jalr s4
+ 4872: fe055ae3 bgez a0,4866 <qsort+0x38>
{
if (i != j)
- 485e: 05241d63 bne s0,s2,48b8 <qsort+0xa2>
- 4862: 01390633 add a2,s2,s3
+ 4876: 05241d63 bne s0,s2,48d0 <qsort+0xa2>
+ 487a: 01390633 add a2,s2,s3
swap_bytes(i, j, size);
i += size;
- 4866: 8432 mv s0,a2
+ 487e: 8432 mv s0,a2
for (; j < pivot; j += size)
- 4868: 994e add s2,s2,s3
- 486a: fe9965e3 bltu s2,s1,4854 <qsort+0x3e>
+ 4880: 994e add s2,s2,s3
+ 4882: fe9965e3 bltu s2,s1,486c <qsort+0x3e>
}
}
swap_bytes(i, pivot, size);
/* Recurse */
size_t left_count = (i - base_ptr) / size;
- 486e: 415405b3 sub a1,s0,s5
- 4872: 0335d5b3 divu a1,a1,s3
+ 4886: 415405b3 sub a1,s0,s5
+ 488a: 0335d5b3 divu a1,a1,s3
qsort(base, left_count, size, compar);
qsort(i + size, nmemb - left_count - 1, size, compar);
- 4876: 40bb0b33 sub s6,s6,a1
+ 488e: 40bb0b33 sub s6,s6,a1
while (size--)
- 487a: 013406b3 add a3,s0,s3
+ 4892: 013406b3 add a3,s0,s3
*a++ = *b;
- 487e: 0004c703 lbu a4,0(s1)
+ 4896: 0004c703 lbu a4,0(s1)
temp = *a;
- 4882: 00044783 lbu a5,0(s0)
+ 489a: 00044783 lbu a5,0(s0)
*b++ = temp;
- 4886: 0485 addi s1,s1,1
+ 489e: 0485 addi s1,s1,1
*a++ = *b;
- 4888: 0405 addi s0,s0,1
- 488a: fee40fa3 sb a4,-1(s0)
+ 48a0: 0405 addi s0,s0,1
+ 48a2: fee40fa3 sb a4,-1(s0)
*b++ = temp;
- 488e: fef48fa3 sb a5,-1(s1)
+ 48a6: fef48fa3 sb a5,-1(s1)
while (size--)
- 4892: fed416e3 bne s0,a3,487e <qsort+0x68>
+ 48aa: fed416e3 bne s0,a3,4896 <qsort+0x68>
qsort(base, left_count, size, compar);
- 4896: 86d2 mv a3,s4
- 4898: 864e mv a2,s3
- 489a: 8556 mv a0,s5
- 489c: f7bff0ef jal 4816 <qsort>
+ 48ae: 86d2 mv a3,s4
+ 48b0: 864e mv a2,s3
+ 48b2: 8556 mv a0,s5
+ 48b4: f7bff0ef jal 482e <qsort>
if (nmemb < 2 || size == 0)
- 48a0: 036bfe63 bgeu s7,s6,48dc <qsort+0xc6>
+ 48b8: 036bfe63 bgeu s7,s6,48f4 <qsort+0xc6>
char *pivot = base_ptr + (nmemb - 1) * size;
- 48a4: 1b7d addi s6,s6,-1
- 48a6: 033b04b3 mul s1,s6,s3
- 48aa: 8aa2 mv s5,s0
- 48ac: 94d6 add s1,s1,s5
+ 48bc: 1b7d addi s6,s6,-1
+ 48be: 033b04b3 mul s1,s6,s3
+ 48c2: 8aa2 mv s5,s0
+ 48c4: 94d6 add s1,s1,s5
for (; j < pivot; j += size)
- 48ae: f89aede3 bltu s5,s1,4848 <qsort+0x32>
+ 48c6: f89aede3 bltu s5,s1,4860 <qsort+0x32>
char *i = base_ptr;
- 48b2: 8456 mv s0,s5
+ 48ca: 8456 mv s0,s5
for (; j < pivot; j += size)
- 48b4: 4581 li a1,0
- 48b6: b7d1 j 487a <qsort+0x64>
- 48b8: 01340633 add a2,s0,s3
+ 48cc: 4581 li a1,0
+ 48ce: b7d1 j 4892 <qsort+0x64>
+ 48d0: 01340633 add a2,s0,s3
if (i != j)
- 48bc: 874a mv a4,s2
- 48be: 87a2 mv a5,s0
+ 48d4: 874a mv a4,s2
+ 48d6: 87a2 mv a5,s0
*a++ = *b;
- 48c0: 00074683 lbu a3,0(a4)
+ 48d8: 00074683 lbu a3,0(a4)
temp = *a;
- 48c4: 0007c803 lbu a6,0(a5)
+ 48dc: 0007c803 lbu a6,0(a5)
*b++ = temp;
- 48c8: 0705 addi a4,a4,1
+ 48e0: 0705 addi a4,a4,1
*a++ = *b;
- 48ca: 0785 addi a5,a5,1
- 48cc: fed78fa3 sb a3,-1(a5)
+ 48e2: 0785 addi a5,a5,1
+ 48e4: fed78fa3 sb a3,-1(a5)
*b++ = temp;
- 48d0: ff070fa3 sb a6,-1(a4)
+ 48e8: ff070fa3 sb a6,-1(a4)
while (size--)
- 48d4: fec796e3 bne a5,a2,48c0 <qsort+0xaa>
+ 48ec: fec796e3 bne a5,a2,48d8 <qsort+0xaa>
i += size;
- 48d8: 8432 mv s0,a2
- 48da: b779 j 4868 <qsort+0x52>
- 48dc: 6406 ld s0,64(sp)
- 48de: 74e2 ld s1,56(sp)
- 48e0: 7942 ld s2,48(sp)
- 48e2: 7a02 ld s4,32(sp)
- 48e4: 6ae2 ld s5,24(sp)
- 48e6: 6b42 ld s6,16(sp)
- 48e8: 6ba2 ld s7,8(sp)
-}
- 48ea: 60a6 ld ra,72(sp)
- 48ec: 79a2 ld s3,40(sp)
- 48ee: 6161 addi sp,sp,80
- 48f0: 8082 ret
- 48f2: 8082 ret
-
-00000000000048f4 <bsearch>:
+ 48f0: 8432 mv s0,a2
+ 48f2: b779 j 4880 <qsort+0x52>
+ 48f4: 6406 ld s0,64(sp)
+ 48f6: 74e2 ld s1,56(sp)
+ 48f8: 7942 ld s2,48(sp)
+ 48fa: 7a02 ld s4,32(sp)
+ 48fc: 6ae2 ld s5,24(sp)
+ 48fe: 6b42 ld s6,16(sp)
+ 4900: 6ba2 ld s7,8(sp)
+}
+ 4902: 60a6 ld ra,72(sp)
+ 4904: 79a2 ld s3,40(sp)
+ 4906: 6161 addi sp,sp,80
+ 4908: 8082 ret
+ 490a: 8082 ret
+
+000000000000490c <bsearch>:
void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *))
{
- 48f4: 715d addi sp,sp,-80
- 48f6: e486 sd ra,72(sp)
- 48f8: fc26 sd s1,56(sp)
+ 490c: 715d addi sp,sp,-80
+ 490e: e486 sd ra,72(sp)
+ 4910: fc26 sd s1,56(sp)
size_t l = 0, u = nmemb;
while (l < u)
- 48fa: c629 beqz a2,4944 <bsearch+0x50>
- 48fc: f84a sd s2,48(sp)
- 48fe: f44e sd s3,40(sp)
- 4900: f052 sd s4,32(sp)
- 4902: ec56 sd s5,24(sp)
- 4904: e85a sd s6,16(sp)
- 4906: e45e sd s7,8(sp)
- 4908: e0a2 sd s0,64(sp)
- 490a: 8932 mv s2,a2
- 490c: 8a2a mv s4,a0
- 490e: 8aae mv s5,a1
- 4910: 8b36 mv s6,a3
- 4912: 8bba mv s7,a4
+ 4912: c629 beqz a2,495c <bsearch+0x50>
+ 4914: f84a sd s2,48(sp)
+ 4916: f44e sd s3,40(sp)
+ 4918: f052 sd s4,32(sp)
+ 491a: ec56 sd s5,24(sp)
+ 491c: e85a sd s6,16(sp)
+ 491e: e45e sd s7,8(sp)
+ 4920: e0a2 sd s0,64(sp)
+ 4922: 8932 mv s2,a2
+ 4924: 8a2a mv s4,a0
+ 4926: 8aae mv s5,a1
+ 4928: 8b36 mv s6,a3
+ 492a: 8bba mv s7,a4
size_t l = 0, u = nmemb;
- 4914: 4981 li s3,0
+ 492c: 4981 li s3,0
{
size_t idx = (l + u) / 2;
- 4916: 01298433 add s0,s3,s2
- 491a: 8005 srli s0,s0,0x1
+ 492e: 01298433 add s0,s3,s2
+ 4932: 8005 srli s0,s0,0x1
const void *p = (void *)((const char *)base + (idx * size));
- 491c: 036404b3 mul s1,s0,s6
+ 4934: 036404b3 mul s1,s0,s6
int cmp = compar(key, p);
- 4920: 8552 mv a0,s4
+ 4938: 8552 mv a0,s4
const void *p = (void *)((const char *)base + (idx * size));
- 4922: 94d6 add s1,s1,s5
+ 493a: 94d6 add s1,s1,s5
int cmp = compar(key, p);
- 4924: 85a6 mv a1,s1
- 4926: 9b82 jalr s7
+ 493c: 85a6 mv a1,s1
+ 493e: 9b82 jalr s7
if (cmp < 0)
- 4928: 02054463 bltz a0,4950 <bsearch+0x5c>
+ 4940: 02054463 bltz a0,4968 <bsearch+0x5c>
u = idx;
else if (cmp > 0)
- 492c: c515 beqz a0,4958 <bsearch+0x64>
+ 4944: c515 beqz a0,4970 <bsearch+0x64>
l = idx + 1;
- 492e: 00140993 addi s3,s0,1
+ 4946: 00140993 addi s3,s0,1
while (l < u)
- 4932: ff29e2e3 bltu s3,s2,4916 <bsearch+0x22>
- 4936: 6406 ld s0,64(sp)
- 4938: 7942 ld s2,48(sp)
- 493a: 79a2 ld s3,40(sp)
- 493c: 7a02 ld s4,32(sp)
- 493e: 6ae2 ld s5,24(sp)
- 4940: 6b42 ld s6,16(sp)
- 4942: 6ba2 ld s7,8(sp)
+ 494a: ff29e2e3 bltu s3,s2,492e <bsearch+0x22>
+ 494e: 6406 ld s0,64(sp)
+ 4950: 7942 ld s2,48(sp)
+ 4952: 79a2 ld s3,40(sp)
+ 4954: 7a02 ld s4,32(sp)
+ 4956: 6ae2 ld s5,24(sp)
+ 4958: 6b42 ld s6,16(sp)
+ 495a: 6ba2 ld s7,8(sp)
else
return (void *)p;
}
return NULL;
}
- 4944: 60a6 ld ra,72(sp)
+ 495c: 60a6 ld ra,72(sp)
return NULL;
- 4946: 4481 li s1,0
+ 495e: 4481 li s1,0
}
- 4948: 8526 mv a0,s1
- 494a: 74e2 ld s1,56(sp)
- 494c: 6161 addi sp,sp,80
- 494e: 8082 ret
+ 4960: 8526 mv a0,s1
+ 4962: 74e2 ld s1,56(sp)
+ 4964: 6161 addi sp,sp,80
+ 4966: 8082 ret
u = idx;
- 4950: 8922 mv s2,s0
+ 4968: 8922 mv s2,s0
while (l < u)
- 4952: fd29e2e3 bltu s3,s2,4916 <bsearch+0x22>
- 4956: b7c5 j 4936 <bsearch+0x42>
- 4958: 6406 ld s0,64(sp)
-}
- 495a: 60a6 ld ra,72(sp)
- 495c: 7942 ld s2,48(sp)
- 495e: 79a2 ld s3,40(sp)
- 4960: 7a02 ld s4,32(sp)
- 4962: 6ae2 ld s5,24(sp)
- 4964: 6b42 ld s6,16(sp)
- 4966: 6ba2 ld s7,8(sp)
- 4968: 8526 mv a0,s1
- 496a: 74e2 ld s1,56(sp)
- 496c: 6161 addi sp,sp,80
- 496e: 8082 ret
-
-0000000000004970 <abs>:
+ 496a: fd29e2e3 bltu s3,s2,492e <bsearch+0x22>
+ 496e: b7c5 j 494e <bsearch+0x42>
+ 4970: 6406 ld s0,64(sp)
+}
+ 4972: 60a6 ld ra,72(sp)
+ 4974: 7942 ld s2,48(sp)
+ 4976: 79a2 ld s3,40(sp)
+ 4978: 7a02 ld s4,32(sp)
+ 497a: 6ae2 ld s5,24(sp)
+ 497c: 6b42 ld s6,16(sp)
+ 497e: 6ba2 ld s7,8(sp)
+ 4980: 8526 mv a0,s1
+ 4982: 74e2 ld s1,56(sp)
+ 4984: 6161 addi sp,sp,80
+ 4986: 8082 ret
+
+0000000000004988 <abs>:
/* Math & Mics */
int abs(int j) { return (j < 0) ? -j : j; }
- 4970: 41f5579b sraiw a5,a0,0x1f
- 4974: 8d3d xor a0,a0,a5
- 4976: 9d1d subw a0,a0,a5
- 4978: 8082 ret
+ 4988: 41f5579b sraiw a5,a0,0x1f
+ 498c: 8d3d xor a0,a0,a5
+ 498e: 9d1d subw a0,a0,a5
+ 4990: 8082 ret
-000000000000497a <labs>:
+0000000000004992 <labs>:
long labs(long j) { return (j < 0) ? -j : j; }
- 497a: 43f55793 srai a5,a0,0x3f
- 497e: 8d3d xor a0,a0,a5
- 4980: 8d1d sub a0,a0,a5
- 4982: 8082 ret
+ 4992: 43f55793 srai a5,a0,0x3f
+ 4996: 8d3d xor a0,a0,a5
+ 4998: 8d1d sub a0,a0,a5
+ 499a: 8082 ret
-0000000000004984 <llabs>:
+000000000000499c <llabs>:
long long llabs(long long j) { return (j < 0) ? -j : j; }
- 4984: 43f55793 srai a5,a0,0x3f
- 4988: 8d3d xor a0,a0,a5
- 498a: 8d1d sub a0,a0,a5
- 498c: 8082 ret
+ 499c: 43f55793 srai a5,a0,0x3f
+ 49a0: 8d3d xor a0,a0,a5
+ 49a2: 8d1d sub a0,a0,a5
+ 49a4: 8082 ret
-000000000000498e <div>:
+00000000000049a6 <div>:
div_t div(int numer, int denom)
{
div_t res = {numer / denom, numer % denom};
- 498e: 02b547bb divw a5,a0,a1
+ 49a6: 02b547bb divw a5,a0,a1
{
- 4992: 1141 addi sp,sp,-16
+ 49aa: 1141 addi sp,sp,-16
return res;
}
- 4994: 0141 addi sp,sp,16
+ 49ac: 0141 addi sp,sp,16
div_t res = {numer / denom, numer % denom};
- 4996: 02b5653b remw a0,a0,a1
+ 49ae: 02b5653b remw a0,a0,a1
return res;
- 499a: 1782 slli a5,a5,0x20
- 499c: 9381 srli a5,a5,0x20
- 499e: 1502 slli a0,a0,0x20
+ 49b2: 1782 slli a5,a5,0x20
+ 49b4: 9381 srli a5,a5,0x20
+ 49b6: 1502 slli a0,a0,0x20
}
- 49a0: 8d5d or a0,a0,a5
- 49a2: 8082 ret
+ 49b8: 8d5d or a0,a0,a5
+ 49ba: 8082 ret
-00000000000049a4 <ldiv>:
+00000000000049bc <ldiv>:
ldiv_t ldiv(long numer, long denom)
{
- 49a4: 1141 addi sp,sp,-16
- 49a6: 87aa mv a5,a0
+ 49bc: 1141 addi sp,sp,-16
+ 49be: 87aa mv a5,a0
ldiv_t res = {numer / denom, numer % denom};
return res;
}
- 49a8: 02b54533 div a0,a0,a1
- 49ac: 0141 addi sp,sp,16
- 49ae: 02b7e5b3 rem a1,a5,a1
- 49b2: 8082 ret
+ 49c0: 02b54533 div a0,a0,a1
+ 49c4: 0141 addi sp,sp,16
+ 49c6: 02b7e5b3 rem a1,a5,a1
+ 49ca: 8082 ret
-00000000000049b4 <lldiv>:
+00000000000049cc <lldiv>:
lldiv_t lldiv(long long numer, long long denom)
{
- 49b4: 1141 addi sp,sp,-16
- 49b6: 87aa mv a5,a0
+ 49cc: 1141 addi sp,sp,-16
+ 49ce: 87aa mv a5,a0
lldiv_t res = {numer / denom, numer % denom};
return res;
}
- 49b8: 02b54533 div a0,a0,a1
- 49bc: 0141 addi sp,sp,16
- 49be: 02b7e5b3 rem a1,a5,a1
- 49c2: 8082 ret
+ 49d0: 02b54533 div a0,a0,a1
+ 49d4: 0141 addi sp,sp,16
+ 49d6: 02b7e5b3 rem a1,a5,a1
+ 49da: 8082 ret
-00000000000049c4 <rand>:
+00000000000049dc <rand>:
static unsigned long next = 1;
int rand(void)
{
next = next * 1103515245 + 12345;
- 49c4: 00003697 auipc a3,0x3
- 49c8: d0468693 addi a3,a3,-764 # 76c8 <next>
- 49cc: 629c ld a5,0(a3)
- 49ce: 41c65737 lui a4,0x41c65
- 49d2: e6d70713 addi a4,a4,-403 # 41c64e6d <_ZSt4cerr+0x41c5d625>
- 49d6: 02e787b3 mul a5,a5,a4
- 49da: 670d lui a4,0x3
- 49dc: 03970713 addi a4,a4,57 # 3039 <sprintf+0x43>
- 49e0: 97ba add a5,a5,a4
+ 49dc: 00003697 auipc a3,0x3
+ 49e0: d0c68693 addi a3,a3,-756 # 76e8 <next>
+ 49e4: 629c ld a5,0(a3)
+ 49e6: 41c65737 lui a4,0x41c65
+ 49ea: e6d70713 addi a4,a4,-403 # 41c64e6d <_ZSt4cerr+0x41c5d605>
+ 49ee: 02e787b3 mul a5,a5,a4
+ 49f2: 670d lui a4,0x3
+ 49f4: 03970713 addi a4,a4,57 # 3039 <sprintf+0x43>
+ 49f8: 97ba add a5,a5,a4
return (unsigned int)(next / 65536) % 32768;
- 49e2: 02179513 slli a0,a5,0x21
+ 49fa: 02179513 slli a0,a5,0x21
next = next * 1103515245 + 12345;
- 49e6: e29c sd a5,0(a3)
+ 49fe: e29c sd a5,0(a3)
}
- 49e8: 9145 srli a0,a0,0x31
- 49ea: 8082 ret
+ 4a00: 9145 srli a0,a0,0x31
+ 4a02: 8082 ret
-00000000000049ec <srand>:
+0000000000004a04 <srand>:
void srand(unsigned int seed) { next = seed; }
- 49ec: 1502 slli a0,a0,0x20
- 49ee: 9101 srli a0,a0,0x20
- 49f0: 00003797 auipc a5,0x3
- 49f4: cca7bc23 sd a0,-808(a5) # 76c8 <next>
- 49f8: 8082 ret
+ 4a04: 1502 slli a0,a0,0x20
+ 4a06: 9101 srli a0,a0,0x20
+ 4a08: 00003797 auipc a5,0x3
+ 4a0c: cea7b023 sd a0,-800(a5) # 76e8 <next>
+ 4a10: 8082 ret
-00000000000049fa <mblen>:
+0000000000004a12 <mblen>:
/* Stub */
int mblen(const char *s, size_t n) { return (s && *s && n) ? 1 : 0; }
- 49fa: c901 beqz a0,4a0a <mblen+0x10>
- 49fc: 00054783 lbu a5,0(a0)
- 4a00: 4501 li a0,0
- 4a02: c789 beqz a5,4a0c <mblen+0x12>
- 4a04: 00b03533 snez a0,a1
- 4a08: 8082 ret
- 4a0a: 4501 li a0,0
- 4a0c: 8082 ret
-
-0000000000004a0e <mbtowc>:
+ 4a12: c901 beqz a0,4a22 <mblen+0x10>
+ 4a14: 00054783 lbu a5,0(a0)
+ 4a18: 4501 li a0,0
+ 4a1a: c789 beqz a5,4a24 <mblen+0x12>
+ 4a1c: 00b03533 snez a0,a1
+ 4a20: 8082 ret
+ 4a22: 4501 li a0,0
+ 4a24: 8082 ret
+
+0000000000004a26 <mbtowc>:
int mbtowc(wchar_t *pwc, const char *s, size_t n)
{
- 4a0e: 87aa mv a5,a0
+ 4a26: 87aa mv a5,a0
if (!s)
- 4a10: cd81 beqz a1,4a28 <mbtowc+0x1a>
+ 4a28: cd81 beqz a1,4a40 <mbtowc+0x1a>
return 0;
if (n == 0)
return -1;
- 4a12: 557d li a0,-1
+ 4a2a: 557d li a0,-1
if (n == 0)
- 4a14: ca19 beqz a2,4a2a <mbtowc+0x1c>
+ 4a2c: ca19 beqz a2,4a42 <mbtowc+0x1c>
if (pwc)
- 4a16: c781 beqz a5,4a1e <mbtowc+0x10>
+ 4a2e: c781 beqz a5,4a36 <mbtowc+0x10>
*pwc = (wchar_t)*s;
- 4a18: 0005c703 lbu a4,0(a1)
- 4a1c: c398 sw a4,0(a5)
+ 4a30: 0005c703 lbu a4,0(a1)
+ 4a34: c398 sw a4,0(a5)
return (*s != 0);
- 4a1e: 0005c503 lbu a0,0(a1)
- 4a22: 00a03533 snez a0,a0
- 4a26: 8082 ret
+ 4a36: 0005c503 lbu a0,0(a1)
+ 4a3a: 00a03533 snez a0,a0
+ 4a3e: 8082 ret
return 0;
- 4a28: 4501 li a0,0
+ 4a40: 4501 li a0,0
}
- 4a2a: 8082 ret
+ 4a42: 8082 ret
-0000000000004a2c <wctomb>:
+0000000000004a44 <wctomb>:
int wctomb(char *s, wchar_t wchar)
{
if (!s)
- 4a2c: c509 beqz a0,4a36 <wctomb+0xa>
+ 4a44: c509 beqz a0,4a4e <wctomb+0xa>
return 0;
*s = (char)wchar;
- 4a2e: 00b50023 sb a1,0(a0)
+ 4a46: 00b50023 sb a1,0(a0)
return 1;
- 4a32: 4505 li a0,1
- 4a34: 8082 ret
+ 4a4a: 4505 li a0,1
+ 4a4c: 8082 ret
return 0;
- 4a36: 4501 li a0,0
+ 4a4e: 4501 li a0,0
}
- 4a38: 8082 ret
+ 4a50: 8082 ret
-0000000000004a3a <mbstowcs>:
+0000000000004a52 <mbstowcs>:
size_t mbstowcs(wchar_t *dest, const char *src, size_t n)
{
size_t i = 0;
while (src[i] && i < n)
- 4a3a: 0005c703 lbu a4,0(a1)
- 4a3e: cb0d beqz a4,4a70 <mbstowcs+0x36>
- 4a40: ca15 beqz a2,4a74 <mbstowcs+0x3a>
- 4a42: 86aa mv a3,a0
+ 4a52: 0005c703 lbu a4,0(a1)
+ 4a56: cb0d beqz a4,4a88 <mbstowcs+0x36>
+ 4a58: ca15 beqz a2,4a8c <mbstowcs+0x3a>
+ 4a5a: 86aa mv a3,a0
size_t i = 0;
- 4a44: 4781 li a5,0
- 4a46: a019 j 4a4c <mbstowcs+0x12>
+ 4a5c: 4781 li a5,0
+ 4a5e: a019 j 4a64 <mbstowcs+0x12>
while (src[i] && i < n)
- 4a48: 02f60263 beq a2,a5,4a6c <mbstowcs+0x32>
+ 4a60: 02f60263 beq a2,a5,4a84 <mbstowcs+0x32>
{
dest[i] = (wchar_t)src[i];
i++;
- 4a4c: 0785 addi a5,a5,1
+ 4a64: 0785 addi a5,a5,1
dest[i] = (wchar_t)src[i];
- 4a4e: c298 sw a4,0(a3)
+ 4a66: c298 sw a4,0(a3)
while (src[i] && i < n)
- 4a50: 00f58733 add a4,a1,a5
- 4a54: 00074703 lbu a4,0(a4)
- 4a58: 0691 addi a3,a3,4
- 4a5a: f77d bnez a4,4a48 <mbstowcs+0xe>
+ 4a68: 00f58733 add a4,a1,a5
+ 4a6c: 00074703 lbu a4,0(a4)
+ 4a70: 0691 addi a3,a3,4
+ 4a72: f77d bnez a4,4a60 <mbstowcs+0xe>
}
if (i < n)
- 4a5c: 00c7f763 bgeu a5,a2,4a6a <mbstowcs+0x30>
+ 4a74: 00c7f763 bgeu a5,a2,4a82 <mbstowcs+0x30>
dest[i] = 0;
- 4a60: 00279713 slli a4,a5,0x2
- 4a64: 953a add a0,a0,a4
- 4a66: 00052023 sw zero,0(a0)
+ 4a78: 00279713 slli a4,a5,0x2
+ 4a7c: 953a add a0,a0,a4
+ 4a7e: 00052023 sw zero,0(a0)
size_t i = 0;
- 4a6a: 863e mv a2,a5
- 4a6c: 8532 mv a0,a2
- 4a6e: 8082 ret
- 4a70: 4781 li a5,0
- 4a72: b7ed j 4a5c <mbstowcs+0x22>
- 4a74: 4501 li a0,0
+ 4a82: 863e mv a2,a5
+ 4a84: 8532 mv a0,a2
+ 4a86: 8082 ret
+ 4a88: 4781 li a5,0
+ 4a8a: b7ed j 4a74 <mbstowcs+0x22>
+ 4a8c: 4501 li a0,0
return i;
}
- 4a76: 8082 ret
+ 4a8e: 8082 ret
-0000000000004a78 <wcstombs>:
+0000000000004a90 <wcstombs>:
size_t wcstombs(char *dest, const wchar_t *src, size_t n)
{
size_t i = 0;
while (src[i] && i < n)
- 4a78: 4198 lw a4,0(a1)
- 4a7a: c71d beqz a4,4aa8 <wcstombs+0x30>
- 4a7c: ca05 beqz a2,4aac <wcstombs+0x34>
- 4a7e: 0591 addi a1,a1,4
+ 4a90: 4198 lw a4,0(a1)
+ 4a92: c71d beqz a4,4ac0 <wcstombs+0x30>
+ 4a94: ca05 beqz a2,4ac4 <wcstombs+0x34>
+ 4a96: 0591 addi a1,a1,4
size_t i = 0;
- 4a80: 4781 li a5,0
- 4a82: a019 j 4a88 <wcstombs+0x10>
+ 4a98: 4781 li a5,0
+ 4a9a: a019 j 4aa0 <wcstombs+0x10>
while (src[i] && i < n)
- 4a84: 02f60063 beq a2,a5,4aa4 <wcstombs+0x2c>
+ 4a9c: 02f60063 beq a2,a5,4abc <wcstombs+0x2c>
{
dest[i] = (char)src[i];
- 4a88: 00f506b3 add a3,a0,a5
- 4a8c: 00e68023 sb a4,0(a3)
+ 4aa0: 00f506b3 add a3,a0,a5
+ 4aa4: 00e68023 sb a4,0(a3)
while (src[i] && i < n)
- 4a90: 4198 lw a4,0(a1)
+ 4aa8: 4198 lw a4,0(a1)
i++;
- 4a92: 0785 addi a5,a5,1
+ 4aaa: 0785 addi a5,a5,1
while (src[i] && i < n)
- 4a94: 0591 addi a1,a1,4
- 4a96: f77d bnez a4,4a84 <wcstombs+0xc>
+ 4aac: 0591 addi a1,a1,4
+ 4aae: f77d bnez a4,4a9c <wcstombs+0xc>
}
if (i < n)
- 4a98: 00c7f563 bgeu a5,a2,4aa2 <wcstombs+0x2a>
+ 4ab0: 00c7f563 bgeu a5,a2,4aba <wcstombs+0x2a>
dest[i] = 0;
- 4a9c: 953e add a0,a0,a5
- 4a9e: 00050023 sb zero,0(a0)
+ 4ab4: 953e add a0,a0,a5
+ 4ab6: 00050023 sb zero,0(a0)
size_t i = 0;
- 4aa2: 863e mv a2,a5
- 4aa4: 8532 mv a0,a2
- 4aa6: 8082 ret
- 4aa8: 4781 li a5,0
- 4aaa: b7fd j 4a98 <wcstombs+0x20>
- 4aac: 4501 li a0,0
+ 4aba: 863e mv a2,a5
+ 4abc: 8532 mv a0,a2
+ 4abe: 8082 ret
+ 4ac0: 4781 li a5,0
+ 4ac2: b7fd j 4ab0 <wcstombs+0x20>
+ 4ac4: 4501 li a0,0
return i;
- 4aae: 8082 ret
+ 4ac6: 8082 ret
-0000000000004ab0 <memset>:
+0000000000004ac8 <memset>:
void *memset(void *dst, int c, size_t n)
{
char *cdst = (char *)dst;
for (size_t i = 0; i < n; i++)
cdst[i] = (char)c;
- 4ab0: 0ff5f593 zext.b a1,a1
- 4ab4: 87aa mv a5,a0
- 4ab6: 00a60733 add a4,a2,a0
+ 4ac8: 0ff5f593 zext.b a1,a1
+ 4acc: 87aa mv a5,a0
+ 4ace: 00a60733 add a4,a2,a0
for (size_t i = 0; i < n; i++)
- 4aba: c611 beqz a2,4ac6 <memset+0x16>
+ 4ad2: c611 beqz a2,4ade <memset+0x16>
cdst[i] = (char)c;
- 4abc: 00b78023 sb a1,0(a5)
+ 4ad4: 00b78023 sb a1,0(a5)
for (size_t i = 0; i < n; i++)
- 4ac0: 0785 addi a5,a5,1
- 4ac2: fee79de3 bne a5,a4,4abc <memset+0xc>
+ 4ad8: 0785 addi a5,a5,1
+ 4ada: fee79de3 bne a5,a4,4ad4 <memset+0xc>
return dst;
}
- 4ac6: 8082 ret
+ 4ade: 8082 ret
-0000000000004ac8 <memmove>:
+0000000000004ae0 <memmove>:
void *memmove(void *vdst, const void *vsrc, size_t n)
{
char *dst = (char *)vdst;
const char *src = (const char *)vsrc;
if (dst == src)
- 4ac8: 02b50d63 beq a0,a1,4b02 <memmove+0x3a>
+ 4ae0: 02b50d63 beq a0,a1,4b1a <memmove+0x3a>
return vdst;
if (src > dst)
- 4acc: 00b57e63 bgeu a0,a1,4ae8 <memmove+0x20>
+ 4ae4: 00b57e63 bgeu a0,a1,4b00 <memmove+0x20>
{
while (n--)
- 4ad0: ca0d beqz a2,4b02 <memmove+0x3a>
- 4ad2: 962a add a2,a2,a0
+ 4ae8: ca0d beqz a2,4b1a <memmove+0x3a>
+ 4aea: 962a add a2,a2,a0
char *dst = (char *)vdst;
- 4ad4: 87aa mv a5,a0
+ 4aec: 87aa mv a5,a0
*dst++ = *src++;
- 4ad6: 0005c703 lbu a4,0(a1)
- 4ada: 0785 addi a5,a5,1
- 4adc: 0585 addi a1,a1,1
- 4ade: fee78fa3 sb a4,-1(a5)
+ 4aee: 0005c703 lbu a4,0(a1)
+ 4af2: 0785 addi a5,a5,1
+ 4af4: 0585 addi a1,a1,1
+ 4af6: fee78fa3 sb a4,-1(a5)
while (n--)
- 4ae2: fec79ae3 bne a5,a2,4ad6 <memmove+0xe>
- 4ae6: 8082 ret
+ 4afa: fec79ae3 bne a5,a2,4aee <memmove+0xe>
+ 4afe: 8082 ret
}
else
{
dst += n;
- 4ae8: 00c50733 add a4,a0,a2
+ 4b00: 00c50733 add a4,a0,a2
src += n;
- 4aec: 00c587b3 add a5,a1,a2
+ 4b04: 00c587b3 add a5,a1,a2
while (n-- > 0)
- 4af0: ca09 beqz a2,4b02 <memmove+0x3a>
+ 4b08: ca09 beqz a2,4b1a <memmove+0x3a>
*--dst = *--src;
- 4af2: fff7c683 lbu a3,-1(a5)
- 4af6: 17fd addi a5,a5,-1
- 4af8: 177d addi a4,a4,-1
- 4afa: 00d70023 sb a3,0(a4)
+ 4b0a: fff7c683 lbu a3,-1(a5)
+ 4b0e: 17fd addi a5,a5,-1
+ 4b10: 177d addi a4,a4,-1
+ 4b12: 00d70023 sb a3,0(a4)
while (n-- > 0)
- 4afe: fef59ae3 bne a1,a5,4af2 <memmove+0x2a>
+ 4b16: fef59ae3 bne a1,a5,4b0a <memmove+0x2a>
}
return vdst;
}
- 4b02: 8082 ret
+ 4b1a: 8082 ret
-0000000000004b04 <memcpy>:
+0000000000004b1c <memcpy>:
void *memcpy(void *vdst, const void *vsrc, size_t n)
{
return memmove(vdst, vsrc, n);
- 4b04: b7d1 j 4ac8 <memmove>
+ 4b1c: b7d1 j 4ae0 <memmove>
-0000000000004b06 <memcmp>:
+0000000000004b1e <memcmp>:
int memcmp(const void *s1, const void *s2, size_t n)
{
const unsigned char *p1 = (const unsigned char *)s1;
const unsigned char *p2 = (const unsigned char *)s2;
while (n--)
- 4b06: c205 beqz a2,4b26 <memcmp+0x20>
- 4b08: 962a add a2,a2,a0
- 4b0a: a019 j 4b10 <memcmp+0xa>
- 4b0c: 00c50d63 beq a0,a2,4b26 <memcmp+0x20>
+ 4b1e: c205 beqz a2,4b3e <memcmp+0x20>
+ 4b20: 962a add a2,a2,a0
+ 4b22: a019 j 4b28 <memcmp+0xa>
+ 4b24: 00c50d63 beq a0,a2,4b3e <memcmp+0x20>
{
if (*p1 != *p2)
- 4b10: 00054783 lbu a5,0(a0)
- 4b14: 0005c703 lbu a4,0(a1)
+ 4b28: 00054783 lbu a5,0(a0)
+ 4b2c: 0005c703 lbu a4,0(a1)
return *p1 - *p2;
p1++;
- 4b18: 0505 addi a0,a0,1
+ 4b30: 0505 addi a0,a0,1
p2++;
- 4b1a: 0585 addi a1,a1,1
+ 4b32: 0585 addi a1,a1,1
if (*p1 != *p2)
- 4b1c: fee788e3 beq a5,a4,4b0c <memcmp+0x6>
+ 4b34: fee788e3 beq a5,a4,4b24 <memcmp+0x6>
return *p1 - *p2;
- 4b20: 40e7853b subw a0,a5,a4
- 4b24: 8082 ret
+ 4b38: 40e7853b subw a0,a5,a4
+ 4b3c: 8082 ret
}
return 0;
- 4b26: 4501 li a0,0
+ 4b3e: 4501 li a0,0
}
- 4b28: 8082 ret
+ 4b40: 8082 ret
-0000000000004b2a <memchr>:
+0000000000004b42 <memchr>:
void *memchr(const void *s, int c, size_t n)
{
const unsigned char *p = (const unsigned char *)s;
while (n--)
- 4b2a: ce09 beqz a2,4b44 <memchr+0x1a>
+ 4b42: ce09 beqz a2,4b5c <memchr+0x1a>
{
if (*p == (unsigned char)c)
- 4b2c: 0ff5f593 zext.b a1,a1
- 4b30: 962a add a2,a2,a0
- 4b32: a021 j 4b3a <memchr+0x10>
+ 4b44: 0ff5f593 zext.b a1,a1
+ 4b48: 962a add a2,a2,a0
+ 4b4a: a021 j 4b52 <memchr+0x10>
return (void *)p;
p++;
- 4b34: 0505 addi a0,a0,1
+ 4b4c: 0505 addi a0,a0,1
while (n--)
- 4b36: 00a60763 beq a2,a0,4b44 <memchr+0x1a>
+ 4b4e: 00a60763 beq a2,a0,4b5c <memchr+0x1a>
if (*p == (unsigned char)c)
- 4b3a: 00054783 lbu a5,0(a0)
- 4b3e: feb79be3 bne a5,a1,4b34 <memchr+0xa>
+ 4b52: 00054783 lbu a5,0(a0)
+ 4b56: feb79be3 bne a5,a1,4b4c <memchr+0xa>
}
return NULL;
}
- 4b42: 8082 ret
+ 4b5a: 8082 ret
return NULL;
- 4b44: 4501 li a0,0
+ 4b5c: 4501 li a0,0
}
- 4b46: 8082 ret
+ 4b5e: 8082 ret
-0000000000004b48 <strlen>:
+0000000000004b60 <strlen>:
/* String Manipulation Functions */
size_t strlen(const char *s)
{
const char *p = s;
while (*p)
- 4b48: 00054783 lbu a5,0(a0)
- 4b4c: cb89 beqz a5,4b5e <strlen+0x16>
+ 4b60: 00054783 lbu a5,0(a0)
+ 4b64: cb89 beqz a5,4b76 <strlen+0x16>
const char *p = s;
- 4b4e: 87aa mv a5,a0
+ 4b66: 87aa mv a5,a0
while (*p)
- 4b50: 0017c703 lbu a4,1(a5)
+ 4b68: 0017c703 lbu a4,1(a5)
p++;
- 4b54: 0785 addi a5,a5,1
+ 4b6c: 0785 addi a5,a5,1
while (*p)
- 4b56: ff6d bnez a4,4b50 <strlen+0x8>
+ 4b6e: ff6d bnez a4,4b68 <strlen+0x8>
return (size_t)(p - s);
- 4b58: 40a78533 sub a0,a5,a0
- 4b5c: 8082 ret
+ 4b70: 40a78533 sub a0,a5,a0
+ 4b74: 8082 ret
while (*p)
- 4b5e: 4501 li a0,0
+ 4b76: 4501 li a0,0
}
- 4b60: 8082 ret
+ 4b78: 8082 ret
-0000000000004b62 <strcpy>:
+0000000000004b7a <strcpy>:
char *strcpy(char *dst, const char *src)
{
char *os = dst;
while ((*dst++ = *src++) != 0)
- 4b62: 87aa mv a5,a0
- 4b64: 0005c703 lbu a4,0(a1)
- 4b68: 0785 addi a5,a5,1
- 4b6a: 0585 addi a1,a1,1
- 4b6c: fee78fa3 sb a4,-1(a5)
- 4b70: fb75 bnez a4,4b64 <strcpy+0x2>
+ 4b7a: 87aa mv a5,a0
+ 4b7c: 0005c703 lbu a4,0(a1)
+ 4b80: 0785 addi a5,a5,1
+ 4b82: 0585 addi a1,a1,1
+ 4b84: fee78fa3 sb a4,-1(a5)
+ 4b88: fb75 bnez a4,4b7c <strcpy+0x2>
;
return os;
}
- 4b72: 8082 ret
+ 4b8a: 8082 ret
-0000000000004b74 <strncpy>:
+0000000000004b8c <strncpy>:
char *strncpy(char *dst, const char *src, size_t n)
{
char *os = dst;
size_t i;
for (i = 0; i < n && src[i] != '\0'; i++)
- 4b74: 4781 li a5,0
- 4b76: e619 bnez a2,4b84 <strncpy+0x10>
- 4b78: 8082 ret
+ 4b8c: 4781 li a5,0
+ 4b8e: e619 bnez a2,4b9c <strncpy+0x10>
+ 4b90: 8082 ret
dst[i] = src[i];
- 4b7a: 00e68023 sb a4,0(a3)
+ 4b92: 00e68023 sb a4,0(a3)
for (i = 0; i < n && src[i] != '\0'; i++)
- 4b7e: 0785 addi a5,a5,1
- 4b80: 02f60263 beq a2,a5,4ba4 <strncpy+0x30>
- 4b84: 00f58733 add a4,a1,a5
- 4b88: 00074703 lbu a4,0(a4)
+ 4b96: 0785 addi a5,a5,1
+ 4b98: 02f60263 beq a2,a5,4bbc <strncpy+0x30>
+ 4b9c: 00f58733 add a4,a1,a5
+ 4ba0: 00074703 lbu a4,0(a4)
dst[i] = src[i];
- 4b8c: 00f506b3 add a3,a0,a5
+ 4ba4: 00f506b3 add a3,a0,a5
for (i = 0; i < n && src[i] != '\0'; i++)
- 4b90: f76d bnez a4,4b7a <strncpy+0x6>
+ 4ba8: f76d bnez a4,4b92 <strncpy+0x6>
for (; i < n; i++)
- 4b92: 00c7f963 bgeu a5,a2,4ba4 <strncpy+0x30>
- 4b96: 87b6 mv a5,a3
- 4b98: 962a add a2,a2,a0
+ 4baa: 00c7f963 bgeu a5,a2,4bbc <strncpy+0x30>
+ 4bae: 87b6 mv a5,a3
+ 4bb0: 962a add a2,a2,a0
dst[i] = '\0';
- 4b9a: 00078023 sb zero,0(a5)
+ 4bb2: 00078023 sb zero,0(a5)
for (; i < n; i++)
- 4b9e: 0785 addi a5,a5,1
- 4ba0: fec79de3 bne a5,a2,4b9a <strncpy+0x26>
+ 4bb6: 0785 addi a5,a5,1
+ 4bb8: fec79de3 bne a5,a2,4bb2 <strncpy+0x26>
return os;
}
- 4ba4: 8082 ret
+ 4bbc: 8082 ret
-0000000000004ba6 <strcat>:
+0000000000004bbe <strcat>:
char *strcat(char *dst, const char *src)
{
char *os = dst;
while (*dst)
- 4ba6: 00054783 lbu a5,0(a0)
- 4baa: cf91 beqz a5,4bc6 <strcat+0x20>
- 4bac: 87aa mv a5,a0
- 4bae: 0017c703 lbu a4,1(a5)
+ 4bbe: 00054783 lbu a5,0(a0)
+ 4bc2: cf91 beqz a5,4bde <strcat+0x20>
+ 4bc4: 87aa mv a5,a0
+ 4bc6: 0017c703 lbu a4,1(a5)
dst++;
- 4bb2: 0785 addi a5,a5,1
+ 4bca: 0785 addi a5,a5,1
while (*dst)
- 4bb4: ff6d bnez a4,4bae <strcat+0x8>
+ 4bcc: ff6d bnez a4,4bc6 <strcat+0x8>
while ((*dst++ = *src++) != 0)
- 4bb6: 0005c703 lbu a4,0(a1)
- 4bba: 0785 addi a5,a5,1
- 4bbc: 0585 addi a1,a1,1
- 4bbe: fee78fa3 sb a4,-1(a5)
- 4bc2: fb75 bnez a4,4bb6 <strcat+0x10>
+ 4bce: 0005c703 lbu a4,0(a1)
+ 4bd2: 0785 addi a5,a5,1
+ 4bd4: 0585 addi a1,a1,1
+ 4bd6: fee78fa3 sb a4,-1(a5)
+ 4bda: fb75 bnez a4,4bce <strcat+0x10>
;
return os;
}
- 4bc4: 8082 ret
+ 4bdc: 8082 ret
while ((*dst++ = *src++) != 0)
- 4bc6: 0005c703 lbu a4,0(a1)
+ 4bde: 0005c703 lbu a4,0(a1)
while (*dst)
- 4bca: 87aa mv a5,a0
+ 4be2: 87aa mv a5,a0
while ((*dst++ = *src++) != 0)
- 4bcc: 0785 addi a5,a5,1
- 4bce: fee78fa3 sb a4,-1(a5)
- 4bd2: 0585 addi a1,a1,1
- 4bd4: f36d bnez a4,4bb6 <strcat+0x10>
- 4bd6: 8082 ret
+ 4be4: 0785 addi a5,a5,1
+ 4be6: fee78fa3 sb a4,-1(a5)
+ 4bea: 0585 addi a1,a1,1
+ 4bec: f36d bnez a4,4bce <strcat+0x10>
+ 4bee: 8082 ret
-0000000000004bd8 <strncat>:
+0000000000004bf0 <strncat>:
while (*p)
- 4bd8: 00054783 lbu a5,0(a0)
+ 4bf0: 00054783 lbu a5,0(a0)
const char *p = s;
- 4bdc: 872a mv a4,a0
+ 4bf4: 872a mv a4,a0
while (*p)
- 4bde: c789 beqz a5,4be8 <strncat+0x10>
- 4be0: 00174783 lbu a5,1(a4)
+ 4bf6: c789 beqz a5,4c00 <strncat+0x10>
+ 4bf8: 00174783 lbu a5,1(a4)
p++;
- 4be4: 0705 addi a4,a4,1
+ 4bfc: 0705 addi a4,a4,1
while (*p)
- 4be6: ffed bnez a5,4be0 <strncat+0x8>
+ 4bfe: ffed bnez a5,4bf8 <strncat+0x8>
size_t dest_len = strlen(dst);
size_t i;
dst += dest_len;
for (i = 0; i < n && src[i] != '\0'; i++)
- 4be8: 86ba mv a3,a4
- 4bea: 4781 li a5,0
- 4bec: 88ba mv a7,a4
- 4bee: ea01 bnez a2,4bfe <strncat+0x26>
- 4bf0: a839 j 4c0e <strncat+0x36>
+ 4c00: 86ba mv a3,a4
+ 4c02: 4781 li a5,0
+ 4c04: 88ba mv a7,a4
+ 4c06: ea01 bnez a2,4c16 <strncat+0x26>
+ 4c08: a839 j 4c26 <strncat+0x36>
dst[i] = src[i];
- 4bf2: 01068023 sb a6,0(a3)
+ 4c0a: 01068023 sb a6,0(a3)
for (i = 0; i < n && src[i] != '\0'; i++)
- 4bf6: 00188693 addi a3,a7,1
- 4bfa: 00f60d63 beq a2,a5,4c14 <strncat+0x3c>
- 4bfe: 00f58833 add a6,a1,a5
- 4c02: 00084803 lbu a6,0(a6)
- 4c06: 0785 addi a5,a5,1
+ 4c0e: 00188693 addi a3,a7,1
+ 4c12: 00f60d63 beq a2,a5,4c2c <strncat+0x3c>
+ 4c16: 00f58833 add a6,a1,a5
+ 4c1a: 00084803 lbu a6,0(a6)
+ 4c1e: 0785 addi a5,a5,1
dst[i] = src[i];
- 4c08: 88b6 mv a7,a3
+ 4c20: 88b6 mv a7,a3
for (i = 0; i < n && src[i] != '\0'; i++)
- 4c0a: fe0814e3 bnez a6,4bf2 <strncat+0x1a>
+ 4c22: fe0814e3 bnez a6,4c0a <strncat+0x1a>
dst[i] = '\0';
- 4c0e: 00088023 sb zero,0(a7)
+ 4c26: 00088023 sb zero,0(a7)
return os;
}
- 4c12: 8082 ret
+ 4c2a: 8082 ret
dst[i] = '\0';
- 4c14: 00c708b3 add a7,a4,a2
- 4c18: 00088023 sb zero,0(a7)
+ 4c2c: 00c708b3 add a7,a4,a2
+ 4c30: 00088023 sb zero,0(a7)
}
- 4c1c: 8082 ret
+ 4c34: 8082 ret
-0000000000004c1e <strcmp>:
+0000000000004c36 <strcmp>:
int strcmp(const char *p, const char *q)
{
while (*p && *p == *q)
- 4c1e: 00054783 lbu a5,0(a0)
- 4c22: e791 bnez a5,4c2e <strcmp+0x10>
- 4c24: a02d j 4c4e <strcmp+0x30>
- 4c26: 00054783 lbu a5,0(a0)
- 4c2a: cf89 beqz a5,4c44 <strcmp+0x26>
- 4c2c: 85b6 mv a1,a3
- 4c2e: 0005c703 lbu a4,0(a1)
+ 4c36: 00054783 lbu a5,0(a0)
+ 4c3a: e791 bnez a5,4c46 <strcmp+0x10>
+ 4c3c: a02d j 4c66 <strcmp+0x30>
+ 4c3e: 00054783 lbu a5,0(a0)
+ 4c42: cf89 beqz a5,4c5c <strcmp+0x26>
+ 4c44: 85b6 mv a1,a3
+ 4c46: 0005c703 lbu a4,0(a1)
{
p++;
- 4c32: 0505 addi a0,a0,1
+ 4c4a: 0505 addi a0,a0,1
q++;
- 4c34: 00158693 addi a3,a1,1
+ 4c4c: 00158693 addi a3,a1,1
while (*p && *p == *q)
- 4c38: fef707e3 beq a4,a5,4c26 <strcmp+0x8>
+ 4c50: fef707e3 beq a4,a5,4c3e <strcmp+0x8>
}
return (int)((unsigned char)*p - (unsigned char)*q);
- 4c3c: 0007851b sext.w a0,a5
+ 4c54: 0007851b sext.w a0,a5
}
- 4c40: 9d19 subw a0,a0,a4
- 4c42: 8082 ret
+ 4c58: 9d19 subw a0,a0,a4
+ 4c5a: 8082 ret
return (int)((unsigned char)*p - (unsigned char)*q);
- 4c44: 0015c703 lbu a4,1(a1)
- 4c48: 4501 li a0,0
+ 4c5c: 0015c703 lbu a4,1(a1)
+ 4c60: 4501 li a0,0
}
- 4c4a: 9d19 subw a0,a0,a4
- 4c4c: 8082 ret
+ 4c62: 9d19 subw a0,a0,a4
+ 4c64: 8082 ret
return (int)((unsigned char)*p - (unsigned char)*q);
- 4c4e: 0005c703 lbu a4,0(a1)
- 4c52: 4501 li a0,0
- 4c54: b7f5 j 4c40 <strcmp+0x22>
+ 4c66: 0005c703 lbu a4,0(a1)
+ 4c6a: 4501 li a0,0
+ 4c6c: b7f5 j 4c58 <strcmp+0x22>
-0000000000004c56 <strncmp>:
+0000000000004c6e <strncmp>:
int strncmp(const char *s1, const char *s2, size_t n)
{
if (n == 0)
- 4c56: ca0d beqz a2,4c88 <strncmp+0x32>
+ 4c6e: ca0d beqz a2,4ca0 <strncmp+0x32>
return 0;
while (n-- > 0 && *s1 && *s1 == *s2)
- 4c58: 00054783 lbu a5,0(a0)
- 4c5c: 167d addi a2,a2,-1
- 4c5e: 00c506b3 add a3,a0,a2
- 4c62: eb89 bnez a5,4c74 <strncmp+0x1e>
- 4c64: a80d j 4c96 <strncmp+0x40>
+ 4c70: 00054783 lbu a5,0(a0)
+ 4c74: 167d addi a2,a2,-1
+ 4c76: 00c506b3 add a3,a0,a2
+ 4c7a: eb89 bnez a5,4c8c <strncmp+0x1e>
+ 4c7c: a80d j 4cae <strncmp+0x40>
{
if (n == 0 || *s1 == '\0')
- 4c66: 00d50d63 beq a0,a3,4c80 <strncmp+0x2a>
+ 4c7e: 00d50d63 beq a0,a3,4c98 <strncmp+0x2a>
while (n-- > 0 && *s1 && *s1 == *s2)
- 4c6a: 00154783 lbu a5,1(a0)
+ 4c82: 00154783 lbu a5,1(a0)
break;
s1++;
- 4c6e: 0505 addi a0,a0,1
+ 4c86: 0505 addi a0,a0,1
while (n-- > 0 && *s1 && *s1 == *s2)
- 4c70: cf91 beqz a5,4c8c <strncmp+0x36>
- 4c72: 85b2 mv a1,a2
- 4c74: 0005c703 lbu a4,0(a1)
+ 4c88: cf91 beqz a5,4ca4 <strncmp+0x36>
+ 4c8a: 85b2 mv a1,a2
+ 4c8c: 0005c703 lbu a4,0(a1)
s2++;
- 4c78: 00158613 addi a2,a1,1
+ 4c90: 00158613 addi a2,a1,1
while (n-- > 0 && *s1 && *s1 == *s2)
- 4c7c: fef705e3 beq a4,a5,4c66 <strncmp+0x10>
+ 4c94: fef705e3 beq a4,a5,4c7e <strncmp+0x10>
}
return (int)((unsigned char)*s1 - (unsigned char)*s2);
- 4c80: 0007851b sext.w a0,a5
- 4c84: 9d19 subw a0,a0,a4
- 4c86: 8082 ret
+ 4c98: 0007851b sext.w a0,a5
+ 4c9c: 9d19 subw a0,a0,a4
+ 4c9e: 8082 ret
return 0;
- 4c88: 4501 li a0,0
+ 4ca0: 4501 li a0,0
}
- 4c8a: 8082 ret
+ 4ca2: 8082 ret
return (int)((unsigned char)*s1 - (unsigned char)*s2);
- 4c8c: 0015c703 lbu a4,1(a1)
- 4c90: 4501 li a0,0
- 4c92: 9d19 subw a0,a0,a4
- 4c94: 8082 ret
- 4c96: 0005c703 lbu a4,0(a1)
- 4c9a: 4501 li a0,0
- 4c9c: b7e5 j 4c84 <strncmp+0x2e>
+ 4ca4: 0015c703 lbu a4,1(a1)
+ 4ca8: 4501 li a0,0
+ 4caa: 9d19 subw a0,a0,a4
+ 4cac: 8082 ret
+ 4cae: 0005c703 lbu a4,0(a1)
+ 4cb2: 4501 li a0,0
+ 4cb4: b7e5 j 4c9c <strncmp+0x2e>
-0000000000004c9e <strchr>:
+0000000000004cb6 <strchr>:
char *strchr(const char *s, int c)
{
while (*s != (char)c)
- 4c9e: 0ff5f593 zext.b a1,a1
- 4ca2: a019 j 4ca8 <strchr+0xa>
+ 4cb6: 0ff5f593 zext.b a1,a1
+ 4cba: a019 j 4cc0 <strchr+0xa>
{
if (!*s++)
- 4ca4: 0505 addi a0,a0,1
- 4ca6: c791 beqz a5,4cb2 <strchr+0x14>
+ 4cbc: 0505 addi a0,a0,1
+ 4cbe: c791 beqz a5,4cca <strchr+0x14>
while (*s != (char)c)
- 4ca8: 00054783 lbu a5,0(a0)
- 4cac: feb79ce3 bne a5,a1,4ca4 <strchr+0x6>
- 4cb0: 8082 ret
+ 4cc0: 00054783 lbu a5,0(a0)
+ 4cc4: feb79ce3 bne a5,a1,4cbc <strchr+0x6>
+ 4cc8: 8082 ret
return NULL;
- 4cb2: 4501 li a0,0
+ 4cca: 4501 li a0,0
}
return (char *)s;
}
- 4cb4: 8082 ret
+ 4ccc: 8082 ret
-0000000000004cb6 <strrchr>:
+0000000000004cce <strrchr>:
char *strrchr(const char *s, int c)
{
- 4cb6: 87aa mv a5,a0
+ 4cce: 87aa mv a5,a0
const char *last = NULL;
do
{
if (*s == (char)c)
- 4cb8: 0ff5f593 zext.b a1,a1
+ 4cd0: 0ff5f593 zext.b a1,a1
const char *last = NULL;
- 4cbc: 4501 li a0,0
+ 4cd4: 4501 li a0,0
if (*s == (char)c)
- 4cbe: 0007c703 lbu a4,0(a5)
- 4cc2: 00e59363 bne a1,a4,4cc8 <strrchr+0x12>
+ 4cd6: 0007c703 lbu a4,0(a5)
+ 4cda: 00e59363 bne a1,a4,4ce0 <strrchr+0x12>
last = s;
- 4cc6: 853e mv a0,a5
+ 4cde: 853e mv a0,a5
} while (*s++);
- 4cc8: 0785 addi a5,a5,1
- 4cca: fb75 bnez a4,4cbe <strrchr+0x8>
+ 4ce0: 0785 addi a5,a5,1
+ 4ce2: fb75 bnez a4,4cd6 <strrchr+0x8>
return (char *)last;
}
- 4ccc: 8082 ret
+ 4ce4: 8082 ret
-0000000000004cce <strstr>:
+0000000000004ce6 <strstr>:
while (*p)
- 4cce: 0005c883 lbu a7,0(a1)
- 4cd2: 04088a63 beqz a7,4d26 <strstr+0x58>
+ 4ce6: 0005c883 lbu a7,0(a1)
+ 4cea: 04088a63 beqz a7,4d3e <strstr+0x58>
const char *p = s;
- 4cd6: 87ae mv a5,a1
+ 4cee: 87ae mv a5,a1
while (*p)
- 4cd8: 0017c703 lbu a4,1(a5)
+ 4cf0: 0017c703 lbu a4,1(a5)
p++;
- 4cdc: 0785 addi a5,a5,1
+ 4cf4: 0785 addi a5,a5,1
while (*p)
- 4cde: ff6d bnez a4,4cd8 <strstr+0xa>
+ 4cf6: ff6d bnez a4,4cf0 <strstr+0xa>
return (size_t)(p - s);
- 4ce0: 40b78833 sub a6,a5,a1
+ 4cf8: 40b78833 sub a6,a5,a1
char *strstr(const char *haystack, const char *needle)
{
size_t n_len = strlen(needle);
if (n_len == 0)
- 4ce4: 04b78163 beq a5,a1,4d26 <strstr+0x58>
+ 4cfc: 04b78163 beq a5,a1,4d3e <strstr+0x58>
return (char *)haystack;
for (; *haystack; haystack++)
- 4ce8: 00054783 lbu a5,0(a0)
- 4cec: cf85 beqz a5,4d24 <strstr+0x56>
- 4cee: 187d addi a6,a6,-1
- 4cf0: 982a add a6,a6,a0
+ 4d00: 00054783 lbu a5,0(a0)
+ 4d04: cf85 beqz a5,4d3c <strstr+0x56>
+ 4d06: 187d addi a6,a6,-1
+ 4d08: 982a add a6,a6,a0
{
if (*haystack != *needle)
- 4cf2: 02f89463 bne a7,a5,4d1a <strstr+0x4c>
+ 4d0a: 02f89463 bne a7,a5,4d32 <strstr+0x4c>
while (n-- > 0 && *s1 && *s1 == *s2)
- 4cf6: 00054703 lbu a4,0(a0)
- 4cfa: 8646 mv a2,a7
- 4cfc: 86ae mv a3,a1
- 4cfe: 87aa mv a5,a0
- 4d00: eb11 bnez a4,4d14 <strstr+0x46>
- 4d02: a821 j 4d1a <strstr+0x4c>
+ 4d0e: 00054703 lbu a4,0(a0)
+ 4d12: 8646 mv a2,a7
+ 4d14: 86ae mv a3,a1
+ 4d16: 87aa mv a5,a0
+ 4d18: eb11 bnez a4,4d2c <strstr+0x46>
+ 4d1a: a821 j 4d32 <strstr+0x4c>
if (n == 0 || *s1 == '\0')
- 4d04: 03078163 beq a5,a6,4d26 <strstr+0x58>
+ 4d1c: 03078163 beq a5,a6,4d3e <strstr+0x58>
while (n-- > 0 && *s1 && *s1 == *s2)
- 4d08: 0017c703 lbu a4,1(a5)
+ 4d20: 0017c703 lbu a4,1(a5)
return (int)((unsigned char)*s1 - (unsigned char)*s2);
- 4d0c: 0006c603 lbu a2,0(a3)
+ 4d24: 0006c603 lbu a2,0(a3)
s1++;
- 4d10: 0785 addi a5,a5,1
+ 4d28: 0785 addi a5,a5,1
while (n-- > 0 && *s1 && *s1 == *s2)
- 4d12: cb19 beqz a4,4d28 <strstr+0x5a>
+ 4d2a: cb19 beqz a4,4d40 <strstr+0x5a>
s2++;
- 4d14: 0685 addi a3,a3,1
+ 4d2c: 0685 addi a3,a3,1
while (n-- > 0 && *s1 && *s1 == *s2)
- 4d16: fee607e3 beq a2,a4,4d04 <strstr+0x36>
+ 4d2e: fee607e3 beq a2,a4,4d1c <strstr+0x36>
for (; *haystack; haystack++)
- 4d1a: 00154783 lbu a5,1(a0)
- 4d1e: 0805 addi a6,a6,1
- 4d20: 0505 addi a0,a0,1
- 4d22: fbe1 bnez a5,4cf2 <strstr+0x24>
+ 4d32: 00154783 lbu a5,1(a0)
+ 4d36: 0805 addi a6,a6,1
+ 4d38: 0505 addi a0,a0,1
+ 4d3a: fbe1 bnez a5,4d0a <strstr+0x24>
continue;
if (strncmp(haystack, needle, n_len) == 0)
return (char *)haystack;
}
return NULL;
- 4d24: 4501 li a0,0
+ 4d3c: 4501 li a0,0
}
- 4d26: 8082 ret
+ 4d3e: 8082 ret
if (strncmp(haystack, needle, n_len) == 0)
- 4d28: de7d beqz a2,4d26 <strstr+0x58>
+ 4d40: de7d beqz a2,4d3e <strstr+0x58>
for (; *haystack; haystack++)
- 4d2a: 00154783 lbu a5,1(a0)
- 4d2e: 0805 addi a6,a6,1
- 4d30: 0505 addi a0,a0,1
- 4d32: f3e1 bnez a5,4cf2 <strstr+0x24>
- 4d34: bfc5 j 4d24 <strstr+0x56>
+ 4d42: 00154783 lbu a5,1(a0)
+ 4d46: 0805 addi a6,a6,1
+ 4d48: 0505 addi a0,a0,1
+ 4d4a: f3e1 bnez a5,4d0a <strstr+0x24>
+ 4d4c: bfc5 j 4d3c <strstr+0x56>
-0000000000004d36 <strdup>:
+0000000000004d4e <strdup>:
char *strdup(const char *s)
{
- 4d36: 1101 addi sp,sp,-32
- 4d38: e426 sd s1,8(sp)
- 4d3a: ec06 sd ra,24(sp)
- 4d3c: e822 sd s0,16(sp)
+ 4d4e: 1101 addi sp,sp,-32
+ 4d50: e426 sd s1,8(sp)
+ 4d52: ec06 sd ra,24(sp)
+ 4d54: e822 sd s0,16(sp)
while (*p)
- 4d3e: 00054783 lbu a5,0(a0)
+ 4d56: 00054783 lbu a5,0(a0)
{
- 4d42: 84aa mv s1,a0
+ 4d5a: 84aa mv s1,a0
while (*p)
- 4d44: cb8d beqz a5,4d76 <strdup+0x40>
+ 4d5c: cb8d beqz a5,4d8e <strdup+0x40>
const char *p = s;
- 4d46: 862a mv a2,a0
+ 4d5e: 862a mv a2,a0
while (*p)
- 4d48: 00164783 lbu a5,1(a2)
+ 4d60: 00164783 lbu a5,1(a2)
p++;
- 4d4c: 0605 addi a2,a2,1
+ 4d64: 0605 addi a2,a2,1
while (*p)
- 4d4e: ffed bnez a5,4d48 <strdup+0x12>
+ 4d66: ffed bnez a5,4d60 <strdup+0x12>
return (size_t)(p - s);
- 4d50: 8e05 sub a2,a2,s1
+ 4d68: 8e05 sub a2,a2,s1
size_t len = strlen(s) + 1;
- 4d52: 00160413 addi s0,a2,1
+ 4d6a: 00160413 addi s0,a2,1
char *new_str = (char *)malloc(len);
- 4d56: 8522 mv a0,s0
- 4d58: f66ff0ef jal 44be <malloc>
+ 4d6e: 8522 mv a0,s0
+ 4d70: f4eff0ef jal 44be <malloc>
if (new_str == NULL)
- 4d5c: c901 beqz a0,4d6c <strdup+0x36>
+ 4d74: c901 beqz a0,4d84 <strdup+0x36>
return memmove(vdst, vsrc, n);
- 4d5e: 8622 mv a2,s0
+ 4d76: 8622 mv a2,s0
return NULL;
return (char *)memcpy(new_str, s, len);
}
- 4d60: 6442 ld s0,16(sp)
- 4d62: 60e2 ld ra,24(sp)
+ 4d78: 6442 ld s0,16(sp)
+ 4d7a: 60e2 ld ra,24(sp)
return memmove(vdst, vsrc, n);
- 4d64: 85a6 mv a1,s1
+ 4d7c: 85a6 mv a1,s1
}
- 4d66: 64a2 ld s1,8(sp)
- 4d68: 6105 addi sp,sp,32
+ 4d7e: 64a2 ld s1,8(sp)
+ 4d80: 6105 addi sp,sp,32
return memmove(vdst, vsrc, n);
- 4d6a: bbb9 j 4ac8 <memmove>
+ 4d82: bbb9 j 4ae0 <memmove>
}
- 4d6c: 60e2 ld ra,24(sp)
- 4d6e: 6442 ld s0,16(sp)
- 4d70: 64a2 ld s1,8(sp)
- 4d72: 6105 addi sp,sp,32
- 4d74: 8082 ret
+ 4d84: 60e2 ld ra,24(sp)
+ 4d86: 6442 ld s0,16(sp)
+ 4d88: 64a2 ld s1,8(sp)
+ 4d8a: 6105 addi sp,sp,32
+ 4d8c: 8082 ret
while (*p)
- 4d76: 4405 li s0,1
- 4d78: bff9 j 4d56 <strdup+0x20>
+ 4d8e: 4405 li s0,1
+ 4d90: bff9 j 4d6e <strdup+0x20>
-0000000000004d7a <strlcpy>:
- 4d7a: 0005c783 lbu a5,0(a1)
+0000000000004d92 <strlcpy>:
+ 4d92: 0005c783 lbu a5,0(a1)
size_t strlcpy(char *dst, const char *src, size_t size)
{
- 4d7e: 1101 addi sp,sp,-32
- 4d80: ec06 sd ra,24(sp)
- 4d82: e822 sd s0,16(sp)
- 4d84: 86b2 mv a3,a2
+ 4d96: 1101 addi sp,sp,-32
+ 4d98: ec06 sd ra,24(sp)
+ 4d9a: e822 sd s0,16(sp)
+ 4d9c: 86b2 mv a3,a2
while (*p)
- 4d86: cf8d beqz a5,4dc0 <strlcpy+0x46>
+ 4d9e: cf8d beqz a5,4dd8 <strlcpy+0x46>
const char *p = s;
- 4d88: 87ae mv a5,a1
+ 4da0: 87ae mv a5,a1
while (*p)
- 4d8a: 0017c703 lbu a4,1(a5)
+ 4da2: 0017c703 lbu a4,1(a5)
p++;
- 4d8e: 0785 addi a5,a5,1
+ 4da6: 0785 addi a5,a5,1
while (*p)
- 4d90: ff6d bnez a4,4d8a <strlcpy+0x10>
+ 4da8: ff6d bnez a4,4da2 <strlcpy+0x10>
return (size_t)(p - s);
- 4d92: 40b78433 sub s0,a5,a1
+ 4daa: 40b78433 sub s0,a5,a1
size_t src_len = strlen(src);
if (size > 0)
- 4d96: c285 beqz a3,4db6 <strlcpy+0x3c>
- 4d98: e426 sd s1,8(sp)
+ 4dae: c285 beqz a3,4dce <strlcpy+0x3c>
+ 4db0: e426 sd s1,8(sp)
{
size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 4d9a: fff68613 addi a2,a3,-1
+ 4db2: fff68613 addi a2,a3,-1
memcpy(dst, src, copy_len);
dst[copy_len] = '\0';
- 4d9e: 00c504b3 add s1,a0,a2
+ 4db6: 00c504b3 add s1,a0,a2
size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 4da2: 00d47563 bgeu s0,a3,4dac <strlcpy+0x32>
+ 4dba: 00d47563 bgeu s0,a3,4dc4 <strlcpy+0x32>
dst[copy_len] = '\0';
- 4da6: 008504b3 add s1,a0,s0
+ 4dbe: 008504b3 add s1,a0,s0
size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 4daa: 8622 mv a2,s0
+ 4dc2: 8622 mv a2,s0
return memmove(vdst, vsrc, n);
- 4dac: d1dff0ef jal 4ac8 <memmove>
+ 4dc4: d1dff0ef jal 4ae0 <memmove>
dst[copy_len] = '\0';
- 4db0: 00048023 sb zero,0(s1)
+ 4dc8: 00048023 sb zero,0(s1)
}
return src_len;
- 4db4: 64a2 ld s1,8(sp)
+ 4dcc: 64a2 ld s1,8(sp)
}
- 4db6: 60e2 ld ra,24(sp)
- 4db8: 8522 mv a0,s0
- 4dba: 6442 ld s0,16(sp)
- 4dbc: 6105 addi sp,sp,32
- 4dbe: 8082 ret
+ 4dce: 60e2 ld ra,24(sp)
+ 4dd0: 8522 mv a0,s0
+ 4dd2: 6442 ld s0,16(sp)
+ 4dd4: 6105 addi sp,sp,32
+ 4dd6: 8082 ret
if (size > 0)
- 4dc0: e219 bnez a2,4dc6 <strlcpy+0x4c>
+ 4dd8: e219 bnez a2,4dde <strlcpy+0x4c>
return (size_t)(p - s);
- 4dc2: 4401 li s0,0
- 4dc4: bfcd j 4db6 <strlcpy+0x3c>
- 4dc6: e426 sd s1,8(sp)
- 4dc8: 4401 li s0,0
+ 4dda: 4401 li s0,0
+ 4ddc: bfcd j 4dce <strlcpy+0x3c>
+ 4dde: e426 sd s1,8(sp)
+ 4de0: 4401 li s0,0
if (size > 0)
- 4dca: 84aa mv s1,a0
+ 4de2: 84aa mv s1,a0
size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 4dcc: 4601 li a2,0
- 4dce: bff9 j 4dac <strlcpy+0x32>
+ 4de4: 4601 li a2,0
+ 4de6: bff9 j 4dc4 <strlcpy+0x32>
-0000000000004dd0 <strlcat>:
+0000000000004de8 <strlcat>:
while (*p)
- 4dd0: 0005c783 lbu a5,0(a1)
+ 4de8: 0005c783 lbu a5,0(a1)
size_t strlcat(char *dst, const char *src, size_t size)
{
- 4dd4: 7179 addi sp,sp,-48
- 4dd6: e84a sd s2,16(sp)
- 4dd8: f406 sd ra,40(sp)
- 4dda: f022 sd s0,32(sp)
- 4ddc: ec26 sd s1,24(sp)
- 4dde: 892a mv s2,a0
+ 4dec: 7179 addi sp,sp,-48
+ 4dee: e84a sd s2,16(sp)
+ 4df0: f406 sd ra,40(sp)
+ 4df2: f022 sd s0,32(sp)
+ 4df4: ec26 sd s1,24(sp)
+ 4df6: 892a mv s2,a0
while (*p)
- 4de0: c7b5 beqz a5,4e4c <strlcat+0x7c>
+ 4df8: c7b5 beqz a5,4e64 <strlcat+0x7c>
const char *p = s;
- 4de2: 87ae mv a5,a1
+ 4dfa: 87ae mv a5,a1
while (*p)
- 4de4: 0017c703 lbu a4,1(a5)
+ 4dfc: 0017c703 lbu a4,1(a5)
p++;
- 4de8: 0785 addi a5,a5,1
+ 4e00: 0785 addi a5,a5,1
while (*p)
- 4dea: ff6d bnez a4,4de4 <strlcat+0x14>
+ 4e02: ff6d bnez a4,4dfc <strlcat+0x14>
return (size_t)(p - s);
- 4dec: 40b784b3 sub s1,a5,a1
+ 4e04: 40b784b3 sub s1,a5,a1
size_t dst_len = 0;
- 4df0: 4401 li s0,0
+ 4e08: 4401 li s0,0
size_t src_len = strlen(src);
while (dst_len < size && dst[dst_len] != '\0')
- 4df2: e609 bnez a2,4dfc <strlcat+0x2c>
- 4df4: a0a1 j 4e3c <strlcat+0x6c>
+ 4e0a: e609 bnez a2,4e14 <strlcat+0x2c>
+ 4e0c: a0a1 j 4e54 <strlcat+0x6c>
dst_len++;
- 4df6: 0405 addi s0,s0,1
+ 4e0e: 0405 addi s0,s0,1
while (dst_len < size && dst[dst_len] != '\0')
- 4df8: 04860263 beq a2,s0,4e3c <strlcat+0x6c>
- 4dfc: 00890533 add a0,s2,s0
- 4e00: 00054783 lbu a5,0(a0)
- 4e04: fbed bnez a5,4df6 <strlcat+0x26>
+ 4e10: 04860263 beq a2,s0,4e54 <strlcat+0x6c>
+ 4e14: 00890533 add a0,s2,s0
+ 4e18: 00054783 lbu a5,0(a0)
+ 4e1c: fbed bnez a5,4e0e <strlcat+0x26>
if (dst_len == size)
- 4e06: 02860b63 beq a2,s0,4e3c <strlcat+0x6c>
- 4e0a: e44e sd s3,8(sp)
+ 4e1e: 02860b63 beq a2,s0,4e54 <strlcat+0x6c>
+ 4e22: e44e sd s3,8(sp)
return size + src_len;
size_t space_left = size - dst_len;
- 4e0c: 408607b3 sub a5,a2,s0
+ 4e24: 408607b3 sub a5,a2,s0
size_t copy_len = (src_len >= space_left) ? space_left - 1 : src_len;
- 4e10: 89a6 mv s3,s1
- 4e12: 02f4f263 bgeu s1,a5,4e36 <strlcat+0x66>
+ 4e28: 89a6 mv s3,s1
+ 4e2a: 02f4f263 bgeu s1,a5,4e4e <strlcat+0x66>
memcpy(dst + dst_len, src, copy_len);
dst[dst_len + copy_len] = '\0';
- 4e16: 994e add s2,s2,s3
- 4e18: 9922 add s2,s2,s0
+ 4e2e: 994e add s2,s2,s3
+ 4e30: 9922 add s2,s2,s0
return memmove(vdst, vsrc, n);
- 4e1a: 864e mv a2,s3
- 4e1c: cadff0ef jal 4ac8 <memmove>
+ 4e32: 864e mv a2,s3
+ 4e34: cadff0ef jal 4ae0 <memmove>
dst[dst_len + copy_len] = '\0';
- 4e20: 00090023 sb zero,0(s2)
+ 4e38: 00090023 sb zero,0(s2) # 1000 <_vscanf_core.constprop.0+0x698>
return dst_len + src_len;
- 4e24: 00940533 add a0,s0,s1
+ 4e3c: 00940533 add a0,s0,s1
}
- 4e28: 70a2 ld ra,40(sp)
- 4e2a: 7402 ld s0,32(sp)
+ 4e40: 70a2 ld ra,40(sp)
+ 4e42: 7402 ld s0,32(sp)
return dst_len + src_len;
- 4e2c: 69a2 ld s3,8(sp)
+ 4e44: 69a2 ld s3,8(sp)
}
- 4e2e: 64e2 ld s1,24(sp)
- 4e30: 6942 ld s2,16(sp)
- 4e32: 6145 addi sp,sp,48
- 4e34: 8082 ret
+ 4e46: 64e2 ld s1,24(sp)
+ 4e48: 6942 ld s2,16(sp)
+ 4e4a: 6145 addi sp,sp,48
+ 4e4c: 8082 ret
size_t copy_len = (src_len >= space_left) ? space_left - 1 : src_len;
- 4e36: fff78993 addi s3,a5,-1
- 4e3a: bff1 j 4e16 <strlcat+0x46>
+ 4e4e: fff78993 addi s3,a5,-1
+ 4e52: bff1 j 4e2e <strlcat+0x46>
}
- 4e3c: 70a2 ld ra,40(sp)
- 4e3e: 7402 ld s0,32(sp)
- 4e40: 6942 ld s2,16(sp)
+ 4e54: 70a2 ld ra,40(sp)
+ 4e56: 7402 ld s0,32(sp)
+ 4e58: 6942 ld s2,16(sp)
return size + src_len;
- 4e42: 00960533 add a0,a2,s1
+ 4e5a: 00960533 add a0,a2,s1
}
- 4e46: 64e2 ld s1,24(sp)
- 4e48: 6145 addi sp,sp,48
- 4e4a: 8082 ret
+ 4e5e: 64e2 ld s1,24(sp)
+ 4e60: 6145 addi sp,sp,48
+ 4e62: 8082 ret
while (*p)
- 4e4c: 4481 li s1,0
- 4e4e: b74d j 4df0 <strlcat+0x20>
+ 4e64: 4481 li s1,0
+ 4e66: b74d j 4e08 <strlcat+0x20>
-0000000000004e50 <strspn>:
+0000000000004e68 <strspn>:
size_t strspn(const char *s, const char *accept)
{
const char *p = s;
const char *a;
while (*p)
- 4e50: 00054683 lbu a3,0(a0)
- 4e54: c695 beqz a3,4e80 <strspn+0x30>
+ 4e68: 00054683 lbu a3,0(a0)
+ 4e6c: c695 beqz a3,4e98 <strspn+0x30>
{
for (a = accept; *a; a++)
- 4e56: 0005c803 lbu a6,0(a1)
- 4e5a: 862a mv a2,a0
- 4e5c: 00080f63 beqz a6,4e7a <strspn+0x2a>
- 4e60: 87ae mv a5,a1
- 4e62: 8742 mv a4,a6
- 4e64: a021 j 4e6c <strspn+0x1c>
- 4e66: 0007c703 lbu a4,0(a5)
- 4e6a: cb01 beqz a4,4e7a <strspn+0x2a>
- 4e6c: 0785 addi a5,a5,1
+ 4e6e: 0005c803 lbu a6,0(a1)
+ 4e72: 862a mv a2,a0
+ 4e74: 00080f63 beqz a6,4e92 <strspn+0x2a>
+ 4e78: 87ae mv a5,a1
+ 4e7a: 8742 mv a4,a6
+ 4e7c: a021 j 4e84 <strspn+0x1c>
+ 4e7e: 0007c703 lbu a4,0(a5)
+ 4e82: cb01 beqz a4,4e92 <strspn+0x2a>
+ 4e84: 0785 addi a5,a5,1
{
if (*p == *a)
- 4e6e: fee69ce3 bne a3,a4,4e66 <strspn+0x16>
+ 4e86: fee69ce3 bne a3,a4,4e7e <strspn+0x16>
while (*p)
- 4e72: 00164683 lbu a3,1(a2)
+ 4e8a: 00164683 lbu a3,1(a2)
break;
}
if (*a == '\0')
return (size_t)(p - s);
p++;
- 4e76: 0605 addi a2,a2,1
+ 4e8e: 0605 addi a2,a2,1
while (*p)
- 4e78: f6e5 bnez a3,4e60 <strspn+0x10>
+ 4e90: f6e5 bnez a3,4e78 <strspn+0x10>
}
return (size_t)(p - s);
- 4e7a: 40a60533 sub a0,a2,a0
- 4e7e: 8082 ret
+ 4e92: 40a60533 sub a0,a2,a0
+ 4e96: 8082 ret
while (*p)
- 4e80: 4501 li a0,0
+ 4e98: 4501 li a0,0
}
- 4e82: 8082 ret
+ 4e9a: 8082 ret
-0000000000004e84 <strcspn>:
+0000000000004e9c <strcspn>:
size_t strcspn(const char *s, const char *reject)
{
const char *p = s;
const char *r;
while (*p)
- 4e84: 00054683 lbu a3,0(a0)
- 4e88: ce85 beqz a3,4ec0 <strcspn+0x3c>
+ 4e9c: 00054683 lbu a3,0(a0)
+ 4ea0: ce85 beqz a3,4ed8 <strcspn+0x3c>
{
for (r = reject; *r; r++)
- 4e8a: 0005c803 lbu a6,0(a1)
+ 4ea2: 0005c803 lbu a6,0(a1)
const char *p = s;
- 4e8e: 862a mv a2,a0
+ 4ea6: 862a mv a2,a0
for (r = reject; *r; r++)
- 4e90: 02080363 beqz a6,4eb6 <strcspn+0x32>
- 4e94: 87ae mv a5,a1
- 4e96: 8742 mv a4,a6
- 4e98: a021 j 4ea0 <strcspn+0x1c>
- 4e9a: 0007c703 lbu a4,0(a5)
- 4e9e: c719 beqz a4,4eac <strcspn+0x28>
- 4ea0: 0785 addi a5,a5,1
+ 4ea8: 02080363 beqz a6,4ece <strcspn+0x32>
+ 4eac: 87ae mv a5,a1
+ 4eae: 8742 mv a4,a6
+ 4eb0: a021 j 4eb8 <strcspn+0x1c>
+ 4eb2: 0007c703 lbu a4,0(a5)
+ 4eb6: c719 beqz a4,4ec4 <strcspn+0x28>
+ 4eb8: 0785 addi a5,a5,1
{
if (*p == *r)
- 4ea2: fed71ce3 bne a4,a3,4e9a <strcspn+0x16>
+ 4eba: fed71ce3 bne a4,a3,4eb2 <strcspn+0x16>
return (size_t)(p - s);
}
p++;
}
return (size_t)(p - s);
- 4ea6: 40a60533 sub a0,a2,a0
- 4eaa: 8082 ret
+ 4ebe: 40a60533 sub a0,a2,a0
+ 4ec2: 8082 ret
while (*p)
- 4eac: 00164683 lbu a3,1(a2)
+ 4ec4: 00164683 lbu a3,1(a2)
p++;
- 4eb0: 0605 addi a2,a2,1
+ 4ec8: 0605 addi a2,a2,1
while (*p)
- 4eb2: f2ed bnez a3,4e94 <strcspn+0x10>
- 4eb4: bfcd j 4ea6 <strcspn+0x22>
- 4eb6: 00164683 lbu a3,1(a2)
+ 4eca: f2ed bnez a3,4eac <strcspn+0x10>
+ 4ecc: bfcd j 4ebe <strcspn+0x22>
+ 4ece: 00164683 lbu a3,1(a2)
p++;
- 4eba: 0605 addi a2,a2,1
+ 4ed2: 0605 addi a2,a2,1
while (*p)
- 4ebc: feed bnez a3,4eb6 <strcspn+0x32>
- 4ebe: b7e5 j 4ea6 <strcspn+0x22>
- 4ec0: 4501 li a0,0
+ 4ed4: feed bnez a3,4ece <strcspn+0x32>
+ 4ed6: b7e5 j 4ebe <strcspn+0x22>
+ 4ed8: 4501 li a0,0
}
- 4ec2: 8082 ret
+ 4eda: 8082 ret
-0000000000004ec4 <strpbrk>:
+0000000000004edc <strpbrk>:
char *strpbrk(const char *s, const char *accept)
{
const char *a;
while (*s)
- 4ec4: 00054683 lbu a3,0(a0)
- 4ec8: c295 beqz a3,4eec <strpbrk+0x28>
+ 4edc: 00054683 lbu a3,0(a0)
+ 4ee0: c295 beqz a3,4f04 <strpbrk+0x28>
{
for (a = accept; *a; a++)
- 4eca: 0005c603 lbu a2,0(a1)
- 4ece: c20d beqz a2,4ef0 <strpbrk+0x2c>
- 4ed0: 87ae mv a5,a1
- 4ed2: 8732 mv a4,a2
- 4ed4: a021 j 4edc <strpbrk+0x18>
- 4ed6: 0007c703 lbu a4,0(a5)
- 4eda: c709 beqz a4,4ee4 <strpbrk+0x20>
- 4edc: 0785 addi a5,a5,1
+ 4ee2: 0005c603 lbu a2,0(a1)
+ 4ee6: c20d beqz a2,4f08 <strpbrk+0x2c>
+ 4ee8: 87ae mv a5,a1
+ 4eea: 8732 mv a4,a2
+ 4eec: a021 j 4ef4 <strpbrk+0x18>
+ 4eee: 0007c703 lbu a4,0(a5)
+ 4ef2: c709 beqz a4,4efc <strpbrk+0x20>
+ 4ef4: 0785 addi a5,a5,1
{
if (*s == *a)
- 4ede: fed71ce3 bne a4,a3,4ed6 <strpbrk+0x12>
+ 4ef6: fed71ce3 bne a4,a3,4eee <strpbrk+0x12>
return (char *)s;
}
s++;
}
return NULL;
}
- 4ee2: 8082 ret
+ 4efa: 8082 ret
while (*s)
- 4ee4: 00154683 lbu a3,1(a0)
+ 4efc: 00154683 lbu a3,1(a0)
s++;
- 4ee8: 0505 addi a0,a0,1
+ 4f00: 0505 addi a0,a0,1
while (*s)
- 4eea: f2fd bnez a3,4ed0 <strpbrk+0xc>
+ 4f02: f2fd bnez a3,4ee8 <strpbrk+0xc>
return NULL;
- 4eec: 4501 li a0,0
+ 4f04: 4501 li a0,0
}
- 4eee: 8082 ret
+ 4f06: 8082 ret
while (*s)
- 4ef0: 00154683 lbu a3,1(a0)
+ 4f08: 00154683 lbu a3,1(a0)
s++;
- 4ef4: 0505 addi a0,a0,1
+ 4f0c: 0505 addi a0,a0,1
while (*s)
- 4ef6: feed bnez a3,4ef0 <strpbrk+0x2c>
- 4ef8: bfd5 j 4eec <strpbrk+0x28>
+ 4f0e: feed bnez a3,4f08 <strpbrk+0x2c>
+ 4f10: bfd5 j 4f04 <strpbrk+0x28>
-0000000000004efa <strtok>:
+0000000000004f12 <strtok>:
char *strtok(char *str, const char *delim)
{
static char *olds;
char *token;
if (str == NULL)
- 4efa: 00003897 auipc a7,0x3
- 4efe: 93688893 addi a7,a7,-1738 # 7830 <olds.0>
- 4f02: cd25 beqz a0,4f7a <strtok+0x80>
+ 4f12: 00003897 auipc a7,0x3
+ 4f16: 93e88893 addi a7,a7,-1730 # 7850 <olds.0>
+ 4f1a: cd25 beqz a0,4f92 <strtok+0x80>
while (*p)
- 4f04: 00054683 lbu a3,0(a0)
- 4f08: c295 beqz a3,4f2c <strtok+0x32>
+ 4f1c: 00054683 lbu a3,0(a0)
+ 4f20: c295 beqz a3,4f44 <strtok+0x32>
for (a = accept; *a; a++)
- 4f0a: 0005c803 lbu a6,0(a1)
- 4f0e: 02080463 beqz a6,4f36 <strtok+0x3c>
- 4f12: 87ae mv a5,a1
- 4f14: 8742 mv a4,a6
- 4f16: a021 j 4f1e <strtok+0x24>
- 4f18: 0007c703 lbu a4,0(a5)
- 4f1c: cf09 beqz a4,4f36 <strtok+0x3c>
- 4f1e: 0785 addi a5,a5,1
+ 4f22: 0005c803 lbu a6,0(a1)
+ 4f26: 02080463 beqz a6,4f4e <strtok+0x3c>
+ 4f2a: 87ae mv a5,a1
+ 4f2c: 8742 mv a4,a6
+ 4f2e: a021 j 4f36 <strtok+0x24>
+ 4f30: 0007c703 lbu a4,0(a5)
+ 4f34: cf09 beqz a4,4f4e <strtok+0x3c>
+ 4f36: 0785 addi a5,a5,1
if (*p == *a)
- 4f20: fee69ce3 bne a3,a4,4f18 <strtok+0x1e>
+ 4f38: fee69ce3 bne a3,a4,4f30 <strtok+0x1e>
while (*p)
- 4f24: 00154683 lbu a3,1(a0)
+ 4f3c: 00154683 lbu a3,1(a0)
p++;
- 4f28: 0505 addi a0,a0,1
+ 4f40: 0505 addi a0,a0,1
while (*p)
- 4f2a: f6e5 bnez a3,4f12 <strtok+0x18>
- 4f2c: 87aa mv a5,a0
+ 4f42: f6e5 bnez a3,4f2a <strtok+0x18>
+ 4f44: 87aa mv a5,a0
str = olds;
str += strspn(str, delim);
if (*str == '\0')
{
olds = str;
- 4f2e: 00f8b023 sd a5,0(a7)
+ 4f46: 00f8b023 sd a5,0(a7)
return NULL;
- 4f32: 4501 li a0,0
+ 4f4a: 4501 li a0,0
*str = '\0';
olds = str + 1;
}
return token;
}
- 4f34: 8082 ret
+ 4f4c: 8082 ret
if (*str == '\0')
- 4f36: 00054603 lbu a2,0(a0)
- 4f3a: da6d beqz a2,4f2c <strtok+0x32>
- 4f3c: 86aa mv a3,a0
+ 4f4e: 00054603 lbu a2,0(a0)
+ 4f52: da6d beqz a2,4f44 <strtok+0x32>
+ 4f54: 86aa mv a3,a0
for (a = accept; *a; a++)
- 4f3e: 04080163 beqz a6,4f80 <strtok+0x86>
- 4f42: 8742 mv a4,a6
- 4f44: 87ae mv a5,a1
- 4f46: a021 j 4f4e <strtok+0x54>
- 4f48: 0007c703 lbu a4,0(a5)
- 4f4c: cb19 beqz a4,4f62 <strtok+0x68>
- 4f4e: 0785 addi a5,a5,1
+ 4f56: 04080163 beqz a6,4f98 <strtok+0x86>
+ 4f5a: 8742 mv a4,a6
+ 4f5c: 87ae mv a5,a1
+ 4f5e: a021 j 4f66 <strtok+0x54>
+ 4f60: 0007c703 lbu a4,0(a5)
+ 4f64: cb19 beqz a4,4f7a <strtok+0x68>
+ 4f66: 0785 addi a5,a5,1
if (*s == *a)
- 4f50: fee61ce3 bne a2,a4,4f48 <strtok+0x4e>
+ 4f68: fee61ce3 bne a2,a4,4f60 <strtok+0x4e>
olds = str + 1;
- 4f54: 00168793 addi a5,a3,1
+ 4f6c: 00168793 addi a5,a3,1
*str = '\0';
- 4f58: 00068023 sb zero,0(a3)
+ 4f70: 00068023 sb zero,0(a3)
olds = str;
- 4f5c: 00f8b023 sd a5,0(a7)
+ 4f74: 00f8b023 sd a5,0(a7)
}
- 4f60: 8082 ret
+ 4f78: 8082 ret
while (*s)
- 4f62: 0016c603 lbu a2,1(a3)
+ 4f7a: 0016c603 lbu a2,1(a3)
s++;
- 4f66: 0685 addi a3,a3,1
+ 4f7e: 0685 addi a3,a3,1
while (*s)
- 4f68: fe69 bnez a2,4f42 <strtok+0x48>
- 4f6a: 87aa mv a5,a0
+ 4f80: fe69 bnez a2,4f5a <strtok+0x48>
+ 4f82: 87aa mv a5,a0
while (*s != (char)c)
- 4f6c: 0017c703 lbu a4,1(a5)
+ 4f84: 0017c703 lbu a4,1(a5)
if (!*s++)
- 4f70: 0785 addi a5,a5,1
+ 4f88: 0785 addi a5,a5,1
while (*s != (char)c)
- 4f72: ff6d bnez a4,4f6c <strtok+0x72>
+ 4f8a: ff6d bnez a4,4f84 <strtok+0x72>
olds = str;
- 4f74: 00f8b023 sd a5,0(a7)
+ 4f8c: 00f8b023 sd a5,0(a7)
}
- 4f78: 8082 ret
+ 4f90: 8082 ret
str = olds;
- 4f7a: 0008b503 ld a0,0(a7)
- 4f7e: b759 j 4f04 <strtok+0xa>
+ 4f92: 0008b503 ld a0,0(a7)
+ 4f96: b759 j 4f1c <strtok+0xa>
while (*s)
- 4f80: 0016c603 lbu a2,1(a3)
+ 4f98: 0016c603 lbu a2,1(a3)
s++;
- 4f84: 0685 addi a3,a3,1
+ 4f9c: 0685 addi a3,a3,1
while (*s)
- 4f86: fe6d bnez a2,4f80 <strtok+0x86>
- 4f88: b7cd j 4f6a <strtok+0x70>
+ 4f9e: fe6d bnez a2,4f98 <strtok+0x86>
+ 4fa0: b7cd j 4f82 <strtok+0x70>
-0000000000004f8a <strerror>:
+0000000000004fa2 <strerror>:
char *strerror(int errnum)
{
- 4f8a: 87aa mv a5,a0
+ 4fa2: 87aa mv a5,a0
switch (errnum)
- 4f8c: cd09 beqz a0,4fa6 <strerror+0x1c>
- 4f8e: 4731 li a4,12
- 4f90: 00000517 auipc a0,0x0
- 4f94: 1a850513 addi a0,a0,424 # 5138 <_GLOBAL__sub_I__ZSt3cin+0x170>
- 4f98: 00e78b63 beq a5,a4,4fae <strerror+0x24>
+ 4fa4: cd09 beqz a0,4fbe <strerror+0x1c>
+ 4fa6: 4731 li a4,12
+ 4fa8: 00000517 auipc a0,0x0
+ 4fac: 1a050513 addi a0,a0,416 # 5148 <_GLOBAL__sub_I__ZSt3cin+0x168>
+ 4fb0: 00e78b63 beq a5,a4,4fc6 <strerror+0x24>
return "Success";
// case EINVAL: return "Invalid argument";
case ENOMEM: return "Out of memory";
default:
return "Unknown error";
- 4f9c: 00000517 auipc a0,0x0
- 4fa0: 1ac50513 addi a0,a0,428 # 5148 <_GLOBAL__sub_I__ZSt3cin+0x180>
- 4fa4: 8082 ret
+ 4fb4: 00000517 auipc a0,0x0
+ 4fb8: 1a450513 addi a0,a0,420 # 5158 <_GLOBAL__sub_I__ZSt3cin+0x178>
+ 4fbc: 8082 ret
return "Success";
- 4fa6: 00000517 auipc a0,0x0
- 4faa: 18a50513 addi a0,a0,394 # 5130 <_GLOBAL__sub_I__ZSt3cin+0x168>
+ 4fbe: 00000517 auipc a0,0x0
+ 4fc2: 18250513 addi a0,a0,386 # 5140 <_GLOBAL__sub_I__ZSt3cin+0x160>
}
- 4fae: 8082 ret
+ 4fc6: 8082 ret
-0000000000004fb0 <_Znwm>:
+0000000000004fc8 <_Znwm>:
#include "ulib/stdlib.h"
void *operator new(unsigned long n)
{
return malloc(n);
- 4fb0: d0eff06f j 44be <malloc>
+ 4fc8: cf6ff06f j 44be <malloc>
-0000000000004fb4 <_Znam>:
+0000000000004fcc <_Znam>:
}
void *operator new[](unsigned long n)
- 4fb4: d0aff06f j 44be <malloc>
+ 4fcc: cf2ff06f j 44be <malloc>
-0000000000004fb8 <_ZdlPv>:
+0000000000004fd0 <_ZdlPv>:
return malloc(n);
}
void operator delete(void *p)
{
free(p);
- 4fb8: c90ff06f j 4448 <free>
+ 4fd0: c78ff06f j 4448 <free>
-0000000000004fbc <_ZdaPv>:
+0000000000004fd4 <_ZdaPv>:
}
void operator delete[](void *p)
- 4fbc: c8cff06f j 4448 <free>
+ 4fd4: c74ff06f j 4448 <free>
-0000000000004fc0 <_ZdlPvm>:
+0000000000004fd8 <_ZdlPvm>:
free(p);
}
void operator delete(void *p, unsigned long)
{
free(p);
- 4fc0: c88ff06f j 4448 <free>
+ 4fd8: c70ff06f j 4448 <free>
-0000000000004fc4 <_ZdaPvm>:
+0000000000004fdc <_ZdaPvm>:
}
void operator delete[](void *p, unsigned long)
- 4fc4: c84ff06f j 4448 <free>
+ 4fdc: c6cff06f j 4448 <free>
-0000000000004fc8 <_GLOBAL__sub_I__ZSt3cin>:
+0000000000004fe0 <_GLOBAL__sub_I__ZSt3cin>:
#include "ulib/iostream"
namespace std
{
istream cin(stdin);
- 4fc8: 00002797 auipc a5,0x2
- 4fcc: 7187b783 ld a5,1816(a5) # 76e0 <_GLOBAL_OFFSET_TABLE_+0x10>
- 4fd0: 6390 ld a2,0(a5)
+ 4fe0: 00002797 auipc a5,0x2
+ 4fe4: 7207b783 ld a5,1824(a5) # 7700 <_GLOBAL_OFFSET_TABLE_+0x10>
+ 4fe8: 6390 ld a2,0(a5)
ostream cout(stdout);
- 4fd2: 00002797 auipc a5,0x2
- 4fd6: 7067b783 ld a5,1798(a5) # 76d8 <_GLOBAL_OFFSET_TABLE_+0x8>
- 4fda: 6394 ld a3,0(a5)
+ 4fea: 00002797 auipc a5,0x2
+ 4fee: 70e7b783 ld a5,1806(a5) # 76f8 <_GLOBAL_OFFSET_TABLE_+0x8>
+ 4ff2: 6394 ld a3,0(a5)
ostream cerr(stderr);
- 4fdc: 00002797 auipc a5,0x2
- 4fe0: 70c7b783 ld a5,1804(a5) # 76e8 <_GLOBAL_OFFSET_TABLE_+0x18>
- 4fe4: 6398 ld a4,0(a5)
+ 4ff4: 00002797 auipc a5,0x2
+ 4ff8: 7147b783 ld a5,1812(a5) # 7708 <_GLOBAL_OFFSET_TABLE_+0x18>
+ 4ffc: 6398 ld a4,0(a5)
class istream{
private:
FILE* _stream;
public:
istream(FILE *f) : _stream(f) {}
- 4fe6: 00003797 auipc a5,0x3
- 4fea: 85278793 addi a5,a5,-1966 # 7838 <_ZSt3cin>
- 4fee: e390 sd a2,0(a5)
+ 4ffe: 00003797 auipc a5,0x3
+ 5002: 85a78793 addi a5,a5,-1958 # 7858 <_ZSt3cin>
+ 5006: e390 sd a2,0(a5)
ostream(FILE* f) : _stream(f) {}
- 4ff0: e794 sd a3,8(a5)
- 4ff2: eb98 sd a4,16(a5)
+ 5008: e794 sd a3,8(a5)
+ 500a: eb98 sd a4,16(a5)
} // namespace std
- 4ff4: 8082 ret
+ 500c: 8082 ret