3947 lines
149 KiB
Plaintext
3947 lines
149 KiB
Plaintext
|
|
dhrystone: file format elf32-littleriscv
|
|
|
|
|
|
Disassembly of section .init:
|
|
|
|
00000020 <_start>:
|
|
.type _start,@function
|
|
|
|
_start:
|
|
.option push
|
|
.option norelax
|
|
la gp, __global_pointer$
|
|
20: 10000197 auipc gp,0x10000
|
|
24: 7f018193 addi gp,gp,2032 # 10000810 <__global_pointer$>
|
|
.option pop
|
|
la sp, _sp
|
|
28: 10004117 auipc sp,0x10004
|
|
2c: fd810113 addi sp,sp,-40 # 10004000 <_sp>
|
|
|
|
/* Load data section */
|
|
la a0, _data_lma
|
|
30: 00003517 auipc a0,0x3
|
|
34: e7450513 addi a0,a0,-396 # 2ea4 <_data_lma>
|
|
la a1, _data
|
|
38: 10000597 auipc a1,0x10000
|
|
3c: fc858593 addi a1,a1,-56 # 10000000 <__DATA_BEGIN__>
|
|
la a2, _edata
|
|
40: 10000617 auipc a2,0x10000
|
|
44: fd460613 addi a2,a2,-44 # 10000014 <Dhrystones_Per_Second>
|
|
bgeu a1, a2, 2f
|
|
48: 00c5fc63 bgeu a1,a2,60 <_start+0x40>
|
|
1:
|
|
lw t0, (a0)
|
|
4c: 00052283 lw t0,0(a0)
|
|
sw t0, (a1)
|
|
50: 0055a023 sw t0,0(a1)
|
|
addi a0, a0, 4
|
|
54: 00450513 addi a0,a0,4
|
|
addi a1, a1, 4
|
|
58: 00458593 addi a1,a1,4
|
|
bltu a1, a2, 1b
|
|
5c: fec5e8e3 bltu a1,a2,4c <_start+0x2c>
|
|
2:
|
|
|
|
/* Clear bss section */
|
|
la a0, __bss_start
|
|
60: 10000517 auipc a0,0x10000
|
|
64: fb450513 addi a0,a0,-76 # 10000014 <Dhrystones_Per_Second>
|
|
la a1, _end
|
|
68: 10002597 auipc a1,0x10002
|
|
6c: 7b058593 addi a1,a1,1968 # 10002818 <__BSS_END__>
|
|
bgeu a0, a1, 2f
|
|
70: 00b57863 bgeu a0,a1,80 <_start+0x60>
|
|
1:
|
|
sw zero, (a0)
|
|
74: 00052023 sw zero,0(a0)
|
|
addi a0, a0, 4
|
|
78: 00450513 addi a0,a0,4
|
|
bltu a0, a1, 1b
|
|
7c: feb56ce3 bltu a0,a1,74 <_start+0x54>
|
|
fssr x0
|
|
1:
|
|
#endif
|
|
|
|
/* argc = argv = 0 */
|
|
li a0, 0
|
|
80: 00000513 li a0,0
|
|
li a1, 0
|
|
84: 00000593 li a1,0
|
|
call main
|
|
88: 008000ef jal ra,90 <main>
|
|
tail _exit
|
|
8c: 5640106f j 15f0 <__wrap__exit>
|
|
|
|
Disassembly of section .text:
|
|
|
|
00000090 <main>:
|
|
main ()
|
|
/*****/
|
|
|
|
/* main program, corresponds to procedures */
|
|
/* Main and Proc_0 in the Ada version */
|
|
{
|
|
90: 7135 addi sp,sp,-160
|
|
REG int Run_Index;
|
|
REG int Number_Of_Runs;
|
|
|
|
/* Initializations */
|
|
|
|
Next_Ptr_Glob = (Rec_Pointer) malloc (sizeof (Rec_Type));
|
|
92: 03000513 li a0,48
|
|
{
|
|
96: cf06 sw ra,156(sp)
|
|
98: cd22 sw s0,152(sp)
|
|
9a: c94a sw s2,144(sp)
|
|
9c: c74e sw s3,140(sp)
|
|
9e: c552 sw s4,136(sp)
|
|
a0: c356 sw s5,132(sp)
|
|
a2: c15a sw s6,128(sp)
|
|
a4: dede sw s7,124(sp)
|
|
a6: dce2 sw s8,120(sp)
|
|
a8: dae6 sw s9,116(sp)
|
|
aa: d8ea sw s10,112(sp)
|
|
ac: d6ee sw s11,108(sp)
|
|
ae: cb26 sw s1,148(sp)
|
|
Next_Ptr_Glob = (Rec_Pointer) malloc (sizeof (Rec_Type));
|
|
b0: 440010ef jal ra,14f0 <__wrap_malloc>
|
|
b4: 842a mv s0,a0
|
|
b6: 82818793 addi a5,gp,-2008 # 10000038 <Next_Ptr_Glob>
|
|
Ptr_Glob = (Rec_Pointer) malloc (sizeof (Rec_Type));
|
|
ba: 03000513 li a0,48
|
|
Next_Ptr_Glob = (Rec_Pointer) malloc (sizeof (Rec_Type));
|
|
be: c380 sw s0,0(a5)
|
|
Ptr_Glob = (Rec_Pointer) malloc (sizeof (Rec_Type));
|
|
c0: 430010ef jal ra,14f0 <__wrap_malloc>
|
|
|
|
Ptr_Glob->Ptr_Comp = Next_Ptr_Glob;
|
|
Ptr_Glob->Discr = Ident_1;
|
|
Ptr_Glob->variant.var_1.Enum_Comp = Ident_3;
|
|
Ptr_Glob->variant.var_1.Int_Comp = 40;
|
|
strcpy (Ptr_Glob->variant.var_1.Str_Comp,
|
|
c4: 00002717 auipc a4,0x2
|
|
c8: 50470713 addi a4,a4,1284 # 25c8 <__modsi3+0x30>
|
|
"DHRYSTONE PROGRAM, SOME STRING");
|
|
strcpy (Str_1_Loc, "DHRYSTONE PROGRAM, 1'ST STRING");
|
|
cc: 00003917 auipc s2,0x3
|
|
d0: a9890913 addi s2,s2,-1384 # 2b64 <__modsi3+0x5cc>
|
|
strcpy (Ptr_Glob->variant.var_1.Str_Comp,
|
|
d4: 00072283 lw t0,0(a4)
|
|
d8: 00472e83 lw t4,4(a4)
|
|
dc: 00872e03 lw t3,8(a4)
|
|
e0: 00c72303 lw t1,12(a4)
|
|
e4: 01072883 lw a7,16(a4)
|
|
e8: 01472803 lw a6,20(a4)
|
|
ec: 4f0c lw a1,24(a4)
|
|
ee: 01c75603 lhu a2,28(a4)
|
|
f2: 01e74683 lbu a3,30(a4)
|
|
strcpy (Str_1_Loc, "DHRYSTONE PROGRAM, 1'ST STRING");
|
|
f6: 00092f83 lw t6,0(s2)
|
|
fa: 00492f03 lw t5,4(s2)
|
|
fe: 00892983 lw s3,8(s2)
|
|
Ptr_Glob->variant.var_1.Enum_Comp = Ident_3;
|
|
102: 4389 li t2,2
|
|
Ptr_Glob->variant.var_1.Int_Comp = 40;
|
|
104: 02800a13 li s4,40
|
|
Ptr_Glob = (Rec_Pointer) malloc (sizeof (Rec_Type));
|
|
108: 82c18a93 addi s5,gp,-2004 # 1000003c <Ptr_Glob>
|
|
Ptr_Glob->variant.var_1.Enum_Comp = Ident_3;
|
|
10c: 00752423 sw t2,8(a0)
|
|
strcpy (Ptr_Glob->variant.var_1.Str_Comp,
|
|
110: 00552823 sw t0,16(a0)
|
|
114: 01d52a23 sw t4,20(a0)
|
|
118: 01c52c23 sw t3,24(a0)
|
|
11c: 00652e23 sw t1,28(a0)
|
|
120: 03152023 sw a7,32(a0)
|
|
124: 03052223 sw a6,36(a0)
|
|
128: d50c sw a1,40(a0)
|
|
12a: 02c51623 sh a2,44(a0)
|
|
12e: 02d50723 sb a3,46(a0)
|
|
strcpy (Str_1_Loc, "DHRYSTONE PROGRAM, 1'ST STRING");
|
|
132: d07e sw t6,32(sp)
|
|
134: d27a sw t5,36(sp)
|
|
Ptr_Glob->Ptr_Comp = Next_Ptr_Glob;
|
|
136: c100 sw s0,0(a0)
|
|
Ptr_Glob->Discr = Ident_1;
|
|
138: 00052223 sw zero,4(a0)
|
|
Ptr_Glob->variant.var_1.Int_Comp = 40;
|
|
13c: 01452623 sw s4,12(a0)
|
|
Ptr_Glob = (Rec_Pointer) malloc (sizeof (Rec_Type));
|
|
140: 00aaa023 sw a0,0(s5)
|
|
strcpy (Str_1_Loc, "DHRYSTONE PROGRAM, 1'ST STRING");
|
|
144: 00c92b03 lw s6,12(s2)
|
|
148: 01092b83 lw s7,16(s2)
|
|
14c: 01492c03 lw s8,20(s2)
|
|
150: 01892c83 lw s9,24(s2)
|
|
154: d44e sw s3,40(sp)
|
|
156: 01c95d03 lhu s10,28(s2)
|
|
15a: 01e94d83 lbu s11,30(s2)
|
|
|
|
Arr_2_Glob [8][7] = 10;
|
|
15e: 10000797 auipc a5,0x10000
|
|
162: faa78793 addi a5,a5,-86 # 10000108 <Arr_2_Glob>
|
|
166: 4429 li s0,10
|
|
168: 6487ae23 sw s0,1628(a5)
|
|
/* Was missing in published program. Without this statement, */
|
|
/* Arr_2_Glob [8][7] would have an undefined value. */
|
|
/* Warning: With 16-Bit processors and Number_Of_Runs > 32000, */
|
|
/* overflow may occur for this array element. */
|
|
|
|
printf ("\n");
|
|
16c: 00002517 auipc a0,0x2
|
|
170: 6c450513 addi a0,a0,1732 # 2830 <__modsi3+0x298>
|
|
strcpy (Str_1_Loc, "DHRYSTONE PROGRAM, 1'ST STRING");
|
|
174: d65a sw s6,44(sp)
|
|
176: d85e sw s7,48(sp)
|
|
178: da62 sw s8,52(sp)
|
|
17a: dc66 sw s9,56(sp)
|
|
17c: 03a11e23 sh s10,60(sp)
|
|
180: 03b10f23 sb s11,62(sp)
|
|
printf ("\n");
|
|
184: 425010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("Dhrystone Benchmark, Version 2.1 (Language: C)\n");
|
|
188: 00002517 auipc a0,0x2
|
|
18c: 46050513 addi a0,a0,1120 # 25e8 <__modsi3+0x50>
|
|
190: 419010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("\n");
|
|
194: 00002517 auipc a0,0x2
|
|
198: 69c50513 addi a0,a0,1692 # 2830 <__modsi3+0x298>
|
|
19c: 40d010ef jal ra,1da8 <__wrap_printf>
|
|
if (Reg)
|
|
1a0: 8181a503 lw a0,-2024(gp) # 10000028 <Reg>
|
|
1a4: 5a050963 beqz a0,756 <main+0x6c6>
|
|
{
|
|
printf ("Program compiled with 'register' attribute\n");
|
|
1a8: 00002517 auipc a0,0x2
|
|
1ac: 47050513 addi a0,a0,1136 # 2618 <__modsi3+0x80>
|
|
1b0: 3f9010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("\n");
|
|
1b4: 00002517 auipc a0,0x2
|
|
1b8: 67c50513 addi a0,a0,1660 # 2830 <__modsi3+0x298>
|
|
1bc: 3ed010ef jal ra,1da8 <__wrap_printf>
|
|
else
|
|
{
|
|
printf ("Program compiled without 'register' attribute\n");
|
|
printf ("\n");
|
|
}
|
|
printf ("Please give the number of runs through the benchmark: ");
|
|
1c0: 00002517 auipc a0,0x2
|
|
1c4: 4b450513 addi a0,a0,1204 # 2674 <__modsi3+0xdc>
|
|
1c8: 3e1010ef jal ra,1da8 <__wrap_printf>
|
|
{
|
|
int n;
|
|
scanf ("%d", &n);
|
|
1cc: 008c addi a1,sp,64
|
|
1ce: 00002517 auipc a0,0x2
|
|
1d2: 4de50513 addi a0,a0,1246 # 26ac <__modsi3+0x114>
|
|
1d6: 70a000ef jal ra,8e0 <__wrap_scanf>
|
|
Number_Of_Runs = n;
|
|
1da: 4406 lw s0,64(sp)
|
|
}
|
|
printf ("\n");
|
|
1dc: 00002517 auipc a0,0x2
|
|
1e0: 65450513 addi a0,a0,1620 # 2830 <__modsi3+0x298>
|
|
Number_Of_Runs = n;
|
|
1e4: c622 sw s0,12(sp)
|
|
printf ("\n");
|
|
1e6: 3c3010ef jal ra,1da8 <__wrap_printf>
|
|
|
|
printf ("Execution starts, %d runs through Dhrystone\n", Number_Of_Runs);
|
|
1ea: 85a2 mv a1,s0
|
|
1ec: 00002517 auipc a0,0x2
|
|
1f0: 4c450513 addi a0,a0,1220 # 26b0 <__modsi3+0x118>
|
|
1f4: 3b5010ef jal ra,1da8 <__wrap_printf>
|
|
#ifdef TIMES
|
|
times (&time_info);
|
|
Begin_Time = (long) time_info.tms_utime;
|
|
#endif
|
|
#ifdef TIME
|
|
Begin_Time = time ( (long *) 0);
|
|
1f8: 4501 li a0,0
|
|
1fa: 6da000ef jal ra,8d4 <time>
|
|
1fe: 81418713 addi a4,gp,-2028 # 10000024 <Begin_Time>
|
|
202: c308 sw a0,0(a4)
|
|
#endif
|
|
|
|
for (Run_Index = 1; Run_Index <= Number_Of_Runs; ++Run_Index)
|
|
204: 58805963 blez s0,796 <main+0x706>
|
|
208: 82018e93 addi t4,gp,-2016 # 10000030 <Bool_Glob>
|
|
20c: 4905 li s2,1
|
|
20e: 00003497 auipc s1,0x3
|
|
212: 97648493 addi s1,s1,-1674 # 2b84 <__modsi3+0x5ec>
|
|
216: 02010b93 addi s7,sp,32
|
|
21a: c476 sw t4,8(sp)
|
|
21c: 81c18413 addi s0,gp,-2020 # 1000002c <Ch_2_Glob>
|
|
220: 82418a13 addi s4,gp,-2012 # 10000034 <Int_Glob>
|
|
Proc_7 (Int_1_Loc, Int_2_Loc, &Int_3_Loc);
|
|
/* Int_3_Loc == 7 */
|
|
Int_1_Loc += 1;
|
|
} /* while */
|
|
/* Int_1_Loc == 3, Int_2_Loc == 3, Int_3_Loc == 7 */
|
|
Proc_8 (Arr_1_Glob, Arr_2_Glob, Int_1_Loc, Int_3_Loc);
|
|
224: 10000d17 auipc s10,0x10000
|
|
228: ee4d0d13 addi s10,s10,-284 # 10000108 <Arr_2_Glob>
|
|
22c: 83018c93 addi s9,gp,-2000 # 10000040 <Arr_1_Glob>
|
|
{
|
|
if (Enum_Loc == Func_1 (Ch_Index, 'C'))
|
|
/* then, not executed */
|
|
{
|
|
Proc_6 (Ident_1, &Enum_Loc);
|
|
strcpy (Str_2_Loc, "DHRYSTONE PROGRAM, 3'RD STRING");
|
|
230: 00003b17 auipc s6,0x3
|
|
234: 974b0b13 addi s6,s6,-1676 # 2ba4 <__modsi3+0x60c>
|
|
Proc_5();
|
|
238: 029000ef jal ra,a60 <Proc_5>
|
|
Proc_4();
|
|
23c: 001000ef jal ra,a3c <Proc_4>
|
|
strcpy (Str_2_Loc, "DHRYSTONE PROGRAM, 2'ND STRING");
|
|
240: 0004a803 lw a6,0(s1)
|
|
244: 0044af83 lw t6,4(s1)
|
|
248: 0084ae03 lw t3,8(s1)
|
|
24c: 00c4a303 lw t1,12(s1)
|
|
250: 0104a883 lw a7,16(s1)
|
|
254: 01c4df03 lhu t5,28(s1)
|
|
258: 4c94 lw a3,24(s1)
|
|
25a: 48d0 lw a2,20(s1)
|
|
25c: 01e4c983 lbu s3,30(s1)
|
|
Enum_Loc = Ident_2;
|
|
260: 4385 li t2,1
|
|
Bool_Glob = ! Func_2 (Str_1_Loc, Str_2_Loc);
|
|
262: 008c addi a1,sp,64
|
|
264: 855e mv a0,s7
|
|
strcpy (Str_2_Loc, "DHRYSTONE PROGRAM, 2'ND STRING");
|
|
266: c0c2 sw a6,64(sp)
|
|
268: c2fe sw t6,68(sp)
|
|
26a: c4f2 sw t3,72(sp)
|
|
26c: c69a sw t1,76(sp)
|
|
26e: c8c6 sw a7,80(sp)
|
|
270: 05e11e23 sh t5,92(sp)
|
|
Enum_Loc = Ident_2;
|
|
274: ce1e sw t2,28(sp)
|
|
strcpy (Str_2_Loc, "DHRYSTONE PROGRAM, 2'ND STRING");
|
|
276: ccb6 sw a3,88(sp)
|
|
278: cab2 sw a2,84(sp)
|
|
27a: 05310f23 sb s3,94(sp)
|
|
Bool_Glob = ! Func_2 (Str_1_Loc, Str_2_Loc);
|
|
27e: 063000ef jal ra,ae0 <Func_2>
|
|
282: 4da2 lw s11,8(sp)
|
|
Int_3_Loc = 5 * Int_1_Loc - Int_2_Loc;
|
|
284: 479d li a5,7
|
|
Bool_Glob = ! Func_2 (Str_1_Loc, Str_2_Loc);
|
|
286: 00153c13 seqz s8,a0
|
|
Proc_7 (Int_1_Loc, Int_2_Loc, &Int_3_Loc);
|
|
28a: 0830 addi a2,sp,24
|
|
28c: 458d li a1,3
|
|
28e: 4509 li a0,2
|
|
Int_3_Loc = 5 * Int_1_Loc - Int_2_Loc;
|
|
290: cc3e sw a5,24(sp)
|
|
Bool_Glob = ! Func_2 (Str_1_Loc, Str_2_Loc);
|
|
292: 018da023 sw s8,0(s11)
|
|
Proc_7 (Int_1_Loc, Int_2_Loc, &Int_3_Loc);
|
|
296: 7d8000ef jal ra,a6e <Proc_7>
|
|
Proc_8 (Arr_1_Glob, Arr_2_Glob, Int_1_Loc, Int_3_Loc);
|
|
29a: 46e2 lw a3,24(sp)
|
|
29c: 85ea mv a1,s10
|
|
Int_1_Loc += 1;
|
|
29e: 470d li a4,3
|
|
Proc_8 (Arr_1_Glob, Arr_2_Glob, Int_1_Loc, Int_3_Loc);
|
|
2a0: 460d li a2,3
|
|
2a2: 8566 mv a0,s9
|
|
Int_1_Loc += 1;
|
|
2a4: ca3a sw a4,20(sp)
|
|
Proc_8 (Arr_1_Glob, Arr_2_Glob, Int_1_Loc, Int_3_Loc);
|
|
2a6: 7d0000ef jal ra,a76 <Proc_8>
|
|
Proc_1 (Ptr_Glob);
|
|
2aa: 000aa503 lw a0,0(s5)
|
|
2ae: 686000ef jal ra,934 <Proc_1>
|
|
for (Ch_Index = 'A'; Ch_Index <= Ch_2_Glob; ++Ch_Index)
|
|
2b2: 00044583 lbu a1,0(s0)
|
|
2b6: 04000513 li a0,64
|
|
2ba: 48b57c63 bgeu a0,a1,752 <main+0x6c2>
|
|
2be: 04100c13 li s8,65
|
|
Int_2_Loc = 3;
|
|
2c2: 498d li s3,3
|
|
if (Enum_Loc == Func_1 (Ch_Index, 'C'))
|
|
2c4: 8562 mv a0,s8
|
|
2c6: 04300593 li a1,67
|
|
2ca: 7fe000ef jal ra,ac8 <Func_1>
|
|
2ce: 42f2 lw t0,28(sp)
|
|
for (Ch_Index = 'A'; Ch_Index <= Ch_2_Glob; ++Ch_Index)
|
|
2d0: 001c0e93 addi t4,s8,1
|
|
if (Enum_Loc == Func_1 (Ch_Index, 'C'))
|
|
2d4: 42550363 beq a0,t0,6fa <main+0x66a>
|
|
for (Ch_Index = 'A'; Ch_Index <= Ch_2_Glob; ++Ch_Index)
|
|
2d8: 00044083 lbu ra,0(s0)
|
|
2dc: 0ffefc13 zext.b s8,t4
|
|
2e0: ff80f2e3 bgeu ra,s8,2c4 <main+0x234>
|
|
Int_2_Loc = Run_Index;
|
|
Int_Glob = Run_Index;
|
|
}
|
|
}
|
|
/* Int_1_Loc == 3, Int_2_Loc == 3, Int_3_Loc == 7 */
|
|
Int_2_Loc = Int_2_Loc * Int_1_Loc;
|
|
2e4: 00199713 slli a4,s3,0x1
|
|
2e8: 99ba add s3,s3,a4
|
|
Int_1_Loc = Int_2_Loc / Int_3_Loc;
|
|
2ea: 4de2 lw s11,24(sp)
|
|
Int_2_Loc = 7 * (Int_2_Loc - Int_3_Loc) - Int_1_Loc;
|
|
/* Int_1_Loc == 1, Int_2_Loc == 13, Int_3_Loc == 7 */
|
|
Proc_2 (&Int_1_Loc);
|
|
2ec: 0848 addi a0,sp,20
|
|
for (Run_Index = 1; Run_Index <= Number_Of_Runs; ++Run_Index)
|
|
2ee: 0905 addi s2,s2,1
|
|
Int_1_Loc = Int_2_Loc / Int_3_Loc;
|
|
2f0: 03b9cc33 div s8,s3,s11
|
|
2f4: ca62 sw s8,20(sp)
|
|
Proc_2 (&Int_1_Loc);
|
|
2f6: 2511 jal 8fa <Proc_2>
|
|
for (Run_Index = 1; Run_Index <= Number_Of_Runs; ++Run_Index)
|
|
2f8: 45b2 lw a1,12(sp)
|
|
2fa: f325dfe3 bge a1,s2,238 <main+0x1a8>
|
|
Int_2_Loc = 7 * (Int_2_Loc - Int_3_Loc) - Int_1_Loc;
|
|
2fe: 41b98d33 sub s10,s3,s11
|
|
302: 003d1493 slli s1,s10,0x3
|
|
306: 41a48cb3 sub s9,s1,s10
|
|
30a: 418c84b3 sub s1,s9,s8
|
|
#ifdef TIMES
|
|
times (&time_info);
|
|
End_Time = (long) time_info.tms_utime;
|
|
#endif
|
|
#ifdef TIME
|
|
End_Time = time ( (long *) 0);
|
|
30e: 4501 li a0,0
|
|
310: 23d1 jal 8d4 <time>
|
|
312: 8b2a mv s6,a0
|
|
314: 81018993 addi s3,gp,-2032 # 10000020 <End_Time>
|
|
#endif
|
|
|
|
printf ("Execution ends\n");
|
|
318: 00002517 auipc a0,0x2
|
|
31c: 3c850513 addi a0,a0,968 # 26e0 <__modsi3+0x148>
|
|
End_Time = time ( (long *) 0);
|
|
320: 0169a023 sw s6,0(s3)
|
|
printf ("Execution ends\n");
|
|
324: 285010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("\n");
|
|
328: 00002517 auipc a0,0x2
|
|
32c: 50850513 addi a0,a0,1288 # 2830 <__modsi3+0x298>
|
|
330: 279010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("Final values of the variables used in the benchmark:\n");
|
|
334: 00002517 auipc a0,0x2
|
|
338: 3bc50513 addi a0,a0,956 # 26f0 <__modsi3+0x158>
|
|
33c: 26d010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("\n");
|
|
340: 00002517 auipc a0,0x2
|
|
344: 4f050513 addi a0,a0,1264 # 2830 <__modsi3+0x298>
|
|
348: 261010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("Int_Glob: %d\n", Int_Glob);
|
|
34c: 000a2583 lw a1,0(s4)
|
|
350: 00002517 auipc a0,0x2
|
|
354: 3d850513 addi a0,a0,984 # 2728 <__modsi3+0x190>
|
|
printf (" Int_Comp: %d\n", Ptr_Glob->variant.var_1.Int_Comp);
|
|
printf (" should be: %d\n", 17);
|
|
printf (" Str_Comp: %s\n", Ptr_Glob->variant.var_1.Str_Comp);
|
|
printf (" should be: DHRYSTONE PROGRAM, SOME STRING\n");
|
|
printf ("Next_Ptr_Glob->\n");
|
|
printf (" Ptr_Comp: %d\n", (int) Next_Ptr_Glob->Ptr_Comp);
|
|
358: 82818d93 addi s11,gp,-2008 # 10000038 <Next_Ptr_Glob>
|
|
printf ("Int_Glob: %d\n", Int_Glob);
|
|
35c: 24d010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" should be: %d\n", 5);
|
|
360: 4595 li a1,5
|
|
362: 00002517 auipc a0,0x2
|
|
366: 3e250513 addi a0,a0,994 # 2744 <__modsi3+0x1ac>
|
|
36a: 23f010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("Bool_Glob: %d\n", Bool_Glob);
|
|
36e: 4a22 lw s4,8(sp)
|
|
370: 00002517 auipc a0,0x2
|
|
374: 3f050513 addi a0,a0,1008 # 2760 <__modsi3+0x1c8>
|
|
378: 000a2583 lw a1,0(s4)
|
|
37c: 22d010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" should be: %d\n", 1);
|
|
380: 4585 li a1,1
|
|
382: 00002517 auipc a0,0x2
|
|
386: 3c250513 addi a0,a0,962 # 2744 <__modsi3+0x1ac>
|
|
38a: 21f010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("Ch_1_Glob: %c\n", Ch_1_Glob);
|
|
38e: 81d1c583 lbu a1,-2019(gp) # 1000002d <Ch_1_Glob>
|
|
392: 00002517 auipc a0,0x2
|
|
396: 3ea50513 addi a0,a0,1002 # 277c <__modsi3+0x1e4>
|
|
39a: 20f010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" should be: %c\n", 'A');
|
|
39e: 04100593 li a1,65
|
|
3a2: 00002517 auipc a0,0x2
|
|
3a6: 3f650513 addi a0,a0,1014 # 2798 <__modsi3+0x200>
|
|
3aa: 1ff010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("Ch_2_Glob: %c\n", Ch_2_Glob);
|
|
3ae: 00044583 lbu a1,0(s0)
|
|
3b2: 00002517 auipc a0,0x2
|
|
3b6: 40250513 addi a0,a0,1026 # 27b4 <__modsi3+0x21c>
|
|
printf ("Arr_2_Glob[8][7]: %d\n", Arr_2_Glob[8][7]);
|
|
3ba: 10000417 auipc s0,0x10000
|
|
3be: d4e40413 addi s0,s0,-690 # 10000108 <Arr_2_Glob>
|
|
printf ("Ch_2_Glob: %c\n", Ch_2_Glob);
|
|
3c2: 1e7010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" should be: %c\n", 'B');
|
|
3c6: 04200593 li a1,66
|
|
3ca: 00002517 auipc a0,0x2
|
|
3ce: 3ce50513 addi a0,a0,974 # 2798 <__modsi3+0x200>
|
|
3d2: 1d7010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("Arr_1_Glob[8]: %d\n", Arr_1_Glob[8]);
|
|
3d6: 8501a583 lw a1,-1968(gp) # 10000060 <Arr_1_Glob+0x20>
|
|
3da: 00002517 auipc a0,0x2
|
|
3de: 3f650513 addi a0,a0,1014 # 27d0 <__modsi3+0x238>
|
|
3e2: 1c7010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" should be: %d\n", 7);
|
|
3e6: 459d li a1,7
|
|
3e8: 00002517 auipc a0,0x2
|
|
3ec: 35c50513 addi a0,a0,860 # 2744 <__modsi3+0x1ac>
|
|
3f0: 1b9010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("Arr_2_Glob[8][7]: %d\n", Arr_2_Glob[8][7]);
|
|
3f4: 65c42583 lw a1,1628(s0)
|
|
3f8: 00002517 auipc a0,0x2
|
|
3fc: 3f450513 addi a0,a0,1012 # 27ec <__modsi3+0x254>
|
|
400: 1a9010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" should be: Number_Of_Runs + 10\n");
|
|
404: 00002517 auipc a0,0x2
|
|
408: 40450513 addi a0,a0,1028 # 2808 <__modsi3+0x270>
|
|
40c: 19d010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("Ptr_Glob->\n");
|
|
410: 00002517 auipc a0,0x2
|
|
414: 42450513 addi a0,a0,1060 # 2834 <__modsi3+0x29c>
|
|
418: 191010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" Ptr_Comp: %d\n", (int) Ptr_Glob->Ptr_Comp);
|
|
41c: 000aa283 lw t0,0(s5)
|
|
420: 00002517 auipc a0,0x2
|
|
424: 42050513 addi a0,a0,1056 # 2840 <__modsi3+0x2a8>
|
|
428: 0002a583 lw a1,0(t0)
|
|
42c: 17d010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" should be: (implementation-dependent)\n");
|
|
430: 00002517 auipc a0,0x2
|
|
434: 42c50513 addi a0,a0,1068 # 285c <__modsi3+0x2c4>
|
|
438: 171010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" Discr: %d\n", Ptr_Glob->Discr);
|
|
43c: 000aae83 lw t4,0(s5)
|
|
440: 00002517 auipc a0,0x2
|
|
444: 45050513 addi a0,a0,1104 # 2890 <__modsi3+0x2f8>
|
|
448: 004ea583 lw a1,4(t4)
|
|
44c: 15d010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" should be: %d\n", 0);
|
|
450: 4581 li a1,0
|
|
452: 00002517 auipc a0,0x2
|
|
456: 2f250513 addi a0,a0,754 # 2744 <__modsi3+0x1ac>
|
|
45a: 14f010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" Enum_Comp: %d\n", Ptr_Glob->variant.var_1.Enum_Comp);
|
|
45e: 000aa803 lw a6,0(s5)
|
|
462: 00002517 auipc a0,0x2
|
|
466: 44a50513 addi a0,a0,1098 # 28ac <__modsi3+0x314>
|
|
46a: 00882583 lw a1,8(a6)
|
|
46e: 13b010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" should be: %d\n", 2);
|
|
472: 4589 li a1,2
|
|
474: 00002517 auipc a0,0x2
|
|
478: 2d050513 addi a0,a0,720 # 2744 <__modsi3+0x1ac>
|
|
47c: 12d010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" Int_Comp: %d\n", Ptr_Glob->variant.var_1.Int_Comp);
|
|
480: 000aaf83 lw t6,0(s5)
|
|
484: 00002517 auipc a0,0x2
|
|
488: 44450513 addi a0,a0,1092 # 28c8 <__modsi3+0x330>
|
|
48c: 00cfa583 lw a1,12(t6)
|
|
490: 119010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" should be: %d\n", 17);
|
|
494: 45c5 li a1,17
|
|
496: 00002517 auipc a0,0x2
|
|
49a: 2ae50513 addi a0,a0,686 # 2744 <__modsi3+0x1ac>
|
|
49e: 10b010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" Str_Comp: %s\n", Ptr_Glob->variant.var_1.Str_Comp);
|
|
4a2: 000aaa83 lw s5,0(s5)
|
|
4a6: 00002517 auipc a0,0x2
|
|
4aa: 43e50513 addi a0,a0,1086 # 28e4 <__modsi3+0x34c>
|
|
4ae: 010a8593 addi a1,s5,16
|
|
4b2: 0f7010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" should be: DHRYSTONE PROGRAM, SOME STRING\n");
|
|
4b6: 00002517 auipc a0,0x2
|
|
4ba: 44a50513 addi a0,a0,1098 # 2900 <__modsi3+0x368>
|
|
4be: 0eb010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("Next_Ptr_Glob->\n");
|
|
4c2: 00002517 auipc a0,0x2
|
|
4c6: 47650513 addi a0,a0,1142 # 2938 <__modsi3+0x3a0>
|
|
4ca: 0df010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" Ptr_Comp: %d\n", (int) Next_Ptr_Glob->Ptr_Comp);
|
|
4ce: 000dae03 lw t3,0(s11)
|
|
4d2: 00002517 auipc a0,0x2
|
|
4d6: 36e50513 addi a0,a0,878 # 2840 <__modsi3+0x2a8>
|
|
4da: 000e2583 lw a1,0(t3)
|
|
4de: 0cb010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" should be: (implementation-dependent), same as above\n");
|
|
4e2: 00002517 auipc a0,0x2
|
|
4e6: 46a50513 addi a0,a0,1130 # 294c <__modsi3+0x3b4>
|
|
4ea: 0bf010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" Discr: %d\n", Next_Ptr_Glob->Discr);
|
|
4ee: 000da303 lw t1,0(s11)
|
|
4f2: 00002517 auipc a0,0x2
|
|
4f6: 39e50513 addi a0,a0,926 # 2890 <__modsi3+0x2f8>
|
|
4fa: 00432583 lw a1,4(t1)
|
|
4fe: 0ab010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" should be: %d\n", 0);
|
|
502: 4581 li a1,0
|
|
504: 00002517 auipc a0,0x2
|
|
508: 24050513 addi a0,a0,576 # 2744 <__modsi3+0x1ac>
|
|
50c: 09d010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" Enum_Comp: %d\n", Next_Ptr_Glob->variant.var_1.Enum_Comp);
|
|
510: 000da883 lw a7,0(s11)
|
|
514: 00002517 auipc a0,0x2
|
|
518: 39850513 addi a0,a0,920 # 28ac <__modsi3+0x314>
|
|
51c: 0088a583 lw a1,8(a7)
|
|
520: 089010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" should be: %d\n", 1);
|
|
524: 4585 li a1,1
|
|
526: 00002517 auipc a0,0x2
|
|
52a: 21e50513 addi a0,a0,542 # 2744 <__modsi3+0x1ac>
|
|
52e: 07b010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" Int_Comp: %d\n", Next_Ptr_Glob->variant.var_1.Int_Comp);
|
|
532: 000daf03 lw t5,0(s11)
|
|
536: 00002517 auipc a0,0x2
|
|
53a: 39250513 addi a0,a0,914 # 28c8 <__modsi3+0x330>
|
|
53e: 00cf2583 lw a1,12(t5)
|
|
542: 067010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" should be: %d\n", 18);
|
|
546: 45c9 li a1,18
|
|
548: 00002517 auipc a0,0x2
|
|
54c: 1fc50513 addi a0,a0,508 # 2744 <__modsi3+0x1ac>
|
|
550: 059010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" Str_Comp: %s\n",
|
|
Next_Ptr_Glob->variant.var_1.Str_Comp);
|
|
554: 000da383 lw t2,0(s11)
|
|
printf (" Str_Comp: %s\n",
|
|
558: 00002517 auipc a0,0x2
|
|
55c: 38c50513 addi a0,a0,908 # 28e4 <__modsi3+0x34c>
|
|
560: 01038593 addi a1,t2,16
|
|
564: 045010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" should be: DHRYSTONE PROGRAM, SOME STRING\n");
|
|
568: 00002517 auipc a0,0x2
|
|
56c: 39850513 addi a0,a0,920 # 2900 <__modsi3+0x368>
|
|
570: 039010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("Int_1_Loc: %d\n", Int_1_Loc);
|
|
574: 45d2 lw a1,20(sp)
|
|
576: 00002517 auipc a0,0x2
|
|
57a: 41650513 addi a0,a0,1046 # 298c <__modsi3+0x3f4>
|
|
57e: 02b010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" should be: %d\n", 5);
|
|
582: 4595 li a1,5
|
|
584: 00002517 auipc a0,0x2
|
|
588: 1c050513 addi a0,a0,448 # 2744 <__modsi3+0x1ac>
|
|
58c: 01d010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("Int_2_Loc: %d\n", Int_2_Loc);
|
|
590: 85a6 mv a1,s1
|
|
592: 00002517 auipc a0,0x2
|
|
596: 41650513 addi a0,a0,1046 # 29a8 <__modsi3+0x410>
|
|
59a: 00f010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" should be: %d\n", 13);
|
|
59e: 45b5 li a1,13
|
|
5a0: 00002517 auipc a0,0x2
|
|
5a4: 1a450513 addi a0,a0,420 # 2744 <__modsi3+0x1ac>
|
|
5a8: 001010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("Int_3_Loc: %d\n", Int_3_Loc);
|
|
5ac: 45e2 lw a1,24(sp)
|
|
5ae: 00002517 auipc a0,0x2
|
|
5b2: 41650513 addi a0,a0,1046 # 29c4 <__modsi3+0x42c>
|
|
5b6: 7f2010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" should be: %d\n", 7);
|
|
5ba: 459d li a1,7
|
|
5bc: 00002517 auipc a0,0x2
|
|
5c0: 18850513 addi a0,a0,392 # 2744 <__modsi3+0x1ac>
|
|
5c4: 7e4010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("Enum_Loc: %d\n", Enum_Loc);
|
|
5c8: 45f2 lw a1,28(sp)
|
|
5ca: 00002517 auipc a0,0x2
|
|
5ce: 41650513 addi a0,a0,1046 # 29e0 <__modsi3+0x448>
|
|
5d2: 7d6010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" should be: %d\n", 1);
|
|
5d6: 4585 li a1,1
|
|
5d8: 00002517 auipc a0,0x2
|
|
5dc: 16c50513 addi a0,a0,364 # 2744 <__modsi3+0x1ac>
|
|
5e0: 7c8010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("Str_1_Loc: %s\n", Str_1_Loc);
|
|
5e4: 85de mv a1,s7
|
|
5e6: 00002517 auipc a0,0x2
|
|
5ea: 41650513 addi a0,a0,1046 # 29fc <__modsi3+0x464>
|
|
5ee: 7ba010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" should be: DHRYSTONE PROGRAM, 1'ST STRING\n");
|
|
5f2: 00002517 auipc a0,0x2
|
|
5f6: 42650513 addi a0,a0,1062 # 2a18 <__modsi3+0x480>
|
|
5fa: 7ae010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("Str_2_Loc: %s\n", Str_2_Loc);
|
|
5fe: 008c addi a1,sp,64
|
|
600: 00002517 auipc a0,0x2
|
|
604: 45050513 addi a0,a0,1104 # 2a50 <__modsi3+0x4b8>
|
|
608: 7a0010ef jal ra,1da8 <__wrap_printf>
|
|
printf (" should be: DHRYSTONE PROGRAM, 2'ND STRING\n");
|
|
60c: 00002517 auipc a0,0x2
|
|
610: 46050513 addi a0,a0,1120 # 2a6c <__modsi3+0x4d4>
|
|
614: 794010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("\n");
|
|
618: 00002517 auipc a0,0x2
|
|
61c: 21850513 addi a0,a0,536 # 2830 <__modsi3+0x298>
|
|
620: 788010ef jal ra,1da8 <__wrap_printf>
|
|
|
|
User_Time = End_Time - Begin_Time;
|
|
624: 81418513 addi a0,gp,-2028 # 10000024 <Begin_Time>
|
|
628: 0009ab83 lw s7,0(s3)
|
|
62c: 4114 lw a3,0(a0)
|
|
|
|
if (User_Time < Too_Small_Time)
|
|
62e: 4605 li a2,1
|
|
User_Time = End_Time - Begin_Time;
|
|
630: 40db8533 sub a0,s7,a3
|
|
634: 80a1a623 sw a0,-2036(gp) # 1000001c <User_Time>
|
|
if (User_Time < Too_Small_Time)
|
|
638: 12a65c63 bge a2,a0,770 <main+0x6e0>
|
|
printf ("\n");
|
|
}
|
|
else
|
|
{
|
|
#ifdef TIME
|
|
Microseconds = ((float) User_Time/(float)HZ) * Mic_secs_Per_Second
|
|
63c: 479000ef jal ra,12b4 <__floatsisf>
|
|
640: 10000597 auipc a1,0x10000
|
|
644: 9c85a583 lw a1,-1592(a1) # 10000008 <__DATA_BEGIN__+0x8>
|
|
648: 125000ef jal ra,f6c <__mulsf3>
|
|
64c: 892a mv s2,a0
|
|
/ (float) Number_Of_Runs;
|
|
64e: 4532 lw a0,12(sp)
|
|
Microseconds = ((float) User_Time/(float)HZ) * Mic_secs_Per_Second
|
|
650: 10000d17 auipc s10,0x10000
|
|
654: 9c8d0d13 addi s10,s10,-1592 # 10000018 <Microseconds>
|
|
Dhrystones_Per_Second = (float) Number_Of_Runs / ((float) User_Time/(float)HZ);
|
|
658: 10000497 auipc s1,0x10000
|
|
65c: 9bc48493 addi s1,s1,-1604 # 10000014 <Dhrystones_Per_Second>
|
|
/ (float) Number_Of_Runs;
|
|
660: 455000ef jal ra,12b4 <__floatsisf>
|
|
664: 8c2a mv s8,a0
|
|
Microseconds = ((float) User_Time/(float)HZ) * Mic_secs_Per_Second
|
|
666: 10000597 auipc a1,0x10000
|
|
66a: 9a65a583 lw a1,-1626(a1) # 1000000c <__DATA_BEGIN__+0xc>
|
|
66e: 854a mv a0,s2
|
|
670: 0fd000ef jal ra,f6c <__mulsf3>
|
|
/ (float) Number_Of_Runs;
|
|
674: 85e2 mv a1,s8
|
|
676: 23c9 jal c38 <__divsf3>
|
|
678: 87aa mv a5,a0
|
|
Microseconds = ((float) User_Time/(float)HZ) * Mic_secs_Per_Second
|
|
67a: 00fd2023 sw a5,0(s10)
|
|
Dhrystones_Per_Second = (float) Number_Of_Runs / ((float) User_Time/(float)HZ);
|
|
67e: 85ca mv a1,s2
|
|
680: 8562 mv a0,s8
|
|
682: 2b5d jal c38 <__divsf3>
|
|
684: 872a mv a4,a0
|
|
Microseconds = (float) User_Time * Mic_secs_Per_Second
|
|
/ ((float) HZ * ((float) Number_Of_Runs));
|
|
Dhrystones_Per_Second = ((float) HZ * (float) Number_Of_Runs)
|
|
/ (float) User_Time;
|
|
#endif
|
|
printf ("Microseconds for one run through Dhrystone: ");
|
|
686: 00002517 auipc a0,0x2
|
|
68a: 47650513 addi a0,a0,1142 # 2afc <__modsi3+0x564>
|
|
Dhrystones_Per_Second = (float) Number_Of_Runs / ((float) User_Time/(float)HZ);
|
|
68e: c098 sw a4,0(s1)
|
|
printf ("Microseconds for one run through Dhrystone: ");
|
|
690: 718010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("%6.1f \n", Microseconds);
|
|
694: 000d2503 lw a0,0(s10)
|
|
698: 531000ef jal ra,13c8 <__extendsfdf2>
|
|
69c: 862a mv a2,a0
|
|
69e: 86ae mv a3,a1
|
|
6a0: 00002517 auipc a0,0x2
|
|
6a4: 48c50513 addi a0,a0,1164 # 2b2c <__modsi3+0x594>
|
|
6a8: 700010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("Dhrystones per Second: ");
|
|
6ac: 00002517 auipc a0,0x2
|
|
6b0: 48850513 addi a0,a0,1160 # 2b34 <__modsi3+0x59c>
|
|
6b4: 6f4010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("%6.1f \n", Dhrystones_Per_Second);
|
|
6b8: 4088 lw a0,0(s1)
|
|
6ba: 50f000ef jal ra,13c8 <__extendsfdf2>
|
|
6be: 862a mv a2,a0
|
|
6c0: 86ae mv a3,a1
|
|
6c2: 00002517 auipc a0,0x2
|
|
6c6: 46a50513 addi a0,a0,1130 # 2b2c <__modsi3+0x594>
|
|
6ca: 6de010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("\n");
|
|
6ce: 00002517 auipc a0,0x2
|
|
6d2: 16250513 addi a0,a0,354 # 2830 <__modsi3+0x298>
|
|
6d6: 6d2010ef jal ra,1da8 <__wrap_printf>
|
|
}
|
|
|
|
}
|
|
6da: 40fa lw ra,156(sp)
|
|
6dc: 446a lw s0,152(sp)
|
|
6de: 44da lw s1,148(sp)
|
|
6e0: 494a lw s2,144(sp)
|
|
6e2: 49ba lw s3,140(sp)
|
|
6e4: 4a2a lw s4,136(sp)
|
|
6e6: 4a9a lw s5,132(sp)
|
|
6e8: 4b0a lw s6,128(sp)
|
|
6ea: 5bf6 lw s7,124(sp)
|
|
6ec: 5c66 lw s8,120(sp)
|
|
6ee: 5cd6 lw s9,116(sp)
|
|
6f0: 5d46 lw s10,112(sp)
|
|
6f2: 5db6 lw s11,108(sp)
|
|
6f4: 4501 li a0,0
|
|
6f6: 610d addi sp,sp,160
|
|
6f8: 8082 ret
|
|
Proc_6 (Ident_1, &Enum_Loc);
|
|
6fa: 086c addi a1,sp,28
|
|
6fc: 4501 li a0,0
|
|
6fe: 2115 jal b22 <Proc_6>
|
|
strcpy (Str_2_Loc, "DHRYSTONE PROGRAM, 3'RD STRING");
|
|
700: 000b2803 lw a6,0(s6)
|
|
704: 004b2f83 lw t6,4(s6)
|
|
708: 008b2e03 lw t3,8(s6)
|
|
70c: 00cb2303 lw t1,12(s6)
|
|
710: 010b2883 lw a7,16(s6)
|
|
714: 014b2f03 lw t5,20(s6)
|
|
718: 018b2383 lw t2,24(s6)
|
|
71c: 01cb5683 lhu a3,28(s6)
|
|
720: 01eb4d83 lbu s11,30(s6)
|
|
for (Ch_Index = 'A'; Ch_Index <= Ch_2_Glob; ++Ch_Index)
|
|
724: 00044603 lbu a2,0(s0)
|
|
728: 001c0793 addi a5,s8,1
|
|
strcpy (Str_2_Loc, "DHRYSTONE PROGRAM, 3'RD STRING");
|
|
72c: c0c2 sw a6,64(sp)
|
|
72e: c2fe sw t6,68(sp)
|
|
730: c4f2 sw t3,72(sp)
|
|
732: c69a sw t1,76(sp)
|
|
734: c8c6 sw a7,80(sp)
|
|
736: cafa sw t5,84(sp)
|
|
738: cc9e sw t2,88(sp)
|
|
73a: 04d11e23 sh a3,92(sp)
|
|
73e: 05b10f23 sb s11,94(sp)
|
|
Int_Glob = Run_Index;
|
|
742: 012a2023 sw s2,0(s4)
|
|
for (Ch_Index = 'A'; Ch_Index <= Ch_2_Glob; ++Ch_Index)
|
|
746: 0ff7fc13 zext.b s8,a5
|
|
74a: 89ca mv s3,s2
|
|
74c: b7867ce3 bgeu a2,s8,2c4 <main+0x234>
|
|
750: be51 j 2e4 <main+0x254>
|
|
752: 49a5 li s3,9
|
|
754: be59 j 2ea <main+0x25a>
|
|
printf ("Program compiled without 'register' attribute\n");
|
|
756: 00002517 auipc a0,0x2
|
|
75a: eee50513 addi a0,a0,-274 # 2644 <__modsi3+0xac>
|
|
75e: 64a010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("\n");
|
|
762: 00002517 auipc a0,0x2
|
|
766: 0ce50513 addi a0,a0,206 # 2830 <__modsi3+0x298>
|
|
76a: 63e010ef jal ra,1da8 <__wrap_printf>
|
|
76e: bc89 j 1c0 <main+0x130>
|
|
printf ("Measured time too small to obtain meaningful results\n");
|
|
770: 00002517 auipc a0,0x2
|
|
774: 33450513 addi a0,a0,820 # 2aa4 <__modsi3+0x50c>
|
|
778: 630010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("Please increase number of runs\n");
|
|
77c: 00002517 auipc a0,0x2
|
|
780: 36050513 addi a0,a0,864 # 2adc <__modsi3+0x544>
|
|
784: 624010ef jal ra,1da8 <__wrap_printf>
|
|
printf ("\n");
|
|
788: 00002517 auipc a0,0x2
|
|
78c: 0a850513 addi a0,a0,168 # 2830 <__modsi3+0x298>
|
|
790: 618010ef jal ra,1da8 <__wrap_printf>
|
|
794: b799 j 6da <main+0x64a>
|
|
796: 82018093 addi ra,gp,-2016 # 10000030 <Bool_Glob>
|
|
79a: 02010b93 addi s7,sp,32
|
|
79e: c406 sw ra,8(sp)
|
|
7a0: 81c18413 addi s0,gp,-2020 # 1000002c <Ch_2_Glob>
|
|
7a4: 82418a13 addi s4,gp,-2012 # 10000034 <Int_Glob>
|
|
7a8: b69d j 30e <main+0x27e>
|
|
...
|
|
|
|
000007ac <trap_entry>:
|
|
|
|
.section .text.entry
|
|
.align 2
|
|
.global trap_entry
|
|
trap_entry:
|
|
addi sp, sp, -32*REGBYTES
|
|
7ac: f8010113 addi sp,sp,-128
|
|
|
|
STORE x1, 1*REGBYTES(sp)
|
|
7b0: 00112223 sw ra,4(sp)
|
|
STORE x2, 2*REGBYTES(sp)
|
|
7b4: 00212423 sw sp,8(sp)
|
|
STORE x3, 3*REGBYTES(sp)
|
|
7b8: 00312623 sw gp,12(sp)
|
|
STORE x4, 4*REGBYTES(sp)
|
|
7bc: 00412823 sw tp,16(sp)
|
|
STORE x5, 5*REGBYTES(sp)
|
|
7c0: 00512a23 sw t0,20(sp)
|
|
STORE x6, 6*REGBYTES(sp)
|
|
7c4: 00612c23 sw t1,24(sp)
|
|
STORE x7, 7*REGBYTES(sp)
|
|
7c8: 00712e23 sw t2,28(sp)
|
|
STORE x8, 8*REGBYTES(sp)
|
|
7cc: 02812023 sw s0,32(sp)
|
|
STORE x9, 9*REGBYTES(sp)
|
|
7d0: 02912223 sw s1,36(sp)
|
|
STORE x10, 10*REGBYTES(sp)
|
|
7d4: 02a12423 sw a0,40(sp)
|
|
STORE x11, 11*REGBYTES(sp)
|
|
7d8: 02b12623 sw a1,44(sp)
|
|
STORE x12, 12*REGBYTES(sp)
|
|
7dc: 02c12823 sw a2,48(sp)
|
|
STORE x13, 13*REGBYTES(sp)
|
|
7e0: 02d12a23 sw a3,52(sp)
|
|
STORE x14, 14*REGBYTES(sp)
|
|
7e4: 02e12c23 sw a4,56(sp)
|
|
STORE x15, 15*REGBYTES(sp)
|
|
7e8: 02f12e23 sw a5,60(sp)
|
|
#ifndef __riscv_abi_rve
|
|
STORE x16, 16*REGBYTES(sp)
|
|
7ec: 05012023 sw a6,64(sp)
|
|
STORE x17, 17*REGBYTES(sp)
|
|
7f0: 05112223 sw a7,68(sp)
|
|
STORE x18, 18*REGBYTES(sp)
|
|
7f4: 05212423 sw s2,72(sp)
|
|
STORE x19, 19*REGBYTES(sp)
|
|
7f8: 05312623 sw s3,76(sp)
|
|
STORE x20, 20*REGBYTES(sp)
|
|
7fc: 05412823 sw s4,80(sp)
|
|
STORE x21, 21*REGBYTES(sp)
|
|
800: 05512a23 sw s5,84(sp)
|
|
STORE x22, 22*REGBYTES(sp)
|
|
804: 05612c23 sw s6,88(sp)
|
|
STORE x23, 23*REGBYTES(sp)
|
|
808: 05712e23 sw s7,92(sp)
|
|
STORE x24, 24*REGBYTES(sp)
|
|
80c: 07812023 sw s8,96(sp)
|
|
STORE x25, 25*REGBYTES(sp)
|
|
810: 07912223 sw s9,100(sp)
|
|
STORE x26, 26*REGBYTES(sp)
|
|
814: 07a12423 sw s10,104(sp)
|
|
STORE x27, 27*REGBYTES(sp)
|
|
818: 07b12623 sw s11,108(sp)
|
|
STORE x28, 28*REGBYTES(sp)
|
|
81c: 07c12823 sw t3,112(sp)
|
|
STORE x29, 29*REGBYTES(sp)
|
|
820: 07d12a23 sw t4,116(sp)
|
|
STORE x30, 30*REGBYTES(sp)
|
|
824: 07e12c23 sw t5,120(sp)
|
|
STORE x31, 31*REGBYTES(sp)
|
|
828: 07f12e23 sw t6,124(sp)
|
|
#endif
|
|
csrr a0, mcause
|
|
82c: 34202573 csrr a0,mcause
|
|
csrr a1, mepc
|
|
830: 341025f3 csrr a1,mepc
|
|
mv a2, sp
|
|
834: 00010613 mv a2,sp
|
|
call handle_trap
|
|
838: 384000ef jal ra,bbc <handle_trap>
|
|
csrw mepc, a0
|
|
83c: 34151073 csrw mepc,a0
|
|
|
|
# Remain in M-mode after mret
|
|
li t0, MSTATUS_MPP
|
|
840: 000022b7 lui t0,0x2
|
|
844: 80028293 addi t0,t0,-2048 # 1800 <vprintfmt+0x44>
|
|
csrs mstatus, t0
|
|
848: 3002a073 csrs mstatus,t0
|
|
|
|
LOAD x1, 1*REGBYTES(sp)
|
|
84c: 00412083 lw ra,4(sp)
|
|
LOAD x2, 2*REGBYTES(sp)
|
|
850: 00812103 lw sp,8(sp)
|
|
LOAD x3, 3*REGBYTES(sp)
|
|
854: 00c12183 lw gp,12(sp)
|
|
LOAD x4, 4*REGBYTES(sp)
|
|
858: 01012203 lw tp,16(sp)
|
|
LOAD x5, 5*REGBYTES(sp)
|
|
85c: 01412283 lw t0,20(sp)
|
|
LOAD x6, 6*REGBYTES(sp)
|
|
860: 01812303 lw t1,24(sp)
|
|
LOAD x7, 7*REGBYTES(sp)
|
|
864: 01c12383 lw t2,28(sp)
|
|
LOAD x8, 8*REGBYTES(sp)
|
|
868: 02012403 lw s0,32(sp)
|
|
LOAD x9, 9*REGBYTES(sp)
|
|
86c: 02412483 lw s1,36(sp)
|
|
LOAD x10, 10*REGBYTES(sp)
|
|
870: 02812503 lw a0,40(sp)
|
|
LOAD x11, 11*REGBYTES(sp)
|
|
874: 02c12583 lw a1,44(sp)
|
|
LOAD x12, 12*REGBYTES(sp)
|
|
878: 03012603 lw a2,48(sp)
|
|
LOAD x13, 13*REGBYTES(sp)
|
|
87c: 03412683 lw a3,52(sp)
|
|
LOAD x14, 14*REGBYTES(sp)
|
|
880: 03812703 lw a4,56(sp)
|
|
LOAD x15, 15*REGBYTES(sp)
|
|
884: 03c12783 lw a5,60(sp)
|
|
#ifndef __riscv_abi_rve
|
|
LOAD x16, 16*REGBYTES(sp)
|
|
888: 04012803 lw a6,64(sp)
|
|
LOAD x17, 17*REGBYTES(sp)
|
|
88c: 04412883 lw a7,68(sp)
|
|
LOAD x18, 18*REGBYTES(sp)
|
|
890: 04812903 lw s2,72(sp)
|
|
LOAD x19, 19*REGBYTES(sp)
|
|
894: 04c12983 lw s3,76(sp)
|
|
LOAD x20, 20*REGBYTES(sp)
|
|
898: 05012a03 lw s4,80(sp)
|
|
LOAD x21, 21*REGBYTES(sp)
|
|
89c: 05412a83 lw s5,84(sp)
|
|
LOAD x22, 22*REGBYTES(sp)
|
|
8a0: 05812b03 lw s6,88(sp)
|
|
LOAD x23, 23*REGBYTES(sp)
|
|
8a4: 05c12b83 lw s7,92(sp)
|
|
LOAD x24, 24*REGBYTES(sp)
|
|
8a8: 06012c03 lw s8,96(sp)
|
|
LOAD x25, 25*REGBYTES(sp)
|
|
8ac: 06412c83 lw s9,100(sp)
|
|
LOAD x26, 26*REGBYTES(sp)
|
|
8b0: 06812d03 lw s10,104(sp)
|
|
LOAD x27, 27*REGBYTES(sp)
|
|
8b4: 06c12d83 lw s11,108(sp)
|
|
LOAD x28, 28*REGBYTES(sp)
|
|
8b8: 07012e03 lw t3,112(sp)
|
|
LOAD x29, 29*REGBYTES(sp)
|
|
8bc: 07412e83 lw t4,116(sp)
|
|
LOAD x30, 30*REGBYTES(sp)
|
|
8c0: 07812f03 lw t5,120(sp)
|
|
LOAD x31, 31*REGBYTES(sp)
|
|
8c4: 07c12f83 lw t6,124(sp)
|
|
#endif
|
|
addi sp, sp, 32*REGBYTES
|
|
8c8: 08010113 addi sp,sp,128
|
|
mret
|
|
8cc: 30200073 mret
|
|
|
|
.weak handle_trap
|
|
handle_trap:
|
|
1:
|
|
j 1b
|
|
8d0: 0000006f j 8d0 <__stack_size+0xd0>
|
|
|
|
000008d4 <time>:
|
|
|
|
/* The functions in this file are only meant to support Dhrystone on an
|
|
* embedded RV32 system and are obviously incorrect in general. */
|
|
|
|
long time(void)
|
|
{
|
|
8d4: 1141 addi sp,sp,-16
|
|
8d6: c606 sw ra,12(sp)
|
|
return get_timer_value();
|
|
8d8: 2c65 jal b90 <get_timer_value>
|
|
}
|
|
8da: 40b2 lw ra,12(sp)
|
|
8dc: 0141 addi sp,sp,16
|
|
8de: 8082 ret
|
|
|
|
000008e0 <__wrap_scanf>:
|
|
|
|
// set the number of dhrystone iterations
|
|
void __wrap_scanf(const char* fmt, int* n)
|
|
{
|
|
*n = 200000;
|
|
8e0: 000317b7 lui a5,0x31
|
|
8e4: d4078293 addi t0,a5,-704 # 30d40 <_data_lma+0x2de9c>
|
|
8e8: 0055a023 sw t0,0(a1)
|
|
}
|
|
8ec: 8082 ret
|
|
|
|
000008ee <__wrap_exit>:
|
|
|
|
extern volatile uint32_t tohost;
|
|
|
|
void __wrap_exit(int n){
|
|
tohost = 0x1;
|
|
8ee: 4785 li a5,1
|
|
8f0: fffff717 auipc a4,0xfffff
|
|
8f4: 70f72023 sw a5,1792(a4) # fffffff0 <tohost+0x0>
|
|
for (;;);
|
|
8f8: a001 j 8f8 <__wrap_exit+0xa>
|
|
|
|
000008fa <Proc_2>:
|
|
One_Fifty Int_Loc;
|
|
Enumeration Enum_Loc;
|
|
|
|
Int_Loc = *Int_Par_Ref + 10;
|
|
do /* executed once */
|
|
if (Ch_1_Glob == 'A')
|
|
8fa: 81d1c703 lbu a4,-2019(gp) # 1000002d <Ch_1_Glob>
|
|
8fe: 04100793 li a5,65
|
|
902: 00f70363 beq a4,a5,908 <Proc_2+0xe>
|
|
Int_Loc -= 1;
|
|
*Int_Par_Ref = Int_Loc - Int_Glob;
|
|
Enum_Loc = Ident_1;
|
|
} /* if */
|
|
while (Enum_Loc != Ident_1); /* true */
|
|
} /* Proc_2 */
|
|
906: 8082 ret
|
|
Int_Loc -= 1;
|
|
908: 00052283 lw t0,0(a0)
|
|
*Int_Par_Ref = Int_Loc - Int_Glob;
|
|
90c: 8241a383 lw t2,-2012(gp) # 10000034 <Int_Glob>
|
|
Int_Loc -= 1;
|
|
910: 00928313 addi t1,t0,9
|
|
*Int_Par_Ref = Int_Loc - Int_Glob;
|
|
914: 407305b3 sub a1,t1,t2
|
|
918: c10c sw a1,0(a0)
|
|
} /* Proc_2 */
|
|
91a: 8082 ret
|
|
|
|
0000091c <Proc_3>:
|
|
/* Ptr_Ref_Par becomes Ptr_Glob */
|
|
|
|
Rec_Pointer *Ptr_Ref_Par;
|
|
|
|
{
|
|
if (Ptr_Glob != Null)
|
|
91c: 82c18793 addi a5,gp,-2004 # 1000003c <Ptr_Glob>
|
|
920: 4390 lw a2,0(a5)
|
|
922: c601 beqz a2,92a <Proc_3+0xe>
|
|
/* then, executed */
|
|
*Ptr_Ref_Par = Ptr_Glob->Ptr_Comp;
|
|
924: 4218 lw a4,0(a2)
|
|
926: c118 sw a4,0(a0)
|
|
Proc_7 (10, Int_Glob, &Ptr_Glob->variant.var_1.Int_Comp);
|
|
928: 4390 lw a2,0(a5)
|
|
92a: 0631 addi a2,a2,12
|
|
92c: 8241a583 lw a1,-2012(gp) # 10000034 <Int_Glob>
|
|
930: 4529 li a0,10
|
|
932: aa35 j a6e <Proc_7>
|
|
|
|
00000934 <Proc_1>:
|
|
{
|
|
934: 1141 addi sp,sp,-16
|
|
936: c04a sw s2,0(sp)
|
|
structassign (*Ptr_Val_Par->Ptr_Comp, *Ptr_Glob);
|
|
938: 82c18913 addi s2,gp,-2004 # 1000003c <Ptr_Glob>
|
|
93c: 00092783 lw a5,0(s2)
|
|
{
|
|
940: c422 sw s0,8(sp)
|
|
REG Rec_Pointer Next_Record = Ptr_Val_Par->Ptr_Comp;
|
|
942: 4100 lw s0,0(a0)
|
|
structassign (*Ptr_Val_Par->Ptr_Comp, *Ptr_Glob);
|
|
944: 4398 lw a4,0(a5)
|
|
{
|
|
946: c606 sw ra,12(sp)
|
|
948: c226 sw s1,4(sp)
|
|
structassign (*Ptr_Val_Par->Ptr_Comp, *Ptr_Glob);
|
|
94a: 0047ae83 lw t4,4(a5)
|
|
94e: 0087ae03 lw t3,8(a5)
|
|
952: 0107a303 lw t1,16(a5)
|
|
956: 0147a883 lw a7,20(a5)
|
|
95a: 0187a803 lw a6,24(a5)
|
|
95e: 538c lw a1,32(a5)
|
|
960: 53d0 lw a2,36(a5)
|
|
962: 5794 lw a3,40(a5)
|
|
964: 02c7a083 lw ra,44(a5)
|
|
{
|
|
968: 84aa mv s1,a0
|
|
structassign (*Ptr_Val_Par->Ptr_Comp, *Ptr_Glob);
|
|
96a: 4fc8 lw a0,28(a5)
|
|
96c: c018 sw a4,0(s0)
|
|
Next_Record->Ptr_Comp = Ptr_Val_Par->Ptr_Comp;
|
|
96e: 0004a283 lw t0,0(s1)
|
|
Ptr_Val_Par->variant.var_1.Int_Comp = 5;
|
|
972: 4395 li t2,5
|
|
structassign (*Ptr_Val_Par->Ptr_Comp, *Ptr_Glob);
|
|
974: cc48 sw a0,28(s0)
|
|
976: 01d42223 sw t4,4(s0)
|
|
97a: 01c42423 sw t3,8(s0)
|
|
97e: 00642823 sw t1,16(s0)
|
|
982: 01142a23 sw a7,20(s0)
|
|
986: 01042c23 sw a6,24(s0)
|
|
98a: d00c sw a1,32(s0)
|
|
98c: d050 sw a2,36(s0)
|
|
98e: d414 sw a3,40(s0)
|
|
990: 02142623 sw ra,44(s0)
|
|
Ptr_Val_Par->variant.var_1.Int_Comp = 5;
|
|
994: 0074a623 sw t2,12(s1)
|
|
= Ptr_Val_Par->variant.var_1.Int_Comp;
|
|
998: 00742623 sw t2,12(s0)
|
|
Next_Record->Ptr_Comp = Ptr_Val_Par->Ptr_Comp;
|
|
99c: 00542023 sw t0,0(s0)
|
|
Proc_3 (&Next_Record->Ptr_Comp);
|
|
9a0: 8522 mv a0,s0
|
|
9a2: 3fad jal 91c <Proc_3>
|
|
if (Next_Record->Discr == Ident_1)
|
|
9a4: 00442f03 lw t5,4(s0)
|
|
9a8: 060f0463 beqz t5,a10 <Proc_1+0xdc>
|
|
structassign (*Ptr_Val_Par, *Ptr_Val_Par->Ptr_Comp);
|
|
9ac: 0004a903 lw s2,0(s1)
|
|
} /* Proc_1 */
|
|
9b0: 40b2 lw ra,12(sp)
|
|
structassign (*Ptr_Val_Par, *Ptr_Val_Par->Ptr_Comp);
|
|
9b2: 00492403 lw s0,4(s2)
|
|
9b6: 00092f83 lw t6,0(s2)
|
|
9ba: 00892e83 lw t4,8(s2)
|
|
9be: 00c92e03 lw t3,12(s2)
|
|
9c2: 01092303 lw t1,16(s2)
|
|
9c6: 01492883 lw a7,20(s2)
|
|
9ca: 01892803 lw a6,24(s2)
|
|
9ce: 01c92583 lw a1,28(s2)
|
|
9d2: 02092603 lw a2,32(s2)
|
|
9d6: 02492683 lw a3,36(s2)
|
|
9da: 02892703 lw a4,40(s2)
|
|
9de: 02c92783 lw a5,44(s2)
|
|
9e2: c0c0 sw s0,4(s1)
|
|
} /* Proc_1 */
|
|
9e4: 4422 lw s0,8(sp)
|
|
structassign (*Ptr_Val_Par, *Ptr_Val_Par->Ptr_Comp);
|
|
9e6: 01f4a023 sw t6,0(s1)
|
|
9ea: 01d4a423 sw t4,8(s1)
|
|
9ee: 01c4a623 sw t3,12(s1)
|
|
9f2: 0064a823 sw t1,16(s1)
|
|
9f6: 0114aa23 sw a7,20(s1)
|
|
9fa: 0104ac23 sw a6,24(s1)
|
|
9fe: cccc sw a1,28(s1)
|
|
a00: d090 sw a2,32(s1)
|
|
a02: d0d4 sw a3,36(s1)
|
|
a04: d498 sw a4,40(s1)
|
|
a06: d4dc sw a5,44(s1)
|
|
} /* Proc_1 */
|
|
a08: 4902 lw s2,0(sp)
|
|
a0a: 4492 lw s1,4(sp)
|
|
a0c: 0141 addi sp,sp,16
|
|
a0e: 8082 ret
|
|
Proc_6 (Ptr_Val_Par->variant.var_1.Enum_Comp,
|
|
a10: 4488 lw a0,8(s1)
|
|
Next_Record->variant.var_1.Int_Comp = 6;
|
|
a12: 4499 li s1,6
|
|
Proc_6 (Ptr_Val_Par->variant.var_1.Enum_Comp,
|
|
a14: 00840593 addi a1,s0,8
|
|
Next_Record->variant.var_1.Int_Comp = 6;
|
|
a18: c444 sw s1,12(s0)
|
|
Proc_6 (Ptr_Val_Par->variant.var_1.Enum_Comp,
|
|
a1a: 2221 jal b22 <Proc_6>
|
|
Next_Record->Ptr_Comp = Ptr_Glob->Ptr_Comp;
|
|
a1c: 00092283 lw t0,0(s2)
|
|
Proc_7 (Next_Record->variant.var_1.Int_Comp, 10,
|
|
a20: 4448 lw a0,12(s0)
|
|
a22: 00c40613 addi a2,s0,12
|
|
Next_Record->Ptr_Comp = Ptr_Glob->Ptr_Comp;
|
|
a26: 0002a383 lw t2,0(t0)
|
|
} /* Proc_1 */
|
|
a2a: 40b2 lw ra,12(sp)
|
|
a2c: 4492 lw s1,4(sp)
|
|
Next_Record->Ptr_Comp = Ptr_Glob->Ptr_Comp;
|
|
a2e: 00742023 sw t2,0(s0)
|
|
} /* Proc_1 */
|
|
a32: 4422 lw s0,8(sp)
|
|
a34: 4902 lw s2,0(sp)
|
|
Proc_7 (Next_Record->variant.var_1.Int_Comp, 10,
|
|
a36: 45a9 li a1,10
|
|
} /* Proc_1 */
|
|
a38: 0141 addi sp,sp,16
|
|
Proc_7 (Next_Record->variant.var_1.Int_Comp, 10,
|
|
a3a: a815 j a6e <Proc_7>
|
|
|
|
00000a3c <Proc_4>:
|
|
/* executed once */
|
|
{
|
|
Boolean Bool_Loc;
|
|
|
|
Bool_Loc = Ch_1_Glob == 'A';
|
|
Bool_Glob = Bool_Loc | Bool_Glob;
|
|
a3c: 82018713 addi a4,gp,-2016 # 10000030 <Bool_Glob>
|
|
a40: 4314 lw a3,0(a4)
|
|
Bool_Loc = Ch_1_Glob == 'A';
|
|
a42: 81d1c783 lbu a5,-2019(gp) # 1000002d <Ch_1_Glob>
|
|
a46: fbf78293 addi t0,a5,-65
|
|
a4a: 0012b313 seqz t1,t0
|
|
Bool_Glob = Bool_Loc | Bool_Glob;
|
|
a4e: 00d363b3 or t2,t1,a3
|
|
Ch_2_Glob = 'B';
|
|
a52: 04200593 li a1,66
|
|
Bool_Glob = Bool_Loc | Bool_Glob;
|
|
a56: 00772023 sw t2,0(a4)
|
|
Ch_2_Glob = 'B';
|
|
a5a: 80b18e23 sb a1,-2020(gp) # 1000002c <Ch_2_Glob>
|
|
} /* Proc_4 */
|
|
a5e: 8082 ret
|
|
|
|
00000a60 <Proc_5>:
|
|
|
|
Proc_5 () /* without parameters */
|
|
/*******/
|
|
/* executed once */
|
|
{
|
|
Ch_1_Glob = 'A';
|
|
a60: 04100793 li a5,65
|
|
a64: 80f18ea3 sb a5,-2019(gp) # 1000002d <Ch_1_Glob>
|
|
Bool_Glob = false;
|
|
a68: 8201a023 sw zero,-2016(gp) # 10000030 <Bool_Glob>
|
|
} /* Proc_5 */
|
|
a6c: 8082 ret
|
|
|
|
00000a6e <Proc_7>:
|
|
One_Fifty Int_2_Par_Val;
|
|
One_Fifty *Int_Par_Ref;
|
|
{
|
|
One_Fifty Int_Loc;
|
|
|
|
Int_Loc = Int_1_Par_Val + 2;
|
|
a6e: 0509 addi a0,a0,2
|
|
*Int_Par_Ref = Int_2_Par_Val + Int_Loc;
|
|
a70: 95aa add a1,a1,a0
|
|
a72: c20c sw a1,0(a2)
|
|
} /* Proc_7 */
|
|
a74: 8082 ret
|
|
|
|
00000a76 <Proc_8>:
|
|
int Int_2_Par_Val;
|
|
{
|
|
REG One_Fifty Int_Index;
|
|
REG One_Fifty Int_Loc;
|
|
|
|
Int_Loc = Int_1_Par_Val + 5;
|
|
a76: 00560713 addi a4,a2,5
|
|
Arr_1_Par_Ref [Int_Loc] = Int_2_Par_Val;
|
|
Arr_1_Par_Ref [Int_Loc+1] = Arr_1_Par_Ref [Int_Loc];
|
|
Arr_1_Par_Ref [Int_Loc+30] = Int_Loc;
|
|
for (Int_Index = Int_Loc; Int_Index <= Int_Loc+1; ++Int_Index)
|
|
Arr_2_Par_Ref [Int_Loc] [Int_Index] = Int_Loc;
|
|
a7a: 0c800813 li a6,200
|
|
a7e: 030702b3 mul t0,a4,a6
|
|
a82: 060a slli a2,a2,0x2
|
|
Arr_1_Par_Ref [Int_Loc] = Int_2_Par_Val;
|
|
a84: 00271793 slli a5,a4,0x2
|
|
a88: 953e add a0,a0,a5
|
|
a8a: c114 sw a3,0(a0)
|
|
Arr_1_Par_Ref [Int_Loc+1] = Arr_1_Par_Ref [Int_Loc];
|
|
a8c: c154 sw a3,4(a0)
|
|
Arr_1_Par_Ref [Int_Loc+30] = Int_Loc;
|
|
a8e: dd38 sw a4,120(a0)
|
|
Arr_2_Par_Ref [Int_Loc] [Int_Loc-1] += 1;
|
|
Arr_2_Par_Ref [Int_Loc+20] [Int_Loc] = Arr_1_Par_Ref [Int_Loc];
|
|
a90: 6f05 lui t5,0x1
|
|
Int_Glob = 5;
|
|
a92: 4815 li a6,5
|
|
a94: 00c28333 add t1,t0,a2
|
|
a98: 006583b3 add t2,a1,t1
|
|
Arr_2_Par_Ref [Int_Loc] [Int_Loc-1] += 1;
|
|
a9c: 0103a683 lw a3,16(t2)
|
|
Arr_2_Par_Ref [Int_Loc] [Int_Index] = Int_Loc;
|
|
aa0: 00e3aa23 sw a4,20(t2)
|
|
aa4: 00e3ac23 sw a4,24(t2)
|
|
Arr_2_Par_Ref [Int_Loc] [Int_Loc-1] += 1;
|
|
aa8: 00168893 addi a7,a3,1
|
|
aac: 0113a823 sw a7,16(t2)
|
|
Arr_2_Par_Ref [Int_Loc+20] [Int_Loc] = Arr_1_Par_Ref [Int_Loc];
|
|
ab0: 00052e03 lw t3,0(a0)
|
|
ab4: 9596 add a1,a1,t0
|
|
ab6: 00c58eb3 add t4,a1,a2
|
|
aba: 01df0fb3 add t6,t5,t4
|
|
abe: fbcfaa23 sw t3,-76(t6)
|
|
Int_Glob = 5;
|
|
ac2: 8301a223 sw a6,-2012(gp) # 10000034 <Int_Glob>
|
|
} /* Proc_8 */
|
|
ac6: 8082 ret
|
|
|
|
00000ac8 <Func_1>:
|
|
/* second call: Ch_1_Par_Val == 'A', Ch_2_Par_Val == 'C' */
|
|
/* third call: Ch_1_Par_Val == 'B', Ch_2_Par_Val == 'C' */
|
|
|
|
Capital_Letter Ch_1_Par_Val;
|
|
Capital_Letter Ch_2_Par_Val;
|
|
{
|
|
ac8: 0ff57513 zext.b a0,a0
|
|
acc: 0ff5f593 zext.b a1,a1
|
|
Capital_Letter Ch_1_Loc;
|
|
Capital_Letter Ch_2_Loc;
|
|
|
|
Ch_1_Loc = Ch_1_Par_Val;
|
|
Ch_2_Loc = Ch_1_Loc;
|
|
if (Ch_2_Loc != Ch_2_Par_Val)
|
|
ad0: 00b50463 beq a0,a1,ad8 <Func_1+0x10>
|
|
/* then, executed */
|
|
return (Ident_1);
|
|
ad4: 4501 li a0,0
|
|
else /* not executed */
|
|
{
|
|
Ch_1_Glob = Ch_1_Loc;
|
|
return (Ident_2);
|
|
}
|
|
} /* Func_1 */
|
|
ad6: 8082 ret
|
|
Ch_1_Glob = Ch_1_Loc;
|
|
ad8: 80a18ea3 sb a0,-2019(gp) # 1000002d <Ch_1_Glob>
|
|
return (Ident_2);
|
|
adc: 4505 li a0,1
|
|
ade: 8082 ret
|
|
|
|
00000ae0 <Func_2>:
|
|
/* Str_1_Par_Ref == "DHRYSTONE PROGRAM, 1'ST STRING" */
|
|
/* Str_2_Par_Ref == "DHRYSTONE PROGRAM, 2'ND STRING" */
|
|
|
|
Str_30 Str_1_Par_Ref;
|
|
Str_30 Str_2_Par_Ref;
|
|
{
|
|
ae0: 1141 addi sp,sp,-16
|
|
ae2: c422 sw s0,8(sp)
|
|
ae4: c226 sw s1,4(sp)
|
|
ae6: c606 sw ra,12(sp)
|
|
ae8: 842a mv s0,a0
|
|
aea: 84ae mv s1,a1
|
|
REG One_Thirty Int_Loc;
|
|
Capital_Letter Ch_Loc;
|
|
|
|
Int_Loc = 2;
|
|
while (Int_Loc <= 2) /* loop body executed once */
|
|
if (Func_1 (Str_1_Par_Ref[Int_Loc],
|
|
aec: 0034c583 lbu a1,3(s1)
|
|
af0: 00244503 lbu a0,2(s0)
|
|
af4: 3fd1 jal ac8 <Func_1>
|
|
af6: f97d bnez a0,aec <Func_2+0xc>
|
|
if (Ch_Loc == 'R')
|
|
/* then, not executed */
|
|
return (true);
|
|
else /* executed */
|
|
{
|
|
if (strcmp (Str_1_Par_Ref, Str_2_Par_Ref) > 0)
|
|
af8: 85a6 mv a1,s1
|
|
afa: 8522 mv a0,s0
|
|
afc: 370010ef jal ra,1e6c <strcmp>
|
|
Int_Loc += 7;
|
|
Int_Glob = Int_Loc;
|
|
return (true);
|
|
}
|
|
else /* executed */
|
|
return (false);
|
|
b00: 4281 li t0,0
|
|
if (strcmp (Str_1_Par_Ref, Str_2_Par_Ref) > 0)
|
|
b02: 00a05663 blez a0,b0e <Func_2+0x2e>
|
|
Int_Glob = Int_Loc;
|
|
b06: 47a9 li a5,10
|
|
b08: 82f1a223 sw a5,-2012(gp) # 10000034 <Int_Glob>
|
|
return (true);
|
|
b0c: 4285 li t0,1
|
|
} /* if Ch_Loc */
|
|
} /* Func_2 */
|
|
b0e: 40b2 lw ra,12(sp)
|
|
b10: 4422 lw s0,8(sp)
|
|
b12: 4492 lw s1,4(sp)
|
|
b14: 8516 mv a0,t0
|
|
b16: 0141 addi sp,sp,16
|
|
b18: 8082 ret
|
|
|
|
00000b1a <Func_3>:
|
|
Enumeration Enum_Par_Val;
|
|
{
|
|
Enumeration Enum_Loc;
|
|
|
|
Enum_Loc = Enum_Par_Val;
|
|
if (Enum_Loc == Ident_3)
|
|
b1a: 1579 addi a0,a0,-2
|
|
/* then, executed */
|
|
return (true);
|
|
else /* not executed */
|
|
return (false);
|
|
} /* Func_3 */
|
|
b1c: 00153513 seqz a0,a0
|
|
b20: 8082 ret
|
|
|
|
00000b22 <Proc_6>:
|
|
{
|
|
b22: 1141 addi sp,sp,-16
|
|
b24: c422 sw s0,8(sp)
|
|
b26: c226 sw s1,4(sp)
|
|
b28: 842a mv s0,a0
|
|
b2a: c606 sw ra,12(sp)
|
|
b2c: 84ae mv s1,a1
|
|
if (! Func_3 (Enum_Val_Par))
|
|
b2e: 37f5 jal b1a <Func_3>
|
|
b30: 87a2 mv a5,s0
|
|
b32: e111 bnez a0,b36 <Proc_6+0x14>
|
|
b34: 478d li a5,3
|
|
b36: c09c sw a5,0(s1)
|
|
switch (Enum_Val_Par)
|
|
b38: 4089 li ra,2
|
|
b3a: 02140c63 beq s0,ra,b72 <Proc_6+0x50>
|
|
b3e: 0280e063 bltu ra,s0,b5e <Proc_6+0x3c>
|
|
b42: c419 beqz s0,b50 <Proc_6+0x2e>
|
|
if (Int_Glob > 100)
|
|
b44: 8241a303 lw t1,-2012(gp) # 10000034 <Int_Glob>
|
|
b48: 06400393 li t2,100
|
|
b4c: 0263db63 bge t2,t1,b82 <Proc_6+0x60>
|
|
*Enum_Ref_Par = Ident_1;
|
|
b50: 0004a023 sw zero,0(s1)
|
|
} /* Proc_6 */
|
|
b54: 40b2 lw ra,12(sp)
|
|
b56: 4422 lw s0,8(sp)
|
|
b58: 4492 lw s1,4(sp)
|
|
b5a: 0141 addi sp,sp,16
|
|
b5c: 8082 ret
|
|
switch (Enum_Val_Par)
|
|
b5e: 4711 li a4,4
|
|
b60: fee41ae3 bne s0,a4,b54 <Proc_6+0x32>
|
|
*Enum_Ref_Par = Ident_3;
|
|
b64: 0014a023 sw ra,0(s1)
|
|
} /* Proc_6 */
|
|
b68: 4422 lw s0,8(sp)
|
|
b6a: 40b2 lw ra,12(sp)
|
|
b6c: 4492 lw s1,4(sp)
|
|
b6e: 0141 addi sp,sp,16
|
|
b70: 8082 ret
|
|
b72: 40b2 lw ra,12(sp)
|
|
b74: 4422 lw s0,8(sp)
|
|
*Enum_Ref_Par = Ident_2;
|
|
b76: 4285 li t0,1
|
|
b78: 0054a023 sw t0,0(s1)
|
|
} /* Proc_6 */
|
|
b7c: 4492 lw s1,4(sp)
|
|
b7e: 0141 addi sp,sp,16
|
|
b80: 8082 ret
|
|
b82: 40b2 lw ra,12(sp)
|
|
b84: 4422 lw s0,8(sp)
|
|
else *Enum_Ref_Par = Ident_4;
|
|
b86: 450d li a0,3
|
|
b88: c088 sw a0,0(s1)
|
|
} /* Proc_6 */
|
|
b8a: 4492 lw s1,4(sp)
|
|
b8c: 0141 addi sp,sp,16
|
|
b8e: 8082 ret
|
|
|
|
00000b90 <get_timer_value>:
|
|
#if __riscv_xlen==32
|
|
|
|
static uint32_t mtime_hi(void)
|
|
{
|
|
unsigned long ret;
|
|
__asm volatile("rdtimeh %0":"=r"(ret));
|
|
b90: c81027f3 rdtimeh a5
|
|
__asm volatile("rdtime %0":"=r"(ret));
|
|
b94: c0102573 rdtime a0
|
|
__asm volatile("rdtimeh %0":"=r"(ret));
|
|
b98: c81025f3 rdtimeh a1
|
|
uint64_t get_timer_value()
|
|
{
|
|
while (1) {
|
|
uint32_t hi = mtime_hi();
|
|
uint32_t lo = mtime_lo();
|
|
if (hi == mtime_hi())
|
|
b9c: fef59ae3 bne a1,a5,b90 <get_timer_value>
|
|
return ((uint64_t)hi << 32) | lo;
|
|
}
|
|
}
|
|
ba0: 00008067 ret
|
|
|
|
00000ba4 <get_timer_freq>:
|
|
#endif
|
|
|
|
unsigned long get_timer_freq()
|
|
{
|
|
return 32768;
|
|
}
|
|
ba4: 00008537 lui a0,0x8
|
|
ba8: 00008067 ret
|
|
|
|
00000bac <get_cpu_freq>:
|
|
|
|
unsigned long get_cpu_freq()
|
|
{
|
|
return 10000000;
|
|
bac: 00989537 lui a0,0x989
|
|
}
|
|
bb0: 68050513 addi a0,a0,1664 # 989680 <_data_lma+0x9867dc>
|
|
bb4: 00008067 ret
|
|
|
|
00000bb8 <init_pll>:
|
|
|
|
void init_pll(void){
|
|
|
|
}
|
|
bb8: 00008067 ret
|
|
|
|
00000bbc <handle_trap>:
|
|
#ifdef USE_M_TIME
|
|
extern void handle_m_time_interrupt();
|
|
#endif
|
|
|
|
uintptr_t handle_trap(uintptr_t mcause, uintptr_t epc)
|
|
{
|
|
bbc: ff010113 addi sp,sp,-16
|
|
bc0: 00812423 sw s0,8(sp)
|
|
} else if ((mcause & MCAUSE_INT) && ((mcause & MCAUSE_CAUSE) == IRQ_M_TIMER)){
|
|
handle_m_time_interrupt();
|
|
#endif
|
|
}
|
|
else {
|
|
write(1, "trap\n", 5);
|
|
bc4: 00500613 li a2,5
|
|
{
|
|
bc8: 00050413 mv s0,a0
|
|
write(1, "trap\n", 5);
|
|
bcc: 00002597 auipc a1,0x2
|
|
bd0: ff858593 addi a1,a1,-8 # 2bc4 <__modsi3+0x62c>
|
|
bd4: 00100513 li a0,1
|
|
{
|
|
bd8: 00112623 sw ra,12(sp)
|
|
write(1, "trap\n", 5);
|
|
bdc: 141000ef jal ra,151c <__wrap_write>
|
|
_exit(1 + mcause);
|
|
be0: 00140513 addi a0,s0,1
|
|
be4: 20d000ef jal ra,15f0 <__wrap__exit>
|
|
|
|
00000be8 <_init>:
|
|
void _init()
|
|
{
|
|
|
|
#ifndef NO_INIT
|
|
init_pll();
|
|
printf("core freq at %d Hz\n", get_cpu_freq());
|
|
be8: 009895b7 lui a1,0x989
|
|
{
|
|
bec: ff010113 addi sp,sp,-16
|
|
printf("core freq at %d Hz\n", get_cpu_freq());
|
|
bf0: 68058593 addi a1,a1,1664 # 989680 <_data_lma+0x9867dc>
|
|
bf4: 00002517 auipc a0,0x2
|
|
bf8: fd850513 addi a0,a0,-40 # 2bcc <__modsi3+0x634>
|
|
{
|
|
bfc: 00112623 sw ra,12(sp)
|
|
printf("core freq at %d Hz\n", get_cpu_freq());
|
|
c00: 1a8010ef jal ra,1da8 <__wrap_printf>
|
|
write_csr(mtvec, &trap_entry);
|
|
c04: 00000797 auipc a5,0x0
|
|
c08: ba878793 addi a5,a5,-1112 # 7ac <trap_entry>
|
|
c0c: 30579073 csrw mtvec,a5
|
|
if (read_csr(misa) & (1 << ('F' - 'A'))) { // if F extension is present
|
|
c10: 301027f3 csrr a5,misa
|
|
c14: 0207f793 andi a5,a5,32
|
|
c18: 00078863 beqz a5,c28 <_init+0x40>
|
|
write_csr(mstatus, MSTATUS_FS); // allow FPU instructions without trapping
|
|
c1c: 000067b7 lui a5,0x6
|
|
c20: 30079073 csrw mstatus,a5
|
|
write_csr(fcsr, 0); // initialize rounding mode, undefined at reset
|
|
c24: 00305073 csrwi fcsr,0
|
|
}
|
|
#endif
|
|
|
|
}
|
|
c28: 00c12083 lw ra,12(sp)
|
|
c2c: 01010113 addi sp,sp,16
|
|
c30: 00008067 ret
|
|
|
|
00000c34 <_fini>:
|
|
|
|
void _fini()
|
|
{
|
|
}
|
|
c34: 00008067 ret
|
|
|
|
00000c38 <__divsf3>:
|
|
#include "soft-fp.h"
|
|
#include "single.h"
|
|
|
|
SFtype
|
|
__divsf3 (SFtype a, SFtype b)
|
|
{
|
|
c38: fe010113 addi sp,sp,-32
|
|
c3c: 00912a23 sw s1,20(sp)
|
|
c40: 01755493 srli s1,a0,0x17
|
|
c44: 01212823 sw s2,16(sp)
|
|
c48: 01312623 sw s3,12(sp)
|
|
c4c: 01412423 sw s4,8(sp)
|
|
FP_DECL_S (B);
|
|
FP_DECL_S (R);
|
|
SFtype r;
|
|
|
|
FP_INIT_ROUNDMODE;
|
|
FP_UNPACK_S (A, a);
|
|
c50: 00951993 slli s3,a0,0x9
|
|
{
|
|
c54: 00112e23 sw ra,28(sp)
|
|
c58: 00812c23 sw s0,24(sp)
|
|
c5c: 01512223 sw s5,4(sp)
|
|
c60: 0ff4f493 zext.b s1,s1
|
|
c64: 00058a13 mv s4,a1
|
|
FP_UNPACK_S (A, a);
|
|
c68: 0099d993 srli s3,s3,0x9
|
|
c6c: 01f55913 srli s2,a0,0x1f
|
|
c70: 08048463 beqz s1,cf8 <__divsf3+0xc0>
|
|
c74: 0ff00793 li a5,255
|
|
c78: 0af48063 beq s1,a5,d18 <__divsf3+0xe0>
|
|
c7c: 00399993 slli s3,s3,0x3
|
|
c80: 040007b7 lui a5,0x4000
|
|
c84: 00f9e9b3 or s3,s3,a5
|
|
c88: f8148493 addi s1,s1,-127
|
|
c8c: 00000a93 li s5,0
|
|
FP_UNPACK_S (B, b);
|
|
c90: 017a5793 srli a5,s4,0x17
|
|
c94: 009a1413 slli s0,s4,0x9
|
|
c98: 0ff7f793 zext.b a5,a5
|
|
c9c: 00945413 srli s0,s0,0x9
|
|
ca0: 01fa5a13 srli s4,s4,0x1f
|
|
ca4: 08078a63 beqz a5,d38 <__divsf3+0x100>
|
|
ca8: 0ff00713 li a4,255
|
|
cac: 0ae78663 beq a5,a4,d58 <__divsf3+0x120>
|
|
cb0: 00341413 slli s0,s0,0x3
|
|
cb4: 04000737 lui a4,0x4000
|
|
cb8: 00e46433 or s0,s0,a4
|
|
cbc: f8178793 addi a5,a5,-127 # 3ffff81 <_data_lma+0x3ffd0dd>
|
|
cc0: 00000713 li a4,0
|
|
FP_DIV_S (R, A, B);
|
|
cc4: 40f484b3 sub s1,s1,a5
|
|
cc8: 002a9793 slli a5,s5,0x2
|
|
ccc: 00e7e7b3 or a5,a5,a4
|
|
cd0: fff78793 addi a5,a5,-1
|
|
cd4: 00e00613 li a2,14
|
|
cd8: 014946b3 xor a3,s2,s4
|
|
cdc: 08f66e63 bltu a2,a5,d78 <__divsf3+0x140>
|
|
ce0: 00003637 lui a2,0x3
|
|
ce4: 00279793 slli a5,a5,0x2
|
|
ce8: be060613 addi a2,a2,-1056 # 2be0 <__modsi3+0x648>
|
|
cec: 00c787b3 add a5,a5,a2
|
|
cf0: 0007a783 lw a5,0(a5)
|
|
cf4: 00078067 jr a5
|
|
FP_UNPACK_S (A, a);
|
|
cf8: 02098a63 beqz s3,d2c <__divsf3+0xf4>
|
|
cfc: 00098513 mv a0,s3
|
|
d00: 7a4000ef jal ra,14a4 <__clzsi2>
|
|
d04: ffb50793 addi a5,a0,-5
|
|
d08: f8a00493 li s1,-118
|
|
d0c: 00f999b3 sll s3,s3,a5
|
|
d10: 40a484b3 sub s1,s1,a0
|
|
d14: f79ff06f j c8c <__divsf3+0x54>
|
|
d18: 0ff00493 li s1,255
|
|
d1c: 00200a93 li s5,2
|
|
d20: f60988e3 beqz s3,c90 <__divsf3+0x58>
|
|
d24: 00300a93 li s5,3
|
|
d28: f69ff06f j c90 <__divsf3+0x58>
|
|
d2c: 00000493 li s1,0
|
|
d30: 00100a93 li s5,1
|
|
d34: f5dff06f j c90 <__divsf3+0x58>
|
|
FP_UNPACK_S (B, b);
|
|
d38: 02040a63 beqz s0,d6c <__divsf3+0x134>
|
|
d3c: 00040513 mv a0,s0
|
|
d40: 764000ef jal ra,14a4 <__clzsi2>
|
|
d44: ffb50793 addi a5,a0,-5
|
|
d48: 00f41433 sll s0,s0,a5
|
|
d4c: f8a00793 li a5,-118
|
|
d50: 40a787b3 sub a5,a5,a0
|
|
d54: f6dff06f j cc0 <__divsf3+0x88>
|
|
d58: 0ff00793 li a5,255
|
|
d5c: 00200713 li a4,2
|
|
d60: f60402e3 beqz s0,cc4 <__divsf3+0x8c>
|
|
d64: 00300713 li a4,3
|
|
d68: f5dff06f j cc4 <__divsf3+0x8c>
|
|
d6c: 00000793 li a5,0
|
|
d70: 00100713 li a4,1
|
|
d74: f51ff06f j cc4 <__divsf3+0x8c>
|
|
FP_DIV_S (R, A, B);
|
|
d78: 00541613 slli a2,s0,0x5
|
|
d7c: 1289f463 bgeu s3,s0,ea4 <__divsf3+0x26c>
|
|
d80: fff48493 addi s1,s1,-1
|
|
d84: 00000793 li a5,0
|
|
d88: 01065593 srli a1,a2,0x10
|
|
d8c: 02b9d833 divu a6,s3,a1
|
|
d90: 00010737 lui a4,0x10
|
|
d94: fff70713 addi a4,a4,-1 # ffff <_data_lma+0xd15b>
|
|
d98: 00e67733 and a4,a2,a4
|
|
d9c: 0107d793 srli a5,a5,0x10
|
|
da0: 02b9f9b3 remu s3,s3,a1
|
|
da4: 00080413 mv s0,a6
|
|
da8: 03070533 mul a0,a4,a6
|
|
dac: 01099993 slli s3,s3,0x10
|
|
db0: 0137e7b3 or a5,a5,s3
|
|
db4: 00a7fe63 bgeu a5,a0,dd0 <__divsf3+0x198>
|
|
db8: 00c787b3 add a5,a5,a2
|
|
dbc: fff80413 addi s0,a6,-1
|
|
dc0: 00c7e863 bltu a5,a2,dd0 <__divsf3+0x198>
|
|
dc4: 00a7f663 bgeu a5,a0,dd0 <__divsf3+0x198>
|
|
dc8: ffe80413 addi s0,a6,-2
|
|
dcc: 00c787b3 add a5,a5,a2
|
|
dd0: 40a787b3 sub a5,a5,a0
|
|
dd4: 02b7d533 divu a0,a5,a1
|
|
dd8: 02b7f7b3 remu a5,a5,a1
|
|
ddc: 00050593 mv a1,a0
|
|
de0: 02a70733 mul a4,a4,a0
|
|
de4: 01079793 slli a5,a5,0x10
|
|
de8: 00e7fe63 bgeu a5,a4,e04 <__divsf3+0x1cc>
|
|
dec: 00c787b3 add a5,a5,a2
|
|
df0: fff50593 addi a1,a0,-1
|
|
df4: 00c7e863 bltu a5,a2,e04 <__divsf3+0x1cc>
|
|
df8: 00e7f663 bgeu a5,a4,e04 <__divsf3+0x1cc>
|
|
dfc: ffe50593 addi a1,a0,-2
|
|
e00: 00c787b3 add a5,a5,a2
|
|
e04: 01041413 slli s0,s0,0x10
|
|
e08: 40e787b3 sub a5,a5,a4
|
|
e0c: 00b46433 or s0,s0,a1
|
|
e10: 00f037b3 snez a5,a5
|
|
e14: 00f46433 or s0,s0,a5
|
|
FP_PACK_S (r, R);
|
|
e18: 07f48713 addi a4,s1,127
|
|
e1c: 0ce05e63 blez a4,ef8 <__divsf3+0x2c0>
|
|
e20: 00747793 andi a5,s0,7
|
|
e24: 00078a63 beqz a5,e38 <__divsf3+0x200>
|
|
e28: 00f47793 andi a5,s0,15
|
|
e2c: 00400613 li a2,4
|
|
e30: 00c78463 beq a5,a2,e38 <__divsf3+0x200>
|
|
e34: 00440413 addi s0,s0,4
|
|
e38: 080007b7 lui a5,0x8000
|
|
e3c: 00f477b3 and a5,s0,a5
|
|
e40: 00078a63 beqz a5,e54 <__divsf3+0x21c>
|
|
e44: f80007b7 lui a5,0xf8000
|
|
e48: fff78793 addi a5,a5,-1 # f7ffffff <tohost+0xf800000f>
|
|
e4c: 00f47433 and s0,s0,a5
|
|
e50: 08048713 addi a4,s1,128
|
|
e54: 0fe00793 li a5,254
|
|
e58: 06e7ce63 blt a5,a4,ed4 <__divsf3+0x29c>
|
|
e5c: 00345793 srli a5,s0,0x3
|
|
FP_HANDLE_EXCEPTIONS;
|
|
|
|
return r;
|
|
}
|
|
e60: 01c12083 lw ra,28(sp)
|
|
e64: 01812403 lw s0,24(sp)
|
|
FP_PACK_S (r, R);
|
|
e68: 01771713 slli a4,a4,0x17
|
|
e6c: 7f800637 lui a2,0x7f800
|
|
e70: 00979793 slli a5,a5,0x9
|
|
e74: 00c77733 and a4,a4,a2
|
|
e78: 0097d793 srli a5,a5,0x9
|
|
e7c: 00f76733 or a4,a4,a5
|
|
e80: 01f69513 slli a0,a3,0x1f
|
|
}
|
|
e84: 01412483 lw s1,20(sp)
|
|
e88: 01012903 lw s2,16(sp)
|
|
e8c: 00c12983 lw s3,12(sp)
|
|
e90: 00812a03 lw s4,8(sp)
|
|
e94: 00412a83 lw s5,4(sp)
|
|
e98: 00a76533 or a0,a4,a0
|
|
e9c: 02010113 addi sp,sp,32
|
|
ea0: 00008067 ret
|
|
FP_DIV_S (R, A, B);
|
|
ea4: 01f99793 slli a5,s3,0x1f
|
|
ea8: 0019d993 srli s3,s3,0x1
|
|
eac: eddff06f j d88 <__divsf3+0x150>
|
|
FP_UNPACK_S (A, a);
|
|
eb0: 00090693 mv a3,s2
|
|
FP_DIV_S (R, A, B);
|
|
eb4: 00098413 mv s0,s3
|
|
eb8: 000a8713 mv a4,s5
|
|
FP_PACK_S (r, R);
|
|
ebc: 00300793 li a5,3
|
|
ec0: 08f70863 beq a4,a5,f50 <__divsf3+0x318>
|
|
ec4: 00100793 li a5,1
|
|
ec8: 08f70c63 beq a4,a5,f60 <__divsf3+0x328>
|
|
ecc: 00200793 li a5,2
|
|
ed0: f4f714e3 bne a4,a5,e18 <__divsf3+0x1e0>
|
|
ed4: 00000793 li a5,0
|
|
ed8: 0ff00713 li a4,255
|
|
edc: f85ff06f j e60 <__divsf3+0x228>
|
|
FP_UNPACK_S (B, b);
|
|
ee0: 000a0693 mv a3,s4
|
|
FP_DIV_S (R, A, B);
|
|
ee4: fd9ff06f j ebc <__divsf3+0x284>
|
|
ee8: 00400437 lui s0,0x400
|
|
eec: 00000693 li a3,0
|
|
ef0: 00300713 li a4,3
|
|
ef4: fc9ff06f j ebc <__divsf3+0x284>
|
|
FP_PACK_S (r, R);
|
|
ef8: 00100793 li a5,1
|
|
efc: 40e787b3 sub a5,a5,a4
|
|
f00: 01b00713 li a4,27
|
|
f04: 04f74e63 blt a4,a5,f60 <__divsf3+0x328>
|
|
f08: 09e48493 addi s1,s1,158
|
|
f0c: 00f457b3 srl a5,s0,a5
|
|
f10: 00941433 sll s0,s0,s1
|
|
f14: 00803433 snez s0,s0
|
|
f18: 0087e7b3 or a5,a5,s0
|
|
f1c: 0077f713 andi a4,a5,7
|
|
f20: 00070a63 beqz a4,f34 <__divsf3+0x2fc>
|
|
f24: 00f7f713 andi a4,a5,15
|
|
f28: 00400613 li a2,4
|
|
f2c: 00c70463 beq a4,a2,f34 <__divsf3+0x2fc>
|
|
f30: 00478793 addi a5,a5,4
|
|
f34: 04000737 lui a4,0x4000
|
|
f38: 00e7f733 and a4,a5,a4
|
|
f3c: 0037d793 srli a5,a5,0x3
|
|
f40: f20700e3 beqz a4,e60 <__divsf3+0x228>
|
|
f44: 00000793 li a5,0
|
|
f48: 00100713 li a4,1
|
|
f4c: f15ff06f j e60 <__divsf3+0x228>
|
|
f50: 004007b7 lui a5,0x400
|
|
f54: 0ff00713 li a4,255
|
|
f58: 00000693 li a3,0
|
|
f5c: f05ff06f j e60 <__divsf3+0x228>
|
|
f60: 00000793 li a5,0
|
|
f64: 00000713 li a4,0
|
|
f68: ef9ff06f j e60 <__divsf3+0x228>
|
|
|
|
00000f6c <__mulsf3>:
|
|
#include "soft-fp.h"
|
|
#include "single.h"
|
|
|
|
SFtype
|
|
__mulsf3 (SFtype a, SFtype b)
|
|
{
|
|
f6c: fe010113 addi sp,sp,-32
|
|
f70: 01212823 sw s2,16(sp)
|
|
f74: 01755913 srli s2,a0,0x17
|
|
f78: 00912a23 sw s1,20(sp)
|
|
f7c: 01312623 sw s3,12(sp)
|
|
f80: 01512223 sw s5,4(sp)
|
|
FP_DECL_S (B);
|
|
FP_DECL_S (R);
|
|
SFtype r;
|
|
|
|
FP_INIT_ROUNDMODE;
|
|
FP_UNPACK_S (A, a);
|
|
f84: 00951493 slli s1,a0,0x9
|
|
{
|
|
f88: 00112e23 sw ra,28(sp)
|
|
f8c: 00812c23 sw s0,24(sp)
|
|
f90: 01412423 sw s4,8(sp)
|
|
f94: 0ff97913 zext.b s2,s2
|
|
f98: 00058a93 mv s5,a1
|
|
FP_UNPACK_S (A, a);
|
|
f9c: 0094d493 srli s1,s1,0x9
|
|
fa0: 01f55993 srli s3,a0,0x1f
|
|
fa4: 18090a63 beqz s2,1138 <__mulsf3+0x1cc>
|
|
fa8: 0ff00793 li a5,255
|
|
fac: 1af90663 beq s2,a5,1158 <__mulsf3+0x1ec>
|
|
fb0: 00349493 slli s1,s1,0x3
|
|
fb4: 040007b7 lui a5,0x4000
|
|
fb8: 00f4e4b3 or s1,s1,a5
|
|
fbc: f8190913 addi s2,s2,-127
|
|
fc0: 00000a13 li s4,0
|
|
FP_UNPACK_S (B, b);
|
|
fc4: 017ad793 srli a5,s5,0x17
|
|
fc8: 009a9413 slli s0,s5,0x9
|
|
fcc: 0ff7f793 zext.b a5,a5
|
|
fd0: 00945413 srli s0,s0,0x9
|
|
fd4: 01fada93 srli s5,s5,0x1f
|
|
fd8: 1a078063 beqz a5,1178 <__mulsf3+0x20c>
|
|
fdc: 0ff00713 li a4,255
|
|
fe0: 1ae78c63 beq a5,a4,1198 <__mulsf3+0x22c>
|
|
fe4: 00341413 slli s0,s0,0x3
|
|
fe8: 04000737 lui a4,0x4000
|
|
fec: 00e46433 or s0,s0,a4
|
|
ff0: f8178793 addi a5,a5,-127 # 3ffff81 <_data_lma+0x3ffd0dd>
|
|
ff4: 00000693 li a3,0
|
|
FP_MUL_S (R, A, B);
|
|
ff8: 00f90933 add s2,s2,a5
|
|
ffc: 002a1793 slli a5,s4,0x2
|
|
1000: 00d7e7b3 or a5,a5,a3
|
|
1004: 00a00713 li a4,10
|
|
1008: 0159c533 xor a0,s3,s5
|
|
100c: 00190613 addi a2,s2,1
|
|
1010: 1ef74c63 blt a4,a5,1208 <__mulsf3+0x29c>
|
|
1014: 00200713 li a4,2
|
|
1018: 1af74063 blt a4,a5,11b8 <__mulsf3+0x24c>
|
|
101c: fff78793 addi a5,a5,-1
|
|
1020: 00100713 li a4,1
|
|
1024: 1af77c63 bgeu a4,a5,11dc <__mulsf3+0x270>
|
|
1028: 000108b7 lui a7,0x10
|
|
102c: fff88813 addi a6,a7,-1 # ffff <_data_lma+0xd15b>
|
|
1030: 0104d713 srli a4,s1,0x10
|
|
1034: 01045793 srli a5,s0,0x10
|
|
1038: 010476b3 and a3,s0,a6
|
|
103c: 0104f4b3 and s1,s1,a6
|
|
1040: 029685b3 mul a1,a3,s1
|
|
1044: 02d706b3 mul a3,a4,a3
|
|
1048: 0105d413 srli s0,a1,0x10
|
|
104c: 02f70733 mul a4,a4,a5
|
|
1050: 029787b3 mul a5,a5,s1
|
|
1054: 00d787b3 add a5,a5,a3
|
|
1058: 00f40433 add s0,s0,a5
|
|
105c: 00d47463 bgeu s0,a3,1064 <__mulsf3+0xf8>
|
|
1060: 01170733 add a4,a4,a7
|
|
1064: 010477b3 and a5,s0,a6
|
|
1068: 01079793 slli a5,a5,0x10
|
|
106c: 0105f5b3 and a1,a1,a6
|
|
1070: 00b787b3 add a5,a5,a1
|
|
1074: 00679693 slli a3,a5,0x6
|
|
1078: 01045413 srli s0,s0,0x10
|
|
107c: 00d036b3 snez a3,a3
|
|
1080: 01a7d793 srli a5,a5,0x1a
|
|
1084: 00e40433 add s0,s0,a4
|
|
1088: 00f6e7b3 or a5,a3,a5
|
|
108c: 00641413 slli s0,s0,0x6
|
|
1090: 00f46433 or s0,s0,a5
|
|
1094: 080007b7 lui a5,0x8000
|
|
1098: 00f477b3 and a5,s0,a5
|
|
109c: 18078e63 beqz a5,1238 <__mulsf3+0x2cc>
|
|
10a0: 00145793 srli a5,s0,0x1
|
|
10a4: 00147413 andi s0,s0,1
|
|
10a8: 0087e433 or s0,a5,s0
|
|
FP_PACK_S (r, R);
|
|
10ac: 07f60713 addi a4,a2,127 # 7f80007f <_sp+0x6f7fc07f>
|
|
10b0: 18e05863 blez a4,1240 <__mulsf3+0x2d4>
|
|
10b4: 00747793 andi a5,s0,7
|
|
10b8: 00078a63 beqz a5,10cc <__mulsf3+0x160>
|
|
10bc: 00f47793 andi a5,s0,15
|
|
10c0: 00400693 li a3,4
|
|
10c4: 00d78463 beq a5,a3,10cc <__mulsf3+0x160>
|
|
10c8: 00440413 addi s0,s0,4 # 400004 <_data_lma+0x3fd160>
|
|
10cc: 080007b7 lui a5,0x8000
|
|
10d0: 00f477b3 and a5,s0,a5
|
|
10d4: 00078a63 beqz a5,10e8 <__mulsf3+0x17c>
|
|
10d8: f80007b7 lui a5,0xf8000
|
|
10dc: fff78793 addi a5,a5,-1 # f7ffffff <tohost+0xf800000f>
|
|
10e0: 00f47433 and s0,s0,a5
|
|
10e4: 08060713 addi a4,a2,128
|
|
10e8: 0fe00793 li a5,254
|
|
10ec: 1ae7ce63 blt a5,a4,12a8 <__mulsf3+0x33c>
|
|
10f0: 00345793 srli a5,s0,0x3
|
|
FP_HANDLE_EXCEPTIONS;
|
|
|
|
return r;
|
|
}
|
|
10f4: 01c12083 lw ra,28(sp)
|
|
10f8: 01812403 lw s0,24(sp)
|
|
FP_PACK_S (r, R);
|
|
10fc: 01771713 slli a4,a4,0x17
|
|
1100: 7f8006b7 lui a3,0x7f800
|
|
1104: 00979793 slli a5,a5,0x9
|
|
1108: 00d77733 and a4,a4,a3
|
|
110c: 0097d793 srli a5,a5,0x9
|
|
1110: 00f76733 or a4,a4,a5
|
|
1114: 01f51513 slli a0,a0,0x1f
|
|
}
|
|
1118: 01412483 lw s1,20(sp)
|
|
111c: 01012903 lw s2,16(sp)
|
|
1120: 00c12983 lw s3,12(sp)
|
|
1124: 00812a03 lw s4,8(sp)
|
|
1128: 00412a83 lw s5,4(sp)
|
|
112c: 00a76533 or a0,a4,a0
|
|
1130: 02010113 addi sp,sp,32
|
|
1134: 00008067 ret
|
|
FP_UNPACK_S (A, a);
|
|
1138: 02048a63 beqz s1,116c <__mulsf3+0x200>
|
|
113c: 00048513 mv a0,s1
|
|
1140: 364000ef jal ra,14a4 <__clzsi2>
|
|
1144: ffb50793 addi a5,a0,-5
|
|
1148: f8a00913 li s2,-118
|
|
114c: 00f494b3 sll s1,s1,a5
|
|
1150: 40a90933 sub s2,s2,a0
|
|
1154: e6dff06f j fc0 <__mulsf3+0x54>
|
|
1158: 0ff00913 li s2,255
|
|
115c: 00200a13 li s4,2
|
|
1160: e60482e3 beqz s1,fc4 <__mulsf3+0x58>
|
|
1164: 00300a13 li s4,3
|
|
1168: e5dff06f j fc4 <__mulsf3+0x58>
|
|
116c: 00000913 li s2,0
|
|
1170: 00100a13 li s4,1
|
|
1174: e51ff06f j fc4 <__mulsf3+0x58>
|
|
FP_UNPACK_S (B, b);
|
|
1178: 02040a63 beqz s0,11ac <__mulsf3+0x240>
|
|
117c: 00040513 mv a0,s0
|
|
1180: 324000ef jal ra,14a4 <__clzsi2>
|
|
1184: ffb50793 addi a5,a0,-5
|
|
1188: 00f41433 sll s0,s0,a5
|
|
118c: f8a00793 li a5,-118
|
|
1190: 40a787b3 sub a5,a5,a0
|
|
1194: e61ff06f j ff4 <__mulsf3+0x88>
|
|
1198: 0ff00793 li a5,255
|
|
119c: 00200693 li a3,2
|
|
11a0: e4040ce3 beqz s0,ff8 <__mulsf3+0x8c>
|
|
11a4: 00300693 li a3,3
|
|
11a8: e51ff06f j ff8 <__mulsf3+0x8c>
|
|
11ac: 00000793 li a5,0
|
|
11b0: 00100693 li a3,1
|
|
11b4: e45ff06f j ff8 <__mulsf3+0x8c>
|
|
11b8: 00100713 li a4,1
|
|
11bc: 00f717b3 sll a5,a4,a5
|
|
11c0: 5307f713 andi a4,a5,1328
|
|
11c4: 04071c63 bnez a4,121c <__mulsf3+0x2b0>
|
|
11c8: 2407f713 andi a4,a5,576
|
|
11cc: 0c071663 bnez a4,1298 <__mulsf3+0x32c>
|
|
11d0: 0887f793 andi a5,a5,136
|
|
11d4: e4078ae3 beqz a5,1028 <__mulsf3+0xbc>
|
|
11d8: 000a8513 mv a0,s5
|
|
FP_PACK_S (r, R);
|
|
11dc: 00200593 li a1,2
|
|
11e0: 00000793 li a5,0
|
|
11e4: 0ff00713 li a4,255
|
|
11e8: f0b686e3 beq a3,a1,10f4 <__mulsf3+0x188>
|
|
11ec: 00300793 li a5,3
|
|
11f0: 0af68463 beq a3,a5,1298 <__mulsf3+0x32c>
|
|
11f4: 00100793 li a5,1
|
|
11f8: eaf69ae3 bne a3,a5,10ac <__mulsf3+0x140>
|
|
11fc: 00000793 li a5,0
|
|
1200: 00000713 li a4,0
|
|
1204: ef1ff06f j 10f4 <__mulsf3+0x188>
|
|
FP_MUL_S (R, A, B);
|
|
1208: 00f00713 li a4,15
|
|
120c: 00e78e63 beq a5,a4,1228 <__mulsf3+0x2bc>
|
|
1210: 00b00713 li a4,11
|
|
1214: fce782e3 beq a5,a4,11d8 <__mulsf3+0x26c>
|
|
FP_UNPACK_S (A, a);
|
|
1218: 00098513 mv a0,s3
|
|
FP_MUL_S (R, A, B);
|
|
121c: 00048413 mv s0,s1
|
|
1220: 000a0693 mv a3,s4
|
|
1224: fb9ff06f j 11dc <__mulsf3+0x270>
|
|
1228: 00400437 lui s0,0x400
|
|
122c: 00000513 li a0,0
|
|
1230: 00300693 li a3,3
|
|
1234: fb9ff06f j 11ec <__mulsf3+0x280>
|
|
1238: 00090613 mv a2,s2
|
|
123c: e71ff06f j 10ac <__mulsf3+0x140>
|
|
FP_PACK_S (r, R);
|
|
1240: 00100793 li a5,1
|
|
1244: 40e787b3 sub a5,a5,a4
|
|
1248: 01b00713 li a4,27
|
|
124c: faf748e3 blt a4,a5,11fc <__mulsf3+0x290>
|
|
1250: 09e60613 addi a2,a2,158
|
|
1254: 00f457b3 srl a5,s0,a5
|
|
1258: 00c41433 sll s0,s0,a2
|
|
125c: 00803433 snez s0,s0
|
|
1260: 0087e7b3 or a5,a5,s0
|
|
1264: 0077f713 andi a4,a5,7
|
|
1268: 00070a63 beqz a4,127c <__mulsf3+0x310>
|
|
126c: 00f7f713 andi a4,a5,15
|
|
1270: 00400693 li a3,4
|
|
1274: 00d70463 beq a4,a3,127c <__mulsf3+0x310>
|
|
1278: 00478793 addi a5,a5,4
|
|
127c: 04000737 lui a4,0x4000
|
|
1280: 00e7f733 and a4,a5,a4
|
|
1284: 0037d793 srli a5,a5,0x3
|
|
1288: e60706e3 beqz a4,10f4 <__mulsf3+0x188>
|
|
128c: 00000793 li a5,0
|
|
1290: 00100713 li a4,1
|
|
1294: e61ff06f j 10f4 <__mulsf3+0x188>
|
|
1298: 004007b7 lui a5,0x400
|
|
129c: 0ff00713 li a4,255
|
|
12a0: 00000513 li a0,0
|
|
12a4: e51ff06f j 10f4 <__mulsf3+0x188>
|
|
12a8: 00000793 li a5,0
|
|
12ac: 0ff00713 li a4,255
|
|
12b0: e45ff06f j 10f4 <__mulsf3+0x188>
|
|
|
|
000012b4 <__floatsisf>:
|
|
FP_DECL_EX;
|
|
FP_DECL_S (A);
|
|
SFtype a;
|
|
|
|
FP_INIT_ROUNDMODE;
|
|
FP_FROM_INT_S (A, i, SI_BITS, USItype);
|
|
12b4: 0e050863 beqz a0,13a4 <__floatsisf+0xf0>
|
|
12b8: 41f55793 srai a5,a0,0x1f
|
|
{
|
|
12bc: ff010113 addi sp,sp,-16
|
|
12c0: 00812423 sw s0,8(sp)
|
|
FP_FROM_INT_S (A, i, SI_BITS, USItype);
|
|
12c4: 00a7c433 xor s0,a5,a0
|
|
12c8: 40f40433 sub s0,s0,a5
|
|
{
|
|
12cc: 00912223 sw s1,4(sp)
|
|
FP_FROM_INT_S (A, i, SI_BITS, USItype);
|
|
12d0: 01f55493 srli s1,a0,0x1f
|
|
12d4: 00040513 mv a0,s0
|
|
{
|
|
12d8: 00112623 sw ra,12(sp)
|
|
FP_FROM_INT_S (A, i, SI_BITS, USItype);
|
|
12dc: 1c8000ef jal ra,14a4 <__clzsi2>
|
|
12e0: 09e00713 li a4,158
|
|
12e4: 40a70733 sub a4,a4,a0
|
|
12e8: 09600793 li a5,150
|
|
12ec: 02e7cc63 blt a5,a4,1324 <__floatsisf+0x70>
|
|
12f0: ff850513 addi a0,a0,-8
|
|
12f4: 00a417b3 sll a5,s0,a0
|
|
FP_PACK_RAW_S (a, A);
|
|
FP_HANDLE_EXCEPTIONS;
|
|
|
|
return a;
|
|
}
|
|
12f8: 00c12083 lw ra,12(sp)
|
|
12fc: 00812403 lw s0,8(sp)
|
|
FP_PACK_RAW_S (a, A);
|
|
1300: 00979793 slli a5,a5,0x9
|
|
1304: 01771713 slli a4,a4,0x17
|
|
1308: 0097d793 srli a5,a5,0x9
|
|
130c: 01f49513 slli a0,s1,0x1f
|
|
1310: 00f76733 or a4,a4,a5
|
|
}
|
|
1314: 00412483 lw s1,4(sp)
|
|
1318: 00a76533 or a0,a4,a0
|
|
131c: 01010113 addi sp,sp,16
|
|
1320: 00008067 ret
|
|
FP_FROM_INT_S (A, i, SI_BITS, USItype);
|
|
1324: 09900793 li a5,153
|
|
1328: 02e7d063 bge a5,a4,1348 <__floatsisf+0x94>
|
|
132c: 00500793 li a5,5
|
|
1330: 40a787b3 sub a5,a5,a0
|
|
1334: 01b50693 addi a3,a0,27
|
|
1338: 00f457b3 srl a5,s0,a5
|
|
133c: 00d41433 sll s0,s0,a3
|
|
1340: 00803433 snez s0,s0
|
|
1344: 0087e433 or s0,a5,s0
|
|
1348: 00500793 li a5,5
|
|
134c: 00a7d663 bge a5,a0,1358 <__floatsisf+0xa4>
|
|
1350: ffb50793 addi a5,a0,-5
|
|
1354: 00f41433 sll s0,s0,a5
|
|
1358: fc0007b7 lui a5,0xfc000
|
|
135c: fff78793 addi a5,a5,-1 # fbffffff <tohost+0xfc00000f>
|
|
1360: 00747693 andi a3,s0,7
|
|
1364: 00f477b3 and a5,s0,a5
|
|
1368: 00068a63 beqz a3,137c <__floatsisf+0xc8>
|
|
136c: 00f47413 andi s0,s0,15
|
|
1370: 00400693 li a3,4
|
|
1374: 00d40463 beq s0,a3,137c <__floatsisf+0xc8>
|
|
1378: 00478793 addi a5,a5,4
|
|
137c: 040006b7 lui a3,0x4000
|
|
1380: 00d7f6b3 and a3,a5,a3
|
|
1384: 00068c63 beqz a3,139c <__floatsisf+0xe8>
|
|
1388: fc000737 lui a4,0xfc000
|
|
138c: fff70713 addi a4,a4,-1 # fbffffff <tohost+0xfc00000f>
|
|
1390: 00e7f7b3 and a5,a5,a4
|
|
1394: 09f00713 li a4,159
|
|
1398: 40a70733 sub a4,a4,a0
|
|
139c: 0037d793 srli a5,a5,0x3
|
|
13a0: f59ff06f j 12f8 <__floatsisf+0x44>
|
|
13a4: 00000793 li a5,0
|
|
13a8: 00000713 li a4,0
|
|
FP_PACK_RAW_S (a, A);
|
|
13ac: 00979793 slli a5,a5,0x9
|
|
13b0: 0097d793 srli a5,a5,0x9
|
|
13b4: 01771713 slli a4,a4,0x17
|
|
13b8: 00f76733 or a4,a4,a5
|
|
13bc: 01f51513 slli a0,a0,0x1f
|
|
}
|
|
13c0: 00a76533 or a0,a4,a0
|
|
13c4: 00008067 ret
|
|
|
|
000013c8 <__extendsfdf2>:
|
|
FP_DECL_S (A);
|
|
FP_DECL_D (R);
|
|
DFtype r;
|
|
|
|
FP_INIT_EXCEPTIONS;
|
|
FP_UNPACK_RAW_S (A, a);
|
|
13c8: 01755713 srli a4,a0,0x17
|
|
13cc: 0ff77713 zext.b a4,a4
|
|
{
|
|
13d0: ff010113 addi sp,sp,-16
|
|
#if _FP_W_TYPE_SIZE < _FP_FRACBITS_D
|
|
FP_EXTEND (D, S, 2, 1, R, A);
|
|
13d4: 00170793 addi a5,a4,1
|
|
{
|
|
13d8: 00812423 sw s0,8(sp)
|
|
13dc: 00912223 sw s1,4(sp)
|
|
FP_UNPACK_RAW_S (A, a);
|
|
13e0: 00951413 slli s0,a0,0x9
|
|
{
|
|
13e4: 00112623 sw ra,12(sp)
|
|
FP_EXTEND (D, S, 2, 1, R, A);
|
|
13e8: 0fe7f793 andi a5,a5,254
|
|
FP_UNPACK_RAW_S (A, a);
|
|
13ec: 00945413 srli s0,s0,0x9
|
|
13f0: 01f55493 srli s1,a0,0x1f
|
|
FP_EXTEND (D, S, 2, 1, R, A);
|
|
13f4: 04078263 beqz a5,1438 <__extendsfdf2+0x70>
|
|
13f8: 00345793 srli a5,s0,0x3
|
|
13fc: 38070713 addi a4,a4,896
|
|
1400: 01d41413 slli s0,s0,0x1d
|
|
#else
|
|
FP_EXTEND (D, S, 1, 1, R, A);
|
|
#endif
|
|
FP_PACK_RAW_D (r, R);
|
|
1404: 00c79793 slli a5,a5,0xc
|
|
1408: 00c7d793 srli a5,a5,0xc
|
|
140c: 01471713 slli a4,a4,0x14
|
|
1410: 01f49513 slli a0,s1,0x1f
|
|
1414: 00f76733 or a4,a4,a5
|
|
FP_HANDLE_EXCEPTIONS;
|
|
|
|
return r;
|
|
}
|
|
1418: 00c12083 lw ra,12(sp)
|
|
FP_PACK_RAW_D (r, R);
|
|
141c: 00a767b3 or a5,a4,a0
|
|
}
|
|
1420: 00040513 mv a0,s0
|
|
1424: 00812403 lw s0,8(sp)
|
|
1428: 00412483 lw s1,4(sp)
|
|
142c: 00078593 mv a1,a5
|
|
1430: 01010113 addi sp,sp,16
|
|
1434: 00008067 ret
|
|
FP_EXTEND (D, S, 2, 1, R, A);
|
|
1438: 04071663 bnez a4,1484 <__extendsfdf2+0xbc>
|
|
143c: 00000793 li a5,0
|
|
1440: fc0402e3 beqz s0,1404 <__extendsfdf2+0x3c>
|
|
1444: 00040513 mv a0,s0
|
|
1448: 05c000ef jal ra,14a4 <__clzsi2>
|
|
144c: 00a00793 li a5,10
|
|
1450: 02a7c263 blt a5,a0,1474 <__extendsfdf2+0xac>
|
|
1454: 00b00793 li a5,11
|
|
1458: 40a787b3 sub a5,a5,a0
|
|
145c: 01550713 addi a4,a0,21
|
|
1460: 00f457b3 srl a5,s0,a5
|
|
1464: 00e41433 sll s0,s0,a4
|
|
1468: 38900713 li a4,905
|
|
146c: 40a70733 sub a4,a4,a0
|
|
1470: f95ff06f j 1404 <__extendsfdf2+0x3c>
|
|
1474: ff550793 addi a5,a0,-11
|
|
1478: 00f417b3 sll a5,s0,a5
|
|
147c: 00000413 li s0,0
|
|
1480: fe9ff06f j 1468 <__extendsfdf2+0xa0>
|
|
1484: 00000793 li a5,0
|
|
1488: 00040a63 beqz s0,149c <__extendsfdf2+0xd4>
|
|
148c: 00345793 srli a5,s0,0x3
|
|
1490: 00080737 lui a4,0x80
|
|
1494: 01d41413 slli s0,s0,0x1d
|
|
1498: 00e7e7b3 or a5,a5,a4
|
|
149c: 7ff00713 li a4,2047
|
|
14a0: f65ff06f j 1404 <__extendsfdf2+0x3c>
|
|
|
|
000014a4 <__clzsi2>:
|
|
int
|
|
__clzSI2 (UWtype x)
|
|
{
|
|
Wtype ret;
|
|
|
|
count_leading_zeros (ret, x);
|
|
14a4: 000107b7 lui a5,0x10
|
|
14a8: 02f57a63 bgeu a0,a5,14dc <__clzsi2+0x38>
|
|
14ac: 10053793 sltiu a5,a0,256
|
|
14b0: 0017c793 xori a5,a5,1
|
|
14b4: 00379793 slli a5,a5,0x3
|
|
14b8: 00003737 lui a4,0x3
|
|
14bc: 02000693 li a3,32
|
|
14c0: 40f686b3 sub a3,a3,a5
|
|
14c4: 00f55533 srl a0,a0,a5
|
|
14c8: c1c70793 addi a5,a4,-996 # 2c1c <__clz_tab>
|
|
14cc: 00a787b3 add a5,a5,a0
|
|
14d0: 0007c503 lbu a0,0(a5) # 10000 <_data_lma+0xd15c>
|
|
|
|
return ret;
|
|
}
|
|
14d4: 40a68533 sub a0,a3,a0
|
|
14d8: 00008067 ret
|
|
count_leading_zeros (ret, x);
|
|
14dc: 01000737 lui a4,0x1000
|
|
14e0: 01000793 li a5,16
|
|
14e4: fce56ae3 bltu a0,a4,14b8 <__clzsi2+0x14>
|
|
14e8: 01800793 li a5,24
|
|
14ec: fcdff06f j 14b8 <__clzsi2+0x14>
|
|
|
|
000014f0 <__wrap_malloc>:
|
|
|
|
/* These functions are intended for embedded RV32 systems and are
|
|
obviously incorrect in general. */
|
|
|
|
void* __wrap_malloc(unsigned long sz)
|
|
{
|
|
14f0: ff010113 addi sp,sp,-16
|
|
14f4: 00112623 sw ra,12(sp)
|
|
extern void* sbrk(long);
|
|
void* res = sbrk(sz);
|
|
14f8: 0b8000ef jal ra,15b0 <__wrap_sbrk>
|
|
if ((long)res == -1)
|
|
return 0;
|
|
return res;
|
|
}
|
|
14fc: 00c12083 lw ra,12(sp)
|
|
return 0;
|
|
1500: 00150793 addi a5,a0,1
|
|
1504: 00f037b3 snez a5,a5
|
|
1508: 40f007b3 neg a5,a5
|
|
}
|
|
150c: 00f57533 and a0,a0,a5
|
|
1510: 01010113 addi sp,sp,16
|
|
1514: 00008067 ret
|
|
|
|
00001518 <__wrap_free>:
|
|
|
|
void __wrap_free(void* ptr)
|
|
{
|
|
}
|
|
1518: 00008067 ret
|
|
|
|
0000151c <__wrap_write>:
|
|
|
|
#include "platform.h"
|
|
#include "stub.h"
|
|
|
|
ssize_t __wrap_write(int fd, const void* ptr, size_t len)
|
|
{
|
|
151c: ff010113 addi sp,sp,-16
|
|
1520: 00812423 sw s0,8(sp)
|
|
1524: 00912223 sw s1,4(sp)
|
|
1528: 00112623 sw ra,12(sp)
|
|
152c: 00058413 mv s0,a1
|
|
1530: 00060493 mv s1,a2
|
|
const uint8_t * current = (const char *)ptr;
|
|
|
|
if (isatty(fd)) {
|
|
1534: 070000ef jal ra,15a4 <__wrap_isatty>
|
|
1538: 06050263 beqz a0,159c <__wrap_write+0x80>
|
|
for (size_t jj = 0; jj < len; jj++) {
|
|
153c: 02048c63 beqz s1,1574 <__wrap_write+0x58>
|
|
1540: 00040593 mv a1,s0
|
|
1544: 00940833 add a6,s0,s1
|
|
while (UART0_REG(UART_REG_TXFIFO) & 0x80000000) ;
|
|
1548: ffff0737 lui a4,0xffff0
|
|
UART0_REG(UART_REG_TXFIFO) = current[jj];
|
|
|
|
if (current[jj] == '\n') {
|
|
154c: 00a00693 li a3,10
|
|
while (UART0_REG(UART_REG_TXFIFO) & 0x80000000) ;
|
|
UART0_REG(UART_REG_TXFIFO) = '\r';
|
|
1550: 00d00613 li a2,13
|
|
while (UART0_REG(UART_REG_TXFIFO) & 0x80000000) ;
|
|
1554: 00072783 lw a5,0(a4) # ffff0000 <tohost+0xffff0010>
|
|
1558: fe07cee3 bltz a5,1554 <__wrap_write+0x38>
|
|
UART0_REG(UART_REG_TXFIFO) = current[jj];
|
|
155c: 0005c783 lbu a5,0(a1)
|
|
1560: 00f72023 sw a5,0(a4)
|
|
if (current[jj] == '\n') {
|
|
1564: 0005c783 lbu a5,0(a1)
|
|
1568: 02d78263 beq a5,a3,158c <__wrap_write+0x70>
|
|
for (size_t jj = 0; jj < len; jj++) {
|
|
156c: 00158593 addi a1,a1,1
|
|
1570: ff0592e3 bne a1,a6,1554 <__wrap_write+0x38>
|
|
}
|
|
}
|
|
return len;
|
|
1574: 00048513 mv a0,s1
|
|
}
|
|
|
|
return _stub(EBADF);
|
|
}
|
|
1578: 00c12083 lw ra,12(sp)
|
|
157c: 00812403 lw s0,8(sp)
|
|
1580: 00412483 lw s1,4(sp)
|
|
1584: 01010113 addi sp,sp,16
|
|
1588: 00008067 ret
|
|
while (UART0_REG(UART_REG_TXFIFO) & 0x80000000) ;
|
|
158c: 00072783 lw a5,0(a4)
|
|
1590: fe07cee3 bltz a5,158c <__wrap_write+0x70>
|
|
UART0_REG(UART_REG_TXFIFO) = '\r';
|
|
1594: 00c72023 sw a2,0(a4)
|
|
1598: fd5ff06f j 156c <__wrap_write+0x50>
|
|
return _stub(EBADF);
|
|
159c: fff00513 li a0,-1
|
|
15a0: fd9ff06f j 1578 <__wrap_write+0x5c>
|
|
|
|
000015a4 <__wrap_isatty>:
|
|
|
|
#include <unistd.h>
|
|
|
|
int __wrap_isatty(int fd)
|
|
{
|
|
if (fd == STDOUT_FILENO || fd == STDERR_FILENO)
|
|
15a4: fff50513 addi a0,a0,-1
|
|
return 1;
|
|
|
|
return 0;
|
|
}
|
|
15a8: 00253513 sltiu a0,a0,2
|
|
15ac: 00008067 ret
|
|
|
|
000015b0 <__wrap_sbrk>:
|
|
{
|
|
extern char _end[];
|
|
extern char _heap_end[];
|
|
static char *curbrk = _end;
|
|
|
|
if ((curbrk + incr < _end) || (curbrk + incr > _heap_end))
|
|
15b0: 0ffff717 auipc a4,0xffff
|
|
15b4: a6070713 addi a4,a4,-1440 # 10000010 <curbrk.0>
|
|
15b8: 00072783 lw a5,0(a4)
|
|
15bc: 10001697 auipc a3,0x10001
|
|
15c0: 25c68693 addi a3,a3,604 # 10002818 <__BSS_END__>
|
|
15c4: 00a78533 add a0,a5,a0
|
|
15c8: 00d56e63 bltu a0,a3,15e4 <__wrap_sbrk+0x34>
|
|
15cc: 10002697 auipc a3,0x10002
|
|
15d0: 23468693 addi a3,a3,564 # 10003800 <_heap_end>
|
|
15d4: 00a6e863 bltu a3,a0,15e4 <__wrap_sbrk+0x34>
|
|
return NULL - 1;
|
|
|
|
curbrk += incr;
|
|
15d8: 00a72023 sw a0,0(a4)
|
|
return curbrk - incr;
|
|
}
|
|
15dc: 00078513 mv a0,a5
|
|
15e0: 00008067 ret
|
|
return NULL - 1;
|
|
15e4: fff00793 li a5,-1
|
|
}
|
|
15e8: 00078513 mv a0,a5
|
|
15ec: 00008067 ret
|
|
|
|
000015f0 <__wrap__exit>:
|
|
extern volatile uint32_t fromhost;
|
|
|
|
void __wrap__exit(int code)
|
|
{
|
|
//volatile uint32_t* leds = (uint32_t*) (GPIO_BASE_ADDR + GPIO_OUT_OFFSET);
|
|
const char message[] = "\nProgam has exited with code:";
|
|
15f0: 00001797 auipc a5,0x1
|
|
15f4: 73078793 addi a5,a5,1840 # 2d20 <__clz_tab+0x104>
|
|
15f8: 0007ae83 lw t4,0(a5)
|
|
15fc: 0047ae03 lw t3,4(a5)
|
|
1600: 0087a303 lw t1,8(a5)
|
|
1604: 00c7a883 lw a7,12(a5)
|
|
1608: 0107a803 lw a6,16(a5)
|
|
160c: 0147a683 lw a3,20(a5)
|
|
1610: 0187a703 lw a4,24(a5)
|
|
1614: 01c7d783 lhu a5,28(a5)
|
|
{
|
|
1618: fd010113 addi sp,sp,-48
|
|
//*leds = (~(code));
|
|
|
|
write(STDERR_FILENO, message, sizeof(message) - 1);
|
|
161c: 01d00613 li a2,29
|
|
{
|
|
1620: 02812423 sw s0,40(sp)
|
|
write(STDERR_FILENO, message, sizeof(message) - 1);
|
|
1624: 00010593 mv a1,sp
|
|
{
|
|
1628: 00050413 mv s0,a0
|
|
write(STDERR_FILENO, message, sizeof(message) - 1);
|
|
162c: 00200513 li a0,2
|
|
const char message[] = "\nProgam has exited with code:";
|
|
1630: 00f11e23 sh a5,28(sp)
|
|
{
|
|
1634: 02112623 sw ra,44(sp)
|
|
const char message[] = "\nProgam has exited with code:";
|
|
1638: 01d12023 sw t4,0(sp)
|
|
163c: 01c12223 sw t3,4(sp)
|
|
1640: 00612423 sw t1,8(sp)
|
|
1644: 01112623 sw a7,12(sp)
|
|
1648: 01012823 sw a6,16(sp)
|
|
164c: 00d12a23 sw a3,20(sp)
|
|
1650: 00e12c23 sw a4,24(sp)
|
|
write(STDERR_FILENO, message, sizeof(message) - 1);
|
|
1654: ec9ff0ef jal ra,151c <__wrap_write>
|
|
write_hex(STDERR_FILENO, code);
|
|
1658: 00040593 mv a1,s0
|
|
165c: 00200513 li a0,2
|
|
1660: 03c000ef jal ra,169c <write_hex>
|
|
write(STDERR_FILENO, "\n", 1);
|
|
1664: 00100613 li a2,1
|
|
1668: 00001597 auipc a1,0x1
|
|
166c: 1c858593 addi a1,a1,456 # 2830 <__modsi3+0x298>
|
|
1670: 00200513 li a0,2
|
|
1674: ea9ff0ef jal ra,151c <__wrap_write>
|
|
tohost = code+1;
|
|
1678: 00140413 addi s0,s0,1 # 400001 <_data_lma+0x3fd15d>
|
|
write(STDERR_FILENO, "\x04", 1);
|
|
167c: 00100613 li a2,1
|
|
1680: 00001597 auipc a1,0x1
|
|
1684: 69c58593 addi a1,a1,1692 # 2d1c <__clz_tab+0x100>
|
|
1688: 00200513 li a0,2
|
|
tohost = code+1;
|
|
168c: fffff797 auipc a5,0xfffff
|
|
1690: 9687a223 sw s0,-1692(a5) # fffffff0 <tohost+0x0>
|
|
write(STDERR_FILENO, "\x04", 1);
|
|
1694: e89ff0ef jal ra,151c <__wrap_write>
|
|
for (;;);
|
|
1698: 0000006f j 1698 <__wrap__exit+0xa8>
|
|
|
|
0000169c <write_hex>:
|
|
#include <stdint.h>
|
|
#include <unistd.h>
|
|
#include "platform.h"
|
|
|
|
void write_hex(int fd, uint32_t hex)
|
|
{
|
|
169c: fd010113 addi sp,sp,-48
|
|
16a0: 02912223 sw s1,36(sp)
|
|
uint8_t ii;
|
|
uint8_t jj;
|
|
char towrite;
|
|
write(fd , "0x", 2);
|
|
16a4: 00200613 li a2,2
|
|
{
|
|
16a8: 00058493 mv s1,a1
|
|
write(fd , "0x", 2);
|
|
16ac: 00001597 auipc a1,0x1
|
|
16b0: 69458593 addi a1,a1,1684 # 2d40 <__clz_tab+0x124>
|
|
{
|
|
16b4: 02812423 sw s0,40(sp)
|
|
16b8: 03212023 sw s2,32(sp)
|
|
16bc: 01312e23 sw s3,28(sp)
|
|
16c0: 01412c23 sw s4,24(sp)
|
|
16c4: 01512a23 sw s5,20(sp)
|
|
16c8: 02112623 sw ra,44(sp)
|
|
16cc: 00050913 mv s2,a0
|
|
write(fd , "0x", 2);
|
|
16d0: 01c00413 li s0,28
|
|
16d4: e49ff0ef jal ra,151c <__wrap_write>
|
|
for (ii = 8 ; ii > 0; ii--) {
|
|
jj = ii - 1;
|
|
uint8_t digit = ((hex & (0xF << (jj*4))) >> (jj*4));
|
|
16d8: 00f00a93 li s5,15
|
|
towrite = digit < 0xA ? ('0' + digit) : ('A' + (digit - 0xA));
|
|
16dc: 00900a13 li s4,9
|
|
for (ii = 8 ; ii > 0; ii--) {
|
|
16e0: ffc00993 li s3,-4
|
|
16e4: 0240006f j 1708 <write_hex+0x6c>
|
|
towrite = digit < 0xA ? ('0' + digit) : ('A' + (digit - 0xA));
|
|
16e8: 0ff6f793 zext.b a5,a3
|
|
for (ii = 8 ; ii > 0; ii--) {
|
|
16ec: ffc40413 addi s0,s0,-4
|
|
write(fd, &towrite, 1);
|
|
16f0: 00100613 li a2,1
|
|
16f4: 00f10593 addi a1,sp,15
|
|
16f8: 00090513 mv a0,s2
|
|
towrite = digit < 0xA ? ('0' + digit) : ('A' + (digit - 0xA));
|
|
16fc: 00f107a3 sb a5,15(sp)
|
|
write(fd, &towrite, 1);
|
|
1700: e1dff0ef jal ra,151c <__wrap_write>
|
|
for (ii = 8 ; ii > 0; ii--) {
|
|
1704: 05340063 beq s0,s3,1744 <write_hex+0xa8>
|
|
uint8_t digit = ((hex & (0xF << (jj*4))) >> (jj*4));
|
|
1708: 008a97b3 sll a5,s5,s0
|
|
170c: 0097f7b3 and a5,a5,s1
|
|
1710: 0087d7b3 srl a5,a5,s0
|
|
1714: 0ff7f793 zext.b a5,a5
|
|
towrite = digit < 0xA ? ('0' + digit) : ('A' + (digit - 0xA));
|
|
1718: 03078693 addi a3,a5,48
|
|
171c: 03778713 addi a4,a5,55
|
|
1720: fcfa74e3 bgeu s4,a5,16e8 <write_hex+0x4c>
|
|
1724: 0ff77793 zext.b a5,a4
|
|
for (ii = 8 ; ii > 0; ii--) {
|
|
1728: ffc40413 addi s0,s0,-4
|
|
write(fd, &towrite, 1);
|
|
172c: 00100613 li a2,1
|
|
1730: 00f10593 addi a1,sp,15
|
|
1734: 00090513 mv a0,s2
|
|
towrite = digit < 0xA ? ('0' + digit) : ('A' + (digit - 0xA));
|
|
1738: 00f107a3 sb a5,15(sp)
|
|
write(fd, &towrite, 1);
|
|
173c: de1ff0ef jal ra,151c <__wrap_write>
|
|
for (ii = 8 ; ii > 0; ii--) {
|
|
1740: fd3414e3 bne s0,s3,1708 <write_hex+0x6c>
|
|
}
|
|
}
|
|
1744: 02c12083 lw ra,44(sp)
|
|
1748: 02812403 lw s0,40(sp)
|
|
174c: 02412483 lw s1,36(sp)
|
|
1750: 02012903 lw s2,32(sp)
|
|
1754: 01c12983 lw s3,28(sp)
|
|
1758: 01812a03 lw s4,24(sp)
|
|
175c: 01412a83 lw s5,20(sp)
|
|
1760: 03010113 addi sp,sp,48
|
|
1764: 00008067 ret
|
|
|
|
00001768 <sprintf_putch>:
|
|
}
|
|
|
|
static void sprintf_putch(int ch, void** data)
|
|
{
|
|
char** pstr = (char**)data;
|
|
**pstr = ch;
|
|
1768: 0005a783 lw a5,0(a1)
|
|
176c: 00a78023 sb a0,0(a5)
|
|
(*pstr)++;
|
|
1770: 0005a783 lw a5,0(a1)
|
|
1774: 00178793 addi a5,a5,1
|
|
1778: 00f5a023 sw a5,0(a1)
|
|
}
|
|
177c: 00008067 ret
|
|
|
|
00001780 <putchar>:
|
|
{
|
|
1780: fe010113 addi sp,sp,-32
|
|
1784: 00a12623 sw a0,12(sp)
|
|
return write(STDOUT_FILENO, &ch, 1) == 1 ? ch : -1;
|
|
1788: 00100613 li a2,1
|
|
178c: 00c10593 addi a1,sp,12
|
|
1790: 00100513 li a0,1
|
|
{
|
|
1794: 00112e23 sw ra,28(sp)
|
|
return write(STDOUT_FILENO, &ch, 1) == 1 ? ch : -1;
|
|
1798: d85ff0ef jal ra,151c <__wrap_write>
|
|
179c: 00100793 li a5,1
|
|
17a0: 00f51a63 bne a0,a5,17b4 <putchar+0x34>
|
|
17a4: 00c12503 lw a0,12(sp)
|
|
}
|
|
17a8: 01c12083 lw ra,28(sp)
|
|
17ac: 02010113 addi sp,sp,32
|
|
17b0: 00008067 ret
|
|
return write(STDOUT_FILENO, &ch, 1) == 1 ? ch : -1;
|
|
17b4: fff00513 li a0,-1
|
|
17b8: ff1ff06f j 17a8 <putchar+0x28>
|
|
|
|
000017bc <vprintfmt>:
|
|
for (char* p = buf; p < pbuf; p++)
|
|
putch(*p, putdat);
|
|
}
|
|
|
|
static void vprintfmt(void (*putch)(int, void**), void **putdat, const char *fmt, va_list ap)
|
|
{
|
|
17bc: f1010113 addi sp,sp,-240
|
|
17c0: 0d512a23 sw s5,212(sp)
|
|
17c4: 40000ab7 lui s5,0x40000
|
|
17c8: fffa8793 addi a5,s5,-1 # 3fffffff <_sp+0x2fffbfff>
|
|
17cc: 0d912223 sw s9,196(sp)
|
|
u.u &= ~(1ULL << 63);
|
|
17d0: 80000cb7 lui s9,0x80000
|
|
17d4: 00f12223 sw a5,4(sp)
|
|
17d8: fffcc793 not a5,s9
|
|
{
|
|
17dc: 0e812423 sw s0,232(sp)
|
|
17e0: 0e912223 sw s1,228(sp)
|
|
17e4: 0f212023 sw s2,224(sp)
|
|
17e8: 0d312e23 sw s3,220(sp)
|
|
17ec: 0e112623 sw ra,236(sp)
|
|
17f0: 0d412c23 sw s4,216(sp)
|
|
17f4: 0d612823 sw s6,208(sp)
|
|
17f8: 0d712623 sw s7,204(sp)
|
|
17fc: 0d812423 sw s8,200(sp)
|
|
1800: 0da12023 sw s10,192(sp)
|
|
1804: 0bb12e23 sw s11,188(sp)
|
|
1808: 00050913 mv s2,a0
|
|
180c: 00058493 mv s1,a1
|
|
1810: 00060413 mv s0,a2
|
|
1814: 00d12023 sw a3,0(sp)
|
|
unsigned long num;
|
|
int base, lflag, width, precision, altflag;
|
|
char padc;
|
|
|
|
while (1) {
|
|
while ((ch = *(unsigned char *) fmt) != '%') {
|
|
1818: 02500993 li s3,37
|
|
u.u &= ~(1ULL << 63);
|
|
181c: 00f12423 sw a5,8(sp)
|
|
while ((ch = *(unsigned char *) fmt) != '%') {
|
|
1820: 0140006f j 1834 <vprintfmt+0x78>
|
|
if (ch == '\0')
|
|
1824: 06050263 beqz a0,1888 <vprintfmt+0xcc>
|
|
return;
|
|
fmt++;
|
|
putch(ch, putdat);
|
|
1828: 00048593 mv a1,s1
|
|
fmt++;
|
|
182c: 00140413 addi s0,s0,1
|
|
putch(ch, putdat);
|
|
1830: 000900e7 jalr s2
|
|
while ((ch = *(unsigned char *) fmt) != '%') {
|
|
1834: 00044503 lbu a0,0(s0)
|
|
1838: ff3516e3 bne a0,s3,1824 <vprintfmt+0x68>
|
|
width = -1;
|
|
precision = -1;
|
|
lflag = 0;
|
|
altflag = 0;
|
|
reswitch:
|
|
switch (ch = *(unsigned char *) fmt++) {
|
|
183c: 00144683 lbu a3,1(s0)
|
|
fmt++;
|
|
1840: 00140d93 addi s11,s0,1
|
|
1844: 000d8713 mv a4,s11
|
|
padc = ' ';
|
|
1848: 02000b93 li s7,32
|
|
precision = -1;
|
|
184c: fff00d13 li s10,-1
|
|
width = -1;
|
|
1850: fff00b13 li s6,-1
|
|
switch (ch = *(unsigned char *) fmt++) {
|
|
1854: 05500593 li a1,85
|
|
case '8':
|
|
case '9':
|
|
for (precision = 0; ; ++fmt) {
|
|
precision = precision * 10 + ch - '0';
|
|
ch = *fmt;
|
|
if (ch < '0' || ch > '9')
|
|
1858: 00900513 li a0,9
|
|
switch (ch = *(unsigned char *) fmt++) {
|
|
185c: fdd68793 addi a5,a3,-35
|
|
1860: 0ff7f793 zext.b a5,a5
|
|
1864: 00170413 addi s0,a4,1
|
|
1868: 06f5ec63 bltu a1,a5,18e0 <vprintfmt+0x124>
|
|
186c: 00001617 auipc a2,0x1
|
|
1870: 4e060613 addi a2,a2,1248 # 2d4c <__clz_tab+0x130>
|
|
1874: 00279793 slli a5,a5,0x2
|
|
1878: 00c787b3 add a5,a5,a2
|
|
187c: 0007a783 lw a5,0(a5)
|
|
1880: 00c787b3 add a5,a5,a2
|
|
1884: 00078067 jr a5
|
|
putch('%', putdat);
|
|
fmt = last_fmt;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
1888: 0ec12083 lw ra,236(sp)
|
|
188c: 0e812403 lw s0,232(sp)
|
|
1890: 0e412483 lw s1,228(sp)
|
|
1894: 0e012903 lw s2,224(sp)
|
|
1898: 0dc12983 lw s3,220(sp)
|
|
189c: 0d812a03 lw s4,216(sp)
|
|
18a0: 0d412a83 lw s5,212(sp)
|
|
18a4: 0d012b03 lw s6,208(sp)
|
|
18a8: 0cc12b83 lw s7,204(sp)
|
|
18ac: 0c812c03 lw s8,200(sp)
|
|
18b0: 0c412c83 lw s9,196(sp)
|
|
18b4: 0c012d03 lw s10,192(sp)
|
|
18b8: 0bc12d83 lw s11,188(sp)
|
|
18bc: 0f010113 addi sp,sp,240
|
|
18c0: 00008067 ret
|
|
padc = '0';
|
|
18c4: 00068b93 mv s7,a3
|
|
goto reswitch;
|
|
18c8: 00174683 lbu a3,1(a4)
|
|
switch (ch = *(unsigned char *) fmt++) {
|
|
18cc: 00040713 mv a4,s0
|
|
18d0: 00170413 addi s0,a4,1
|
|
18d4: fdd68793 addi a5,a3,-35
|
|
18d8: 0ff7f793 zext.b a5,a5
|
|
18dc: f8f5f8e3 bgeu a1,a5,186c <vprintfmt+0xb0>
|
|
putch('%', putdat);
|
|
18e0: 00048593 mv a1,s1
|
|
18e4: 02500513 li a0,37
|
|
18e8: 000900e7 jalr s2
|
|
fmt = last_fmt;
|
|
18ec: 000d8413 mv s0,s11
|
|
break;
|
|
18f0: f45ff06f j 1834 <vprintfmt+0x78>
|
|
ch = *fmt;
|
|
18f4: 00174683 lbu a3,1(a4)
|
|
switch (ch = *(unsigned char *) fmt++) {
|
|
18f8: 00040713 mv a4,s0
|
|
goto reswitch;
|
|
18fc: f61ff06f j 185c <vprintfmt+0xa0>
|
|
ch = *fmt;
|
|
1900: 00174603 lbu a2,1(a4)
|
|
precision = precision * 10 + ch - '0';
|
|
1904: fd068d13 addi s10,a3,-48
|
|
switch (ch = *(unsigned char *) fmt++) {
|
|
1908: 00040713 mv a4,s0
|
|
if (ch < '0' || ch > '9')
|
|
190c: fd060793 addi a5,a2,-48
|
|
ch = *fmt;
|
|
1910: 00060693 mv a3,a2
|
|
if (ch < '0' || ch > '9')
|
|
1914: 02f56663 bltu a0,a5,1940 <vprintfmt+0x184>
|
|
precision = precision * 10 + ch - '0';
|
|
1918: 002d1793 slli a5,s10,0x2
|
|
191c: 01a787b3 add a5,a5,s10
|
|
for (precision = 0; ; ++fmt) {
|
|
1920: 00170713 addi a4,a4,1
|
|
precision = precision * 10 + ch - '0';
|
|
1924: 00179793 slli a5,a5,0x1
|
|
1928: 00c787b3 add a5,a5,a2
|
|
ch = *fmt;
|
|
192c: 00074603 lbu a2,0(a4)
|
|
precision = precision * 10 + ch - '0';
|
|
1930: fd078d13 addi s10,a5,-48
|
|
if (ch < '0' || ch > '9')
|
|
1934: fd060793 addi a5,a2,-48
|
|
ch = *fmt;
|
|
1938: 00060693 mv a3,a2
|
|
if (ch < '0' || ch > '9')
|
|
193c: fcf57ee3 bgeu a0,a5,1918 <vprintfmt+0x15c>
|
|
if (width < 0)
|
|
1940: f00b5ee3 bgez s6,185c <vprintfmt+0xa0>
|
|
width = precision, precision = -1;
|
|
1944: 000d0b13 mv s6,s10
|
|
1948: fff00d13 li s10,-1
|
|
194c: f11ff06f j 185c <vprintfmt+0xa0>
|
|
putch(ch, putdat);
|
|
1950: 00048593 mv a1,s1
|
|
1954: 02500513 li a0,37
|
|
1958: 000900e7 jalr s2
|
|
break;
|
|
195c: ed9ff06f j 1834 <vprintfmt+0x78>
|
|
precision = va_arg(ap, int);
|
|
1960: 00012783 lw a5,0(sp)
|
|
ch = *fmt;
|
|
1964: 00174683 lbu a3,1(a4)
|
|
switch (ch = *(unsigned char *) fmt++) {
|
|
1968: 00040713 mv a4,s0
|
|
precision = va_arg(ap, int);
|
|
196c: 0007ad03 lw s10,0(a5)
|
|
1970: 00478793 addi a5,a5,4
|
|
1974: 00f12023 sw a5,0(sp)
|
|
goto process_precision;
|
|
1978: fc9ff06f j 1940 <vprintfmt+0x184>
|
|
switch (ch = *(unsigned char *) fmt++) {
|
|
197c: 01000a93 li s5,16
|
|
return va_arg(*ap, unsigned int);
|
|
1980: 00012783 lw a5,0(sp)
|
|
1984: 0007ac03 lw s8,0(a5)
|
|
1988: 00478793 addi a5,a5,4
|
|
198c: 00f12023 sw a5,0(sp)
|
|
digs[pos++] = num % base;
|
|
1990: 000a8593 mv a1,s5
|
|
1994: 000c0513 mv a0,s8
|
|
1998: 3cd000ef jal ra,2564 <__umodsi3>
|
|
199c: 02a12823 sw a0,48(sp)
|
|
19a0: 00050d13 mv s10,a0
|
|
19a4: 03410a13 addi s4,sp,52
|
|
19a8: 00100c93 li s9,1
|
|
if (num < base)
|
|
19ac: 355c6e63 bltu s8,s5,1d08 <vprintfmt+0x54c>
|
|
num /= base;
|
|
19b0: 000a8593 mv a1,s5
|
|
19b4: 000c0513 mv a0,s8
|
|
19b8: 365000ef jal ra,251c <__udivsi3>
|
|
digs[pos++] = num % base;
|
|
19bc: 000a8593 mv a1,s5
|
|
num /= base;
|
|
19c0: 00050c13 mv s8,a0
|
|
digs[pos++] = num % base;
|
|
19c4: 3a1000ef jal ra,2564 <__umodsi3>
|
|
19c8: 00aa2023 sw a0,0(s4)
|
|
19cc: 000c8d93 mv s11,s9
|
|
19d0: 00050d13 mv s10,a0
|
|
if (num < base)
|
|
19d4: 004a0a13 addi s4,s4,4
|
|
digs[pos++] = num % base;
|
|
19d8: 001c8c93 addi s9,s9,1 # 80000001 <tohost+0x80000011>
|
|
if (num < base)
|
|
19dc: fd5c7ae3 bgeu s8,s5,19b0 <vprintfmt+0x1f4>
|
|
while (width-- > pos)
|
|
19e0: 016cdc63 bge s9,s6,19f8 <vprintfmt+0x23c>
|
|
19e4: fffb0b13 addi s6,s6,-1
|
|
putch(padc, putdat);
|
|
19e8: 00048593 mv a1,s1
|
|
19ec: 000b8513 mv a0,s7
|
|
19f0: 000900e7 jalr s2
|
|
while (width-- > pos)
|
|
19f4: ff6cc8e3 blt s9,s6,19e4 <vprintfmt+0x228>
|
|
19f8: 00412783 lw a5,4(sp)
|
|
19fc: 02c10b93 addi s7,sp,44
|
|
putch(digs[pos] + (digs[pos] >= 10 ? 'a' - 10 : '0'), putdat);
|
|
1a00: 00900b13 li s6,9
|
|
1a04: 00fd8db3 add s11,s11,a5
|
|
1a08: 002d9d93 slli s11,s11,0x2
|
|
1a0c: 03010793 addi a5,sp,48
|
|
1a10: 01b78db3 add s11,a5,s11
|
|
1a14: 00c0006f j 1a20 <vprintfmt+0x264>
|
|
1a18: 000dad03 lw s10,0(s11)
|
|
1a1c: ffcd8d93 addi s11,s11,-4
|
|
1a20: 01ab37b3 sltu a5,s6,s10
|
|
1a24: 40f007b3 neg a5,a5
|
|
1a28: 0277f793 andi a5,a5,39
|
|
1a2c: 03078793 addi a5,a5,48
|
|
1a30: 00048593 mv a1,s1
|
|
1a34: 01a78533 add a0,a5,s10
|
|
1a38: 000900e7 jalr s2
|
|
while (pos-- > 0)
|
|
1a3c: fdbb9ee3 bne s7,s11,1a18 <vprintfmt+0x25c>
|
|
1a40: df5ff06f j 1834 <vprintfmt+0x78>
|
|
if ((p = va_arg(ap, char *)) == NULL)
|
|
1a44: 00012783 lw a5,0(sp)
|
|
1a48: 0007ad83 lw s11,0(a5)
|
|
1a4c: 00478a13 addi s4,a5,4
|
|
1a50: 2e0d8c63 beqz s11,1d48 <vprintfmt+0x58c>
|
|
if (width > 0 && padc != '-')
|
|
1a54: 0b605263 blez s6,1af8 <vprintfmt+0x33c>
|
|
1a58: 02d00793 li a5,45
|
|
1a5c: 04fb9e63 bne s7,a5,1ab8 <vprintfmt+0x2fc>
|
|
for (; (ch = *p) != '\0' && (precision < 0 || --precision >= 0); width--) {
|
|
1a60: 000dc503 lbu a0,0(s11)
|
|
1a64: 02050863 beqz a0,1a94 <vprintfmt+0x2d8>
|
|
1a68: fff00b93 li s7,-1
|
|
1a6c: 000d4663 bltz s10,1a78 <vprintfmt+0x2bc>
|
|
1a70: fffd0d13 addi s10,s10,-1
|
|
1a74: 017d0e63 beq s10,s7,1a90 <vprintfmt+0x2d4>
|
|
putch(ch, putdat);
|
|
1a78: 00048593 mv a1,s1
|
|
p++;
|
|
1a7c: 001d8d93 addi s11,s11,1
|
|
putch(ch, putdat);
|
|
1a80: 000900e7 jalr s2
|
|
for (; (ch = *p) != '\0' && (precision < 0 || --precision >= 0); width--) {
|
|
1a84: 000dc503 lbu a0,0(s11)
|
|
1a88: fffb0b13 addi s6,s6,-1
|
|
1a8c: fe0510e3 bnez a0,1a6c <vprintfmt+0x2b0>
|
|
for (; width > 0; width--)
|
|
1a90: 01605c63 blez s6,1aa8 <vprintfmt+0x2ec>
|
|
1a94: fffb0b13 addi s6,s6,-1
|
|
putch(' ', putdat);
|
|
1a98: 00048593 mv a1,s1
|
|
1a9c: 02000513 li a0,32
|
|
1aa0: 000900e7 jalr s2
|
|
for (; width > 0; width--)
|
|
1aa4: fe0b18e3 bnez s6,1a94 <vprintfmt+0x2d8>
|
|
if ((p = va_arg(ap, char *)) == NULL)
|
|
1aa8: 01412023 sw s4,0(sp)
|
|
1aac: d89ff06f j 1834 <vprintfmt+0x78>
|
|
p = "(null)";
|
|
1ab0: 00001d97 auipc s11,0x1
|
|
1ab4: 294d8d93 addi s11,s11,660 # 2d44 <__clz_tab+0x128>
|
|
while (n-- > 0 && *str) str++;
|
|
1ab8: 000d8793 mv a5,s11
|
|
1abc: 01ad86b3 add a3,s11,s10
|
|
1ac0: 000d1863 bnez s10,1ad0 <vprintfmt+0x314>
|
|
1ac4: 0200006f j 1ae4 <vprintfmt+0x328>
|
|
1ac8: 00178793 addi a5,a5,1
|
|
1acc: 00d78663 beq a5,a3,1ad8 <vprintfmt+0x31c>
|
|
1ad0: 0007c703 lbu a4,0(a5)
|
|
1ad4: fe071ae3 bnez a4,1ac8 <vprintfmt+0x30c>
|
|
return str - start;
|
|
1ad8: 41b787b3 sub a5,a5,s11
|
|
for (width -= strnlen(p, precision); width > 0; width--)
|
|
1adc: 40fb0b33 sub s6,s6,a5
|
|
1ae0: 01605c63 blez s6,1af8 <vprintfmt+0x33c>
|
|
1ae4: fffb0b13 addi s6,s6,-1
|
|
putch(padc, putdat);
|
|
1ae8: 00048593 mv a1,s1
|
|
1aec: 000b8513 mv a0,s7
|
|
1af0: 000900e7 jalr s2
|
|
for (width -= strnlen(p, precision); width > 0; width--)
|
|
1af4: fe0b18e3 bnez s6,1ae4 <vprintfmt+0x328>
|
|
for (; (ch = *p) != '\0' && (precision < 0 || --precision >= 0); width--) {
|
|
1af8: 000dc503 lbu a0,0(s11)
|
|
1afc: fa0506e3 beqz a0,1aa8 <vprintfmt+0x2ec>
|
|
1b00: fff00b93 li s7,-1
|
|
1b04: f69ff06f j 1a6c <vprintfmt+0x2b0>
|
|
putch(va_arg(ap, int), putdat);
|
|
1b08: 00012783 lw a5,0(sp)
|
|
1b0c: 00048593 mv a1,s1
|
|
1b10: 0007a503 lw a0,0(a5)
|
|
1b14: 00478a13 addi s4,a5,4
|
|
1b18: 000900e7 jalr s2
|
|
1b1c: 01412023 sw s4,0(sp)
|
|
break;
|
|
1b20: d15ff06f j 1834 <vprintfmt+0x78>
|
|
return va_arg(*ap, int);
|
|
1b24: 00012783 lw a5,0(sp)
|
|
1b28: 0007ac03 lw s8,0(a5)
|
|
1b2c: 00478a13 addi s4,a5,4
|
|
if ((long) num < 0) {
|
|
1b30: 000c5a63 bgez s8,1b44 <vprintfmt+0x388>
|
|
putch('-', putdat);
|
|
1b34: 00048593 mv a1,s1
|
|
1b38: 02d00513 li a0,45
|
|
1b3c: 000900e7 jalr s2
|
|
num = -(long) num;
|
|
1b40: 41800c33 neg s8,s8
|
|
return va_arg(*ap, int);
|
|
1b44: 01412023 sw s4,0(sp)
|
|
num = -(long) num;
|
|
1b48: 00a00a93 li s5,10
|
|
1b4c: e45ff06f j 1990 <vprintfmt+0x1d4>
|
|
print_double(putch, putdat, va_arg(ap, double), width, precision);
|
|
1b50: 00012783 lw a5,0(sp)
|
|
1b54: 00778a13 addi s4,a5,7
|
|
1b58: ff8a7a13 andi s4,s4,-8
|
|
1b5c: 004a2d83 lw s11,4(s4)
|
|
1b60: 000a2a83 lw s5,0(s4)
|
|
1b64: 008a0793 addi a5,s4,8
|
|
1b68: 00f12023 sw a5,0(sp)
|
|
u.d = num;
|
|
1b6c: 000d8713 mv a4,s11
|
|
1b70: 000a8693 mv a3,s5
|
|
if (u.u & (1ULL << 63)) {
|
|
1b74: 1a0dc063 bltz s11,1d14 <vprintfmt+0x558>
|
|
for (int i = 0; i < prec; i++)
|
|
1b78: 05a05263 blez s10,1bbc <vprintfmt+0x400>
|
|
1b7c: 0fffe797 auipc a5,0xfffe
|
|
1b80: 48478793 addi a5,a5,1156 # 10000000 <__DATA_BEGIN__>
|
|
u.d *= 10;
|
|
1b84: 0007ab03 lw s6,0(a5)
|
|
1b88: 0047ab83 lw s7,4(a5)
|
|
for (int i = 0; i < prec; i++)
|
|
1b8c: 00000a13 li s4,0
|
|
u.d *= 10;
|
|
1b90: 00068513 mv a0,a3
|
|
1b94: 00070593 mv a1,a4
|
|
1b98: 000b8693 mv a3,s7
|
|
1b9c: 000b0613 mv a2,s6
|
|
1ba0: 2ec000ef jal ra,1e8c <__muldf3>
|
|
for (int i = 0; i < prec; i++)
|
|
1ba4: 001a0a13 addi s4,s4,1
|
|
u.d *= 10;
|
|
1ba8: 00050a93 mv s5,a0
|
|
1bac: 00058d93 mv s11,a1
|
|
1bb0: 00050693 mv a3,a0
|
|
1bb4: 00058713 mv a4,a1
|
|
for (int i = 0; i < prec; i++)
|
|
1bb8: fd4d1ce3 bne s10,s4,1b90 <vprintfmt+0x3d4>
|
|
printnum(sprintf_putch, (void**)&pbuf, (unsigned long)u.d, 10, 0, 0);
|
|
1bbc: 000d8593 mv a1,s11
|
|
1bc0: 000a8513 mv a0,s5
|
|
1bc4: 0d5000ef jal ra,2498 <__fixunsdfsi>
|
|
digs[pos++] = num % base;
|
|
1bc8: 00a00593 li a1,10
|
|
printnum(sprintf_putch, (void**)&pbuf, (unsigned long)u.d, 10, 0, 0);
|
|
1bcc: 00050b13 mv s6,a0
|
|
digs[pos++] = num % base;
|
|
1bd0: 195000ef jal ra,2564 <__umodsi3>
|
|
1bd4: 02a12823 sw a0,48(sp)
|
|
if (num < base)
|
|
1bd8: 00900793 li a5,9
|
|
1bdc: 1967f663 bgeu a5,s6,1d68 <vprintfmt+0x5ac>
|
|
1be0: 03410a13 addi s4,sp,52
|
|
digs[pos++] = num % base;
|
|
1be4: 00100d93 li s11,1
|
|
if (num < base)
|
|
1be8: 06300b93 li s7,99
|
|
num /= base;
|
|
1bec: 00a00593 li a1,10
|
|
1bf0: 000b0513 mv a0,s6
|
|
1bf4: 129000ef jal ra,251c <__udivsi3>
|
|
digs[pos++] = num % base;
|
|
1bf8: 00a00593 li a1,10
|
|
1bfc: 000b0a93 mv s5,s6
|
|
num /= base;
|
|
1c00: 00050b13 mv s6,a0
|
|
digs[pos++] = num % base;
|
|
1c04: 161000ef jal ra,2564 <__umodsi3>
|
|
1c08: 00aa2023 sw a0,0(s4)
|
|
1c0c: 000d8613 mv a2,s11
|
|
if (num < base)
|
|
1c10: 004a0a13 addi s4,s4,4
|
|
digs[pos++] = num % base;
|
|
1c14: 001d8d93 addi s11,s11,1
|
|
if (num < base)
|
|
1c18: fd5beae3 bltu s7,s5,1bec <vprintfmt+0x430>
|
|
1c1c: 03010813 addi a6,sp,48
|
|
1c20: 00261713 slli a4,a2,0x2
|
|
1c24: 00e80733 add a4,a6,a4
|
|
putch(digs[pos] + (digs[pos] >= 10 ? 'a' - 10 : '0'), putdat);
|
|
1c28: 01010693 addi a3,sp,16
|
|
1c2c: 00900893 li a7,9
|
|
1c30: 00c0006f j 1c3c <vprintfmt+0x480>
|
|
1c34: ffc72503 lw a0,-4(a4)
|
|
1c38: 00058713 mv a4,a1
|
|
1c3c: 00a8b7b3 sltu a5,a7,a0
|
|
1c40: 40f007b3 neg a5,a5
|
|
1c44: 0277f793 andi a5,a5,39
|
|
1c48: 03078793 addi a5,a5,48
|
|
1c4c: 00a787b3 add a5,a5,a0
|
|
**pstr = ch;
|
|
1c50: 0ff7f793 zext.b a5,a5
|
|
1c54: 00f68023 sb a5,0(a3)
|
|
while (pos-- > 0)
|
|
1c58: ffc70593 addi a1,a4,-4
|
|
(*pstr)++;
|
|
1c5c: 00168693 addi a3,a3,1
|
|
while (pos-- > 0)
|
|
1c60: fce81ae3 bne a6,a4,1c34 <vprintfmt+0x478>
|
|
(*pstr)++;
|
|
1c64: 01160713 addi a4,a2,17
|
|
1c68: 00270bb3 add s7,a4,sp
|
|
if (prec > 0) {
|
|
1c6c: 03a05a63 blez s10,1ca0 <vprintfmt+0x4e4>
|
|
1c70: 000b8713 mv a4,s7
|
|
1c74: 41ab86b3 sub a3,s7,s10
|
|
1c78: 0080006f j 1c80 <vprintfmt+0x4c4>
|
|
pbuf[-i] = pbuf[-i-1];
|
|
1c7c: fff74783 lbu a5,-1(a4)
|
|
1c80: 00f70023 sb a5,0(a4)
|
|
for (int i = 0; i < prec; i++) {
|
|
1c84: fff70713 addi a4,a4,-1
|
|
1c88: fed71ae3 bne a4,a3,1c7c <vprintfmt+0x4c0>
|
|
pbuf[-prec] = '.';
|
|
1c8c: 41ab8bb3 sub s7,s7,s10
|
|
1c90: 02e00793 li a5,46
|
|
1c94: 00fb8023 sb a5,0(s7)
|
|
pbuf++;
|
|
1c98: 01260793 addi a5,a2,18
|
|
1c9c: 00278bb3 add s7,a5,sp
|
|
for (char* p = buf; p < pbuf; p++)
|
|
1ca0: 01010b13 addi s6,sp,16
|
|
1ca4: b97b78e3 bgeu s6,s7,1834 <vprintfmt+0x78>
|
|
putch(*p, putdat);
|
|
1ca8: 000b4503 lbu a0,0(s6)
|
|
1cac: 00048593 mv a1,s1
|
|
for (char* p = buf; p < pbuf; p++)
|
|
1cb0: 001b0b13 addi s6,s6,1
|
|
putch(*p, putdat);
|
|
1cb4: 000900e7 jalr s2
|
|
for (char* p = buf; p < pbuf; p++)
|
|
1cb8: ff7b18e3 bne s6,s7,1ca8 <vprintfmt+0x4ec>
|
|
1cbc: b79ff06f j 1834 <vprintfmt+0x78>
|
|
putch('0', putdat);
|
|
1cc0: 03000513 li a0,48
|
|
1cc4: 00048593 mv a1,s1
|
|
1cc8: 000900e7 jalr s2
|
|
putch('x', putdat);
|
|
1ccc: 00048593 mv a1,s1
|
|
1cd0: 07800513 li a0,120
|
|
1cd4: 000900e7 jalr s2
|
|
return va_arg(*ap, unsigned long);
|
|
1cd8: 00012783 lw a5,0(sp)
|
|
1cdc: 01000a93 li s5,16
|
|
1ce0: 00478793 addi a5,a5,4
|
|
1ce4: 00f12023 sw a5,0(sp)
|
|
1ce8: ffc7ac03 lw s8,-4(a5)
|
|
1cec: ca5ff06f j 1990 <vprintfmt+0x1d4>
|
|
if (width < 0)
|
|
1cf0: fffb4793 not a5,s6
|
|
1cf4: 41f7d793 srai a5,a5,0x1f
|
|
ch = *fmt;
|
|
1cf8: 00174683 lbu a3,1(a4)
|
|
1cfc: 00fb7b33 and s6,s6,a5
|
|
switch (ch = *(unsigned char *) fmt++) {
|
|
1d00: 00040713 mv a4,s0
|
|
goto reswitch;
|
|
1d04: b59ff06f j 185c <vprintfmt+0xa0>
|
|
while (width-- > pos)
|
|
1d08: 00000d93 li s11,0
|
|
1d0c: cd6ccce3 blt s9,s6,19e4 <vprintfmt+0x228>
|
|
1d10: ce9ff06f j 19f8 <vprintfmt+0x23c>
|
|
putch('-', putdat);
|
|
1d14: 00048593 mv a1,s1
|
|
1d18: 02d00513 li a0,45
|
|
1d1c: 01512623 sw s5,12(sp)
|
|
1d20: 000900e7 jalr s2
|
|
u.u &= ~(1ULL << 63);
|
|
1d24: 00812783 lw a5,8(sp)
|
|
printnum(sprintf_putch, (void**)&pbuf, (unsigned long)u.d, 10, 0, 0);
|
|
1d28: 00c12683 lw a3,12(sp)
|
|
u.u &= ~(1ULL << 63);
|
|
1d2c: 01b7f733 and a4,a5,s11
|
|
printnum(sprintf_putch, (void**)&pbuf, (unsigned long)u.d, 10, 0, 0);
|
|
1d30: 00070d93 mv s11,a4
|
|
1d34: e45ff06f j 1b78 <vprintfmt+0x3bc>
|
|
switch (ch = *(unsigned char *) fmt++) {
|
|
1d38: 00800a93 li s5,8
|
|
1d3c: c45ff06f j 1980 <vprintfmt+0x1c4>
|
|
1d40: 00a00a93 li s5,10
|
|
1d44: c3dff06f j 1980 <vprintfmt+0x1c4>
|
|
if (width > 0 && padc != '-')
|
|
1d48: 01605663 blez s6,1d54 <vprintfmt+0x598>
|
|
1d4c: 02d00793 li a5,45
|
|
1d50: d6fb90e3 bne s7,a5,1ab0 <vprintfmt+0x2f4>
|
|
1d54: 00001d97 auipc s11,0x1
|
|
1d58: ff0d8d93 addi s11,s11,-16 # 2d44 <__clz_tab+0x128>
|
|
for (; (ch = *p) != '\0' && (precision < 0 || --precision >= 0); width--) {
|
|
1d5c: 02800513 li a0,40
|
|
1d60: fff00b93 li s7,-1
|
|
1d64: d09ff06f j 1a6c <vprintfmt+0x2b0>
|
|
while (pos-- > 0)
|
|
1d68: 00000613 li a2,0
|
|
1d6c: eb1ff06f j 1c1c <vprintfmt+0x460>
|
|
|
|
00001d70 <strnlen>:
|
|
while (n-- > 0 && *str) str++;
|
|
1d70: 00b506b3 add a3,a0,a1
|
|
1d74: 00050793 mv a5,a0
|
|
1d78: 00059863 bnez a1,1d88 <strnlen+0x18>
|
|
1d7c: 0240006f j 1da0 <strnlen+0x30>
|
|
1d80: 00178793 addi a5,a5,1
|
|
1d84: 00f68a63 beq a3,a5,1d98 <strnlen+0x28>
|
|
1d88: 0007c703 lbu a4,0(a5)
|
|
1d8c: fe071ae3 bnez a4,1d80 <strnlen+0x10>
|
|
return str - start;
|
|
1d90: 40a78533 sub a0,a5,a0
|
|
}
|
|
1d94: 00008067 ret
|
|
return str - start;
|
|
1d98: 40a68533 sub a0,a3,a0
|
|
1d9c: 00008067 ret
|
|
while (n-- > 0 && *str) str++;
|
|
1da0: 00000513 li a0,0
|
|
1da4: 00008067 ret
|
|
|
|
00001da8 <__wrap_printf>:
|
|
|
|
int __wrap_printf(const char* fmt, ...)
|
|
{
|
|
1da8: fc010113 addi sp,sp,-64
|
|
va_list ap;
|
|
va_start(ap, fmt);
|
|
1dac: 02410313 addi t1,sp,36
|
|
{
|
|
1db0: 00050e13 mv t3,a0
|
|
1db4: 02b12223 sw a1,36(sp)
|
|
1db8: 02c12423 sw a2,40(sp)
|
|
1dbc: 02d12623 sw a3,44(sp)
|
|
|
|
vprintfmt((void*)putchar, 0, fmt, ap);
|
|
1dc0: 00000517 auipc a0,0x0
|
|
1dc4: 9c050513 addi a0,a0,-1600 # 1780 <putchar>
|
|
1dc8: 00030693 mv a3,t1
|
|
1dcc: 000e0613 mv a2,t3
|
|
1dd0: 00000593 li a1,0
|
|
{
|
|
1dd4: 00112e23 sw ra,28(sp)
|
|
1dd8: 02e12823 sw a4,48(sp)
|
|
1ddc: 02f12a23 sw a5,52(sp)
|
|
1de0: 03012c23 sw a6,56(sp)
|
|
1de4: 03112e23 sw a7,60(sp)
|
|
va_start(ap, fmt);
|
|
1de8: 00612623 sw t1,12(sp)
|
|
vprintfmt((void*)putchar, 0, fmt, ap);
|
|
1dec: 9d1ff0ef jal ra,17bc <vprintfmt>
|
|
|
|
va_end(ap);
|
|
return 0; // incorrect return value, but who cares, anyway?
|
|
}
|
|
1df0: 01c12083 lw ra,28(sp)
|
|
1df4: 00000513 li a0,0
|
|
1df8: 04010113 addi sp,sp,64
|
|
1dfc: 00008067 ret
|
|
|
|
00001e00 <__wrap_sprintf>:
|
|
|
|
int __wrap_sprintf(char* str, const char* fmt, ...)
|
|
{
|
|
1e00: fb010113 addi sp,sp,-80
|
|
va_list ap;
|
|
char* str0 = str;
|
|
va_start(ap, fmt);
|
|
1e04: 03810313 addi t1,sp,56
|
|
{
|
|
1e08: 02812423 sw s0,40(sp)
|
|
1e0c: 00a12623 sw a0,12(sp)
|
|
1e10: 02c12c23 sw a2,56(sp)
|
|
1e14: 02d12e23 sw a3,60(sp)
|
|
char* str0 = str;
|
|
1e18: 00050413 mv s0,a0
|
|
|
|
vprintfmt(sprintf_putch, (void**)&str, fmt, ap);
|
|
1e1c: 00058613 mv a2,a1
|
|
1e20: 00000517 auipc a0,0x0
|
|
1e24: 94850513 addi a0,a0,-1720 # 1768 <sprintf_putch>
|
|
1e28: 00c10593 addi a1,sp,12
|
|
1e2c: 00030693 mv a3,t1
|
|
{
|
|
1e30: 02112623 sw ra,44(sp)
|
|
1e34: 04f12223 sw a5,68(sp)
|
|
1e38: 04e12023 sw a4,64(sp)
|
|
1e3c: 05012423 sw a6,72(sp)
|
|
1e40: 05112623 sw a7,76(sp)
|
|
va_start(ap, fmt);
|
|
1e44: 00612e23 sw t1,28(sp)
|
|
vprintfmt(sprintf_putch, (void**)&str, fmt, ap);
|
|
1e48: 975ff0ef jal ra,17bc <vprintfmt>
|
|
*str = 0;
|
|
1e4c: 00c12783 lw a5,12(sp)
|
|
1e50: 00078023 sb zero,0(a5)
|
|
|
|
va_end(ap);
|
|
return str - str0;
|
|
1e54: 00c12503 lw a0,12(sp)
|
|
}
|
|
1e58: 02c12083 lw ra,44(sp)
|
|
1e5c: 40850533 sub a0,a0,s0
|
|
1e60: 02812403 lw s0,40(sp)
|
|
1e64: 05010113 addi sp,sp,80
|
|
1e68: 00008067 ret
|
|
|
|
00001e6c <strcmp>:
|
|
.globl strcmp
|
|
.type strcmp, @function
|
|
strcmp:
|
|
#if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__)
|
|
1:
|
|
lbu a2, 0(a0)
|
|
1e6c: 00054603 lbu a2,0(a0)
|
|
lbu a3, 0(a1)
|
|
1e70: 0005c683 lbu a3,0(a1)
|
|
add a0, a0, 1
|
|
1e74: 00150513 addi a0,a0,1
|
|
add a1, a1, 1
|
|
1e78: 00158593 addi a1,a1,1
|
|
bne a2, a3, 2f
|
|
1e7c: 00d61463 bne a2,a3,1e84 <strcmp+0x18>
|
|
bnez a2, 1b
|
|
1e80: fe0616e3 bnez a2,1e6c <strcmp>
|
|
|
|
2:
|
|
sub a0, a2, a3
|
|
1e84: 40d60533 sub a0,a2,a3
|
|
ret
|
|
1e88: 00008067 ret
|
|
|
|
00001e8c <__muldf3>:
|
|
#include "soft-fp.h"
|
|
#include "double.h"
|
|
|
|
DFtype
|
|
__muldf3 (DFtype a, DFtype b)
|
|
{
|
|
1e8c: fd010113 addi sp,sp,-48
|
|
1e90: 01312e23 sw s3,28(sp)
|
|
FP_DECL_D (B);
|
|
FP_DECL_D (R);
|
|
DFtype r;
|
|
|
|
FP_INIT_ROUNDMODE;
|
|
FP_UNPACK_D (A, a);
|
|
1e94: 0145d993 srli s3,a1,0x14
|
|
{
|
|
1e98: 02812423 sw s0,40(sp)
|
|
1e9c: 02912223 sw s1,36(sp)
|
|
1ea0: 01412c23 sw s4,24(sp)
|
|
1ea4: 01512a23 sw s5,20(sp)
|
|
1ea8: 01712623 sw s7,12(sp)
|
|
FP_UNPACK_D (A, a);
|
|
1eac: 00c59493 slli s1,a1,0xc
|
|
{
|
|
1eb0: 02112623 sw ra,44(sp)
|
|
1eb4: 03212023 sw s2,32(sp)
|
|
1eb8: 01612823 sw s6,16(sp)
|
|
FP_UNPACK_D (A, a);
|
|
1ebc: 7ff9f993 andi s3,s3,2047
|
|
{
|
|
1ec0: 00050413 mv s0,a0
|
|
1ec4: 00060b93 mv s7,a2
|
|
1ec8: 00068a93 mv s5,a3
|
|
FP_UNPACK_D (A, a);
|
|
1ecc: 00c4d493 srli s1,s1,0xc
|
|
1ed0: 01f5da13 srli s4,a1,0x1f
|
|
1ed4: 30098863 beqz s3,21e4 <__muldf3+0x358>
|
|
1ed8: 7ff00793 li a5,2047
|
|
1edc: 36f98663 beq s3,a5,2248 <__muldf3+0x3bc>
|
|
1ee0: 00349493 slli s1,s1,0x3
|
|
1ee4: 01d55793 srli a5,a0,0x1d
|
|
1ee8: 0097e7b3 or a5,a5,s1
|
|
1eec: 008004b7 lui s1,0x800
|
|
1ef0: 0097e4b3 or s1,a5,s1
|
|
1ef4: 00351913 slli s2,a0,0x3
|
|
1ef8: c0198993 addi s3,s3,-1023
|
|
1efc: 00000b13 li s6,0
|
|
FP_UNPACK_D (B, b);
|
|
1f00: 014ad713 srli a4,s5,0x14
|
|
1f04: 00ca9413 slli s0,s5,0xc
|
|
1f08: 7ff77713 andi a4,a4,2047
|
|
1f0c: 00c45413 srli s0,s0,0xc
|
|
1f10: 01fada93 srli s5,s5,0x1f
|
|
1f14: 36070663 beqz a4,2280 <__muldf3+0x3f4>
|
|
1f18: 7ff00793 li a5,2047
|
|
1f1c: 3cf70663 beq a4,a5,22e8 <__muldf3+0x45c>
|
|
1f20: 00341413 slli s0,s0,0x3
|
|
1f24: 01dbd793 srli a5,s7,0x1d
|
|
1f28: 0087e7b3 or a5,a5,s0
|
|
1f2c: 00800437 lui s0,0x800
|
|
1f30: 0087e433 or s0,a5,s0
|
|
1f34: c0170713 addi a4,a4,-1023
|
|
1f38: 003b9793 slli a5,s7,0x3
|
|
1f3c: 00000513 li a0,0
|
|
FP_MUL_D (R, A, B);
|
|
1f40: 00e989b3 add s3,s3,a4
|
|
1f44: 002b1713 slli a4,s6,0x2
|
|
1f48: 00a76733 or a4,a4,a0
|
|
1f4c: 00a00693 li a3,10
|
|
1f50: 015a4633 xor a2,s4,s5
|
|
1f54: 00198593 addi a1,s3,1
|
|
1f58: 40e6c863 blt a3,a4,2368 <__muldf3+0x4dc>
|
|
1f5c: 00200693 li a3,2
|
|
1f60: 3ce6c063 blt a3,a4,2320 <__muldf3+0x494>
|
|
1f64: fff70713 addi a4,a4,-1
|
|
1f68: 00100693 li a3,1
|
|
1f6c: 3ce6fc63 bgeu a3,a4,2344 <__muldf3+0x4b8>
|
|
1f70: 00010e37 lui t3,0x10
|
|
1f74: fffe0313 addi t1,t3,-1 # ffff <_data_lma+0xd15b>
|
|
1f78: 01095813 srli a6,s2,0x10
|
|
1f7c: 0107d513 srli a0,a5,0x10
|
|
1f80: 00697933 and s2,s2,t1
|
|
1f84: 0067feb3 and t4,a5,t1
|
|
1f88: 03d907b3 mul a5,s2,t4
|
|
1f8c: 03d80f33 mul t5,a6,t4
|
|
1f90: 0107d713 srli a4,a5,0x10
|
|
1f94: 032506b3 mul a3,a0,s2
|
|
1f98: 01e686b3 add a3,a3,t5
|
|
1f9c: 00d70733 add a4,a4,a3
|
|
1fa0: 02a808b3 mul a7,a6,a0
|
|
1fa4: 01e77463 bgeu a4,t5,1fac <__muldf3+0x120>
|
|
1fa8: 01c888b3 add a7,a7,t3
|
|
1fac: 006776b3 and a3,a4,t1
|
|
1fb0: 0067f7b3 and a5,a5,t1
|
|
1fb4: 01069693 slli a3,a3,0x10
|
|
1fb8: 00647e33 and t3,s0,t1
|
|
1fbc: 00f686b3 add a3,a3,a5
|
|
1fc0: 01045793 srli a5,s0,0x10
|
|
1fc4: 01075293 srli t0,a4,0x10
|
|
1fc8: 03c90f33 mul t5,s2,t3
|
|
1fcc: 03c80333 mul t1,a6,t3
|
|
1fd0: 010f5713 srli a4,t5,0x10
|
|
1fd4: 03278933 mul s2,a5,s2
|
|
1fd8: 00690933 add s2,s2,t1
|
|
1fdc: 01270733 add a4,a4,s2
|
|
1fe0: 02f80833 mul a6,a6,a5
|
|
1fe4: 00677663 bgeu a4,t1,1ff0 <__muldf3+0x164>
|
|
1fe8: 00010337 lui t1,0x10
|
|
1fec: 00680833 add a6,a6,t1
|
|
1ff0: 00010937 lui s2,0x10
|
|
1ff4: fff90f93 addi t6,s2,-1 # ffff <_data_lma+0xd15b>
|
|
1ff8: 01075313 srli t1,a4,0x10
|
|
1ffc: 01ff7f33 and t5,t5,t6
|
|
2000: 01f77733 and a4,a4,t6
|
|
2004: 0104d413 srli s0,s1,0x10
|
|
2008: 01f4ffb3 and t6,s1,t6
|
|
200c: 03fe83b3 mul t2,t4,t6
|
|
2010: 01030333 add t1,t1,a6
|
|
2014: 01071713 slli a4,a4,0x10
|
|
2018: 01e70f33 add t5,a4,t5
|
|
201c: 01e282b3 add t0,t0,t5
|
|
2020: 03d40833 mul a6,s0,t4
|
|
2024: 0103d713 srli a4,t2,0x10
|
|
2028: 028504b3 mul s1,a0,s0
|
|
202c: 03f50533 mul a0,a0,t6
|
|
2030: 01050533 add a0,a0,a6
|
|
2034: 00a70733 add a4,a4,a0
|
|
2038: 01077463 bgeu a4,a6,2040 <__muldf3+0x1b4>
|
|
203c: 012484b3 add s1,s1,s2
|
|
2040: 01075e93 srli t4,a4,0x10
|
|
2044: 009e8eb3 add t4,t4,s1
|
|
2048: 000104b7 lui s1,0x10
|
|
204c: fff48513 addi a0,s1,-1 # ffff <_data_lma+0xd15b>
|
|
2050: 00a77733 and a4,a4,a0
|
|
2054: 00a3f3b3 and t2,t2,a0
|
|
2058: 01071713 slli a4,a4,0x10
|
|
205c: 03c40533 mul a0,s0,t3
|
|
2060: 00770733 add a4,a4,t2
|
|
2064: 02878833 mul a6,a5,s0
|
|
2068: 03fe03b3 mul t2,t3,t6
|
|
206c: 03f787b3 mul a5,a5,t6
|
|
2070: 0103df93 srli t6,t2,0x10
|
|
2074: 00a787b3 add a5,a5,a0
|
|
2078: 00ff8fb3 add t6,t6,a5
|
|
207c: 00aff463 bgeu t6,a0,2084 <__muldf3+0x1f8>
|
|
2080: 00980833 add a6,a6,s1
|
|
2084: 00010537 lui a0,0x10
|
|
2088: fff50513 addi a0,a0,-1 # ffff <_data_lma+0xd15b>
|
|
208c: 00aff7b3 and a5,t6,a0
|
|
2090: 00a3f3b3 and t2,t2,a0
|
|
2094: 01079793 slli a5,a5,0x10
|
|
2098: 005888b3 add a7,a7,t0
|
|
209c: 007787b3 add a5,a5,t2
|
|
20a0: 01e8bf33 sltu t5,a7,t5
|
|
20a4: 006787b3 add a5,a5,t1
|
|
20a8: 01e782b3 add t0,a5,t5
|
|
20ac: 00e888b3 add a7,a7,a4
|
|
20b0: 00e8b733 sltu a4,a7,a4
|
|
20b4: 01d28533 add a0,t0,t4
|
|
20b8: 00e50e33 add t3,a0,a4
|
|
20bc: 0067b433 sltu s0,a5,t1
|
|
20c0: 01e2b2b3 sltu t0,t0,t5
|
|
20c4: 010fd793 srli a5,t6,0x10
|
|
20c8: 00ee3733 sltu a4,t3,a4
|
|
20cc: 00546433 or s0,s0,t0
|
|
20d0: 01d53533 sltu a0,a0,t4
|
|
20d4: 00f40433 add s0,s0,a5
|
|
20d8: 00e56533 or a0,a0,a4
|
|
20dc: 00a40433 add s0,s0,a0
|
|
20e0: 01040433 add s0,s0,a6
|
|
20e4: 017e5793 srli a5,t3,0x17
|
|
20e8: 00941413 slli s0,s0,0x9
|
|
20ec: 00f46433 or s0,s0,a5
|
|
20f0: 00989793 slli a5,a7,0x9
|
|
20f4: 00d7e7b3 or a5,a5,a3
|
|
20f8: 00f037b3 snez a5,a5
|
|
20fc: 0178d893 srli a7,a7,0x17
|
|
2100: 009e1713 slli a4,t3,0x9
|
|
2104: 0117e7b3 or a5,a5,a7
|
|
2108: 00e7e7b3 or a5,a5,a4
|
|
210c: 01000737 lui a4,0x1000
|
|
2110: 00e47733 and a4,s0,a4
|
|
2114: 28070663 beqz a4,23a0 <__muldf3+0x514>
|
|
2118: 0017d713 srli a4,a5,0x1
|
|
211c: 0017f793 andi a5,a5,1
|
|
2120: 00f76733 or a4,a4,a5
|
|
2124: 01f41793 slli a5,s0,0x1f
|
|
2128: 00f767b3 or a5,a4,a5
|
|
212c: 00145413 srli s0,s0,0x1
|
|
FP_PACK_D (r, R);
|
|
2130: 3ff58693 addi a3,a1,1023
|
|
2134: 26d05a63 blez a3,23a8 <__muldf3+0x51c>
|
|
2138: 0077f713 andi a4,a5,7
|
|
213c: 02070063 beqz a4,215c <__muldf3+0x2d0>
|
|
2140: 00f7f713 andi a4,a5,15
|
|
2144: 00400513 li a0,4
|
|
2148: 00a70a63 beq a4,a0,215c <__muldf3+0x2d0>
|
|
214c: 00478713 addi a4,a5,4
|
|
2150: 00f737b3 sltu a5,a4,a5
|
|
2154: 00f40433 add s0,s0,a5
|
|
2158: 00070793 mv a5,a4
|
|
215c: 01000737 lui a4,0x1000
|
|
2160: 00e47733 and a4,s0,a4
|
|
2164: 00070a63 beqz a4,2178 <__muldf3+0x2ec>
|
|
2168: ff000737 lui a4,0xff000
|
|
216c: fff70713 addi a4,a4,-1 # feffffff <tohost+0xff00000f>
|
|
2170: 00e47433 and s0,s0,a4
|
|
2174: 40058693 addi a3,a1,1024
|
|
2178: 7fe00713 li a4,2046
|
|
217c: 2ed74e63 blt a4,a3,2478 <__muldf3+0x5ec>
|
|
2180: 01d41713 slli a4,s0,0x1d
|
|
2184: 0037d793 srli a5,a5,0x3
|
|
2188: 00f76733 or a4,a4,a5
|
|
218c: 00345413 srli s0,s0,0x3
|
|
2190: 7ff007b7 lui a5,0x7ff00
|
|
2194: 01469693 slli a3,a3,0x14
|
|
2198: 00c41413 slli s0,s0,0xc
|
|
219c: 00f6f6b3 and a3,a3,a5
|
|
21a0: 00c45413 srli s0,s0,0xc
|
|
FP_HANDLE_EXCEPTIONS;
|
|
|
|
return r;
|
|
}
|
|
21a4: 02c12083 lw ra,44(sp)
|
|
FP_PACK_D (r, R);
|
|
21a8: 0086e6b3 or a3,a3,s0
|
|
}
|
|
21ac: 02812403 lw s0,40(sp)
|
|
FP_PACK_D (r, R);
|
|
21b0: 01f61613 slli a2,a2,0x1f
|
|
21b4: 00c6e7b3 or a5,a3,a2
|
|
}
|
|
21b8: 02412483 lw s1,36(sp)
|
|
21bc: 02012903 lw s2,32(sp)
|
|
21c0: 01c12983 lw s3,28(sp)
|
|
21c4: 01812a03 lw s4,24(sp)
|
|
21c8: 01412a83 lw s5,20(sp)
|
|
21cc: 01012b03 lw s6,16(sp)
|
|
21d0: 00c12b83 lw s7,12(sp)
|
|
21d4: 00070513 mv a0,a4
|
|
21d8: 00078593 mv a1,a5
|
|
21dc: 03010113 addi sp,sp,48
|
|
21e0: 00008067 ret
|
|
FP_UNPACK_D (A, a);
|
|
21e4: 00a4e933 or s2,s1,a0
|
|
21e8: 06090c63 beqz s2,2260 <__muldf3+0x3d4>
|
|
21ec: 04048063 beqz s1,222c <__muldf3+0x3a0>
|
|
21f0: 00048513 mv a0,s1
|
|
21f4: ab0ff0ef jal ra,14a4 <__clzsi2>
|
|
21f8: ff550713 addi a4,a0,-11
|
|
21fc: 01c00793 li a5,28
|
|
2200: 02e7cc63 blt a5,a4,2238 <__muldf3+0x3ac>
|
|
2204: 01d00793 li a5,29
|
|
2208: ff850913 addi s2,a0,-8
|
|
220c: 40e787b3 sub a5,a5,a4
|
|
2210: 012494b3 sll s1,s1,s2
|
|
2214: 00f457b3 srl a5,s0,a5
|
|
2218: 0097e4b3 or s1,a5,s1
|
|
221c: 01241933 sll s2,s0,s2
|
|
2220: c0d00993 li s3,-1011
|
|
2224: 40a989b3 sub s3,s3,a0
|
|
2228: cd5ff06f j 1efc <__muldf3+0x70>
|
|
222c: a78ff0ef jal ra,14a4 <__clzsi2>
|
|
2230: 02050513 addi a0,a0,32
|
|
2234: fc5ff06f j 21f8 <__muldf3+0x36c>
|
|
2238: fd850493 addi s1,a0,-40
|
|
223c: 009414b3 sll s1,s0,s1
|
|
2240: 00000913 li s2,0
|
|
2244: fddff06f j 2220 <__muldf3+0x394>
|
|
2248: 00a4e933 or s2,s1,a0
|
|
224c: 02090263 beqz s2,2270 <__muldf3+0x3e4>
|
|
2250: 00050913 mv s2,a0
|
|
2254: 7ff00993 li s3,2047
|
|
2258: 00300b13 li s6,3
|
|
225c: ca5ff06f j 1f00 <__muldf3+0x74>
|
|
2260: 00000493 li s1,0
|
|
2264: 00000993 li s3,0
|
|
2268: 00100b13 li s6,1
|
|
226c: c95ff06f j 1f00 <__muldf3+0x74>
|
|
2270: 00000493 li s1,0
|
|
2274: 7ff00993 li s3,2047
|
|
2278: 00200b13 li s6,2
|
|
227c: c85ff06f j 1f00 <__muldf3+0x74>
|
|
FP_UNPACK_D (B, b);
|
|
2280: 017467b3 or a5,s0,s7
|
|
2284: 06078e63 beqz a5,2300 <__muldf3+0x474>
|
|
2288: 04040063 beqz s0,22c8 <__muldf3+0x43c>
|
|
228c: 00040513 mv a0,s0
|
|
2290: a14ff0ef jal ra,14a4 <__clzsi2>
|
|
2294: ff550693 addi a3,a0,-11
|
|
2298: 01c00793 li a5,28
|
|
229c: 02d7ce63 blt a5,a3,22d8 <__muldf3+0x44c>
|
|
22a0: 01d00713 li a4,29
|
|
22a4: ff850793 addi a5,a0,-8
|
|
22a8: 40d70733 sub a4,a4,a3
|
|
22ac: 00f41433 sll s0,s0,a5
|
|
22b0: 00ebd733 srl a4,s7,a4
|
|
22b4: 00876433 or s0,a4,s0
|
|
22b8: 00fb97b3 sll a5,s7,a5
|
|
22bc: c0d00713 li a4,-1011
|
|
22c0: 40a70733 sub a4,a4,a0
|
|
22c4: c79ff06f j 1f3c <__muldf3+0xb0>
|
|
22c8: 000b8513 mv a0,s7
|
|
22cc: 9d8ff0ef jal ra,14a4 <__clzsi2>
|
|
22d0: 02050513 addi a0,a0,32
|
|
22d4: fc1ff06f j 2294 <__muldf3+0x408>
|
|
22d8: fd850413 addi s0,a0,-40
|
|
22dc: 008b9433 sll s0,s7,s0
|
|
22e0: 00000793 li a5,0
|
|
22e4: fd9ff06f j 22bc <__muldf3+0x430>
|
|
22e8: 017467b3 or a5,s0,s7
|
|
22ec: 02078263 beqz a5,2310 <__muldf3+0x484>
|
|
22f0: 000b8793 mv a5,s7
|
|
22f4: 7ff00713 li a4,2047
|
|
22f8: 00300513 li a0,3
|
|
22fc: c45ff06f j 1f40 <__muldf3+0xb4>
|
|
2300: 00000413 li s0,0
|
|
2304: 00000713 li a4,0
|
|
2308: 00100513 li a0,1
|
|
230c: c35ff06f j 1f40 <__muldf3+0xb4>
|
|
2310: 00000413 li s0,0
|
|
2314: 7ff00713 li a4,2047
|
|
2318: 00200513 li a0,2
|
|
231c: c25ff06f j 1f40 <__muldf3+0xb4>
|
|
2320: 00100693 li a3,1
|
|
2324: 00e696b3 sll a3,a3,a4
|
|
2328: 5306f713 andi a4,a3,1328
|
|
232c: 04071863 bnez a4,237c <__muldf3+0x4f0>
|
|
2330: 2406f813 andi a6,a3,576
|
|
2334: 12081463 bnez a6,245c <__muldf3+0x5d0>
|
|
2338: 0886f693 andi a3,a3,136
|
|
233c: c2068ae3 beqz a3,1f70 <__muldf3+0xe4>
|
|
2340: 000a8613 mv a2,s5
|
|
FP_PACK_D (r, R);
|
|
2344: 00200713 li a4,2
|
|
2348: 12e50863 beq a0,a4,2478 <__muldf3+0x5ec>
|
|
234c: 00300713 li a4,3
|
|
2350: 10e50e63 beq a0,a4,246c <__muldf3+0x5e0>
|
|
2354: 00100713 li a4,1
|
|
2358: dce51ce3 bne a0,a4,2130 <__muldf3+0x2a4>
|
|
235c: 00000413 li s0,0
|
|
2360: 00000713 li a4,0
|
|
2364: 0bc0006f j 2420 <__muldf3+0x594>
|
|
FP_MUL_D (R, A, B);
|
|
2368: 00f00693 li a3,15
|
|
236c: 02d70063 beq a4,a3,238c <__muldf3+0x500>
|
|
2370: 00b00693 li a3,11
|
|
2374: fcd706e3 beq a4,a3,2340 <__muldf3+0x4b4>
|
|
FP_UNPACK_D (A, a);
|
|
2378: 000a0613 mv a2,s4
|
|
FP_MUL_D (R, A, B);
|
|
237c: 00048413 mv s0,s1
|
|
2380: 00090793 mv a5,s2
|
|
2384: 000b0513 mv a0,s6
|
|
2388: fbdff06f j 2344 <__muldf3+0x4b8>
|
|
238c: 00080437 lui s0,0x80
|
|
2390: 00000793 li a5,0
|
|
2394: 00000613 li a2,0
|
|
2398: 00300513 li a0,3
|
|
239c: fb1ff06f j 234c <__muldf3+0x4c0>
|
|
23a0: 00098593 mv a1,s3
|
|
23a4: d8dff06f j 2130 <__muldf3+0x2a4>
|
|
FP_PACK_D (r, R);
|
|
23a8: 00100513 li a0,1
|
|
23ac: 40d50533 sub a0,a0,a3
|
|
23b0: 03800713 li a4,56
|
|
23b4: faa744e3 blt a4,a0,235c <__muldf3+0x4d0>
|
|
23b8: 01f00713 li a4,31
|
|
23bc: 06a74663 blt a4,a0,2428 <__muldf3+0x59c>
|
|
23c0: 41e58593 addi a1,a1,1054
|
|
23c4: 00b41733 sll a4,s0,a1
|
|
23c8: 00a7d6b3 srl a3,a5,a0
|
|
23cc: 00b795b3 sll a1,a5,a1
|
|
23d0: 00d76733 or a4,a4,a3
|
|
23d4: 00b035b3 snez a1,a1
|
|
23d8: 00b767b3 or a5,a4,a1
|
|
23dc: 00a45433 srl s0,s0,a0
|
|
23e0: 0077f713 andi a4,a5,7
|
|
23e4: 02070063 beqz a4,2404 <__muldf3+0x578>
|
|
23e8: 00f7f713 andi a4,a5,15
|
|
23ec: 00400693 li a3,4
|
|
23f0: 00d70a63 beq a4,a3,2404 <__muldf3+0x578>
|
|
23f4: 00478713 addi a4,a5,4 # 7ff00004 <_sp+0x6fefc004>
|
|
23f8: 00f737b3 sltu a5,a4,a5
|
|
23fc: 00f40433 add s0,s0,a5
|
|
2400: 00070793 mv a5,a4
|
|
2404: 00800737 lui a4,0x800
|
|
2408: 00e47733 and a4,s0,a4
|
|
240c: 06071e63 bnez a4,2488 <__muldf3+0x5fc>
|
|
2410: 01d41713 slli a4,s0,0x1d
|
|
2414: 0037d793 srli a5,a5,0x3
|
|
2418: 00f76733 or a4,a4,a5
|
|
241c: 00345413 srli s0,s0,0x3
|
|
2420: 00000693 li a3,0
|
|
2424: d6dff06f j 2190 <__muldf3+0x304>
|
|
2428: fe100713 li a4,-31
|
|
242c: 40d70733 sub a4,a4,a3
|
|
2430: 02000813 li a6,32
|
|
2434: 00e45733 srl a4,s0,a4
|
|
2438: 00000693 li a3,0
|
|
243c: 01050663 beq a0,a6,2448 <__muldf3+0x5bc>
|
|
2440: 43e58593 addi a1,a1,1086
|
|
2444: 00b416b3 sll a3,s0,a1
|
|
2448: 00f6e6b3 or a3,a3,a5
|
|
244c: 00d036b3 snez a3,a3
|
|
2450: 00d767b3 or a5,a4,a3
|
|
2454: 00000413 li s0,0
|
|
2458: f89ff06f j 23e0 <__muldf3+0x554>
|
|
FP_MUL_D (R, A, B);
|
|
245c: 00080437 lui s0,0x80
|
|
FP_PACK_D (r, R);
|
|
2460: 7ff00693 li a3,2047
|
|
2464: 00000613 li a2,0
|
|
2468: d29ff06f j 2190 <__muldf3+0x304>
|
|
246c: 00080437 lui s0,0x80
|
|
2470: 00000713 li a4,0
|
|
2474: fedff06f j 2460 <__muldf3+0x5d4>
|
|
2478: 00000413 li s0,0
|
|
247c: 00000713 li a4,0
|
|
2480: 7ff00693 li a3,2047
|
|
2484: d0dff06f j 2190 <__muldf3+0x304>
|
|
2488: 00000413 li s0,0
|
|
248c: 00000713 li a4,0
|
|
2490: 00100693 li a3,1
|
|
2494: cfdff06f j 2190 <__muldf3+0x304>
|
|
|
|
00002498 <__fixunsdfsi>:
|
|
FP_DECL_EX;
|
|
FP_DECL_D (A);
|
|
USItype r;
|
|
|
|
FP_INIT_EXCEPTIONS;
|
|
FP_UNPACK_RAW_D (A, a);
|
|
2498: 0145d713 srli a4,a1,0x14
|
|
249c: 00100637 lui a2,0x100
|
|
{
|
|
24a0: 00050693 mv a3,a0
|
|
FP_UNPACK_RAW_D (A, a);
|
|
24a4: fff60793 addi a5,a2,-1 # fffff <_data_lma+0xfd15b>
|
|
24a8: 7ff77713 andi a4,a4,2047
|
|
FP_TO_INT_D (r, A, SI_BITS, 0);
|
|
24ac: 3fe00513 li a0,1022
|
|
FP_UNPACK_RAW_D (A, a);
|
|
24b0: 00b7f7b3 and a5,a5,a1
|
|
24b4: 01f5d593 srli a1,a1,0x1f
|
|
FP_TO_INT_D (r, A, SI_BITS, 0);
|
|
24b8: 04e55a63 bge a0,a4,250c <__fixunsdfsi+0x74>
|
|
24bc: 00000513 li a0,0
|
|
24c0: 00059863 bnez a1,24d0 <__fixunsdfsi+0x38>
|
|
24c4: 41e00593 li a1,1054
|
|
24c8: fff00513 li a0,-1
|
|
24cc: 00e5d463 bge a1,a4,24d4 <__fixunsdfsi+0x3c>
|
|
FP_HANDLE_EXCEPTIONS;
|
|
|
|
return r;
|
|
}
|
|
24d0: 00008067 ret
|
|
FP_TO_INT_D (r, A, SI_BITS, 0);
|
|
24d4: 00c7e7b3 or a5,a5,a2
|
|
24d8: 43300613 li a2,1075
|
|
24dc: 40e60633 sub a2,a2,a4
|
|
24e0: 01f00593 li a1,31
|
|
24e4: 00c5cc63 blt a1,a2,24fc <__fixunsdfsi+0x64>
|
|
24e8: bed70713 addi a4,a4,-1043 # 7ffbed <_data_lma+0x7fcd49>
|
|
24ec: 00e797b3 sll a5,a5,a4
|
|
24f0: 00c6d533 srl a0,a3,a2
|
|
24f4: 00a7e533 or a0,a5,a0
|
|
24f8: 00008067 ret
|
|
24fc: 41300693 li a3,1043
|
|
2500: 40e68733 sub a4,a3,a4
|
|
2504: 00e7d533 srl a0,a5,a4
|
|
2508: 00008067 ret
|
|
250c: 00000513 li a0,0
|
|
2510: 00008067 ret
|
|
|
|
00002514 <__divsi3>:
|
|
li t0, -1
|
|
beq a1, t0, .L20
|
|
#endif
|
|
|
|
FUNC_BEGIN (__divdi3)
|
|
bltz a0, .L10
|
|
2514: 06054063 bltz a0,2574 <__umodsi3+0x10>
|
|
bltz a1, .L11
|
|
2518: 0605c663 bltz a1,2584 <__umodsi3+0x20>
|
|
|
|
0000251c <__udivsi3>:
|
|
/* Since the quotient is positive, fall into __udivdi3. */
|
|
|
|
FUNC_BEGIN (__udivdi3)
|
|
mv a2, a1
|
|
251c: 00058613 mv a2,a1
|
|
mv a1, a0
|
|
2520: 00050593 mv a1,a0
|
|
li a0, -1
|
|
2524: fff00513 li a0,-1
|
|
beqz a2, .L5
|
|
2528: 02060c63 beqz a2,2560 <__udivsi3+0x44>
|
|
li a3, 1
|
|
252c: 00100693 li a3,1
|
|
bgeu a2, a1, .L2
|
|
2530: 00b67a63 bgeu a2,a1,2544 <__udivsi3+0x28>
|
|
.L1:
|
|
blez a2, .L2
|
|
2534: 00c05863 blez a2,2544 <__udivsi3+0x28>
|
|
slli a2, a2, 1
|
|
2538: 00161613 slli a2,a2,0x1
|
|
slli a3, a3, 1
|
|
253c: 00169693 slli a3,a3,0x1
|
|
bgtu a1, a2, .L1
|
|
2540: feb66ae3 bltu a2,a1,2534 <__udivsi3+0x18>
|
|
.L2:
|
|
li a0, 0
|
|
2544: 00000513 li a0,0
|
|
.L3:
|
|
bltu a1, a2, .L4
|
|
2548: 00c5e663 bltu a1,a2,2554 <__udivsi3+0x38>
|
|
sub a1, a1, a2
|
|
254c: 40c585b3 sub a1,a1,a2
|
|
or a0, a0, a3
|
|
2550: 00d56533 or a0,a0,a3
|
|
.L4:
|
|
srli a3, a3, 1
|
|
2554: 0016d693 srli a3,a3,0x1
|
|
srli a2, a2, 1
|
|
2558: 00165613 srli a2,a2,0x1
|
|
bnez a3, .L3
|
|
255c: fe0696e3 bnez a3,2548 <__udivsi3+0x2c>
|
|
.L5:
|
|
ret
|
|
2560: 00008067 ret
|
|
|
|
00002564 <__umodsi3>:
|
|
FUNC_END (__udivdi3)
|
|
|
|
FUNC_BEGIN (__umoddi3)
|
|
/* Call __udivdi3(a0, a1), then return the remainder, which is in a1. */
|
|
move t0, ra
|
|
2564: 00008293 mv t0,ra
|
|
jal __udivdi3
|
|
2568: fb5ff0ef jal ra,251c <__udivsi3>
|
|
move a0, a1
|
|
256c: 00058513 mv a0,a1
|
|
jr t0
|
|
2570: 00028067 jr t0
|
|
FUNC_END (__umoddi3)
|
|
|
|
/* Handle negative arguments to __divdi3. */
|
|
.L10:
|
|
neg a0, a0
|
|
2574: 40a00533 neg a0,a0
|
|
/* Zero is handled as a negative so that the result will not be inverted. */
|
|
bgtz a1, .L12 /* Compute __udivdi3(-a0, a1), then negate the result. */
|
|
2578: 00b04863 bgtz a1,2588 <__umodsi3+0x24>
|
|
|
|
neg a1, a1
|
|
257c: 40b005b3 neg a1,a1
|
|
j __udivdi3 /* Compute __udivdi3(-a0, -a1). */
|
|
2580: f9dff06f j 251c <__udivsi3>
|
|
.L11: /* Compute __udivdi3(a0, -a1), then negate the result. */
|
|
neg a1, a1
|
|
2584: 40b005b3 neg a1,a1
|
|
.L12:
|
|
move t0, ra
|
|
2588: 00008293 mv t0,ra
|
|
jal __udivdi3
|
|
258c: f91ff0ef jal ra,251c <__udivsi3>
|
|
neg a0, a0
|
|
2590: 40a00533 neg a0,a0
|
|
jr t0
|
|
2594: 00028067 jr t0
|
|
|
|
00002598 <__modsi3>:
|
|
FUNC_END (__divdi3)
|
|
|
|
FUNC_BEGIN (__moddi3)
|
|
move t0, ra
|
|
2598: 00008293 mv t0,ra
|
|
bltz a1, .L31
|
|
259c: 0005ca63 bltz a1,25b0 <__modsi3+0x18>
|
|
bltz a0, .L32
|
|
25a0: 00054c63 bltz a0,25b8 <__modsi3+0x20>
|
|
.L30:
|
|
jal __udivdi3 /* The dividend is not negative. */
|
|
25a4: f79ff0ef jal ra,251c <__udivsi3>
|
|
move a0, a1
|
|
25a8: 00058513 mv a0,a1
|
|
jr t0
|
|
25ac: 00028067 jr t0
|
|
.L31:
|
|
neg a1, a1
|
|
25b0: 40b005b3 neg a1,a1
|
|
bgez a0, .L30
|
|
25b4: fe0558e3 bgez a0,25a4 <__modsi3+0xc>
|
|
.L32:
|
|
neg a0, a0
|
|
25b8: 40a00533 neg a0,a0
|
|
jal __udivdi3 /* The dividend is hella negative. */
|
|
25bc: f61ff0ef jal ra,251c <__udivsi3>
|
|
neg a0, a1
|
|
25c0: 40b00533 neg a0,a1
|
|
jr t0
|
|
25c4: 00028067 jr t0
|