hello: 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: 7e018193 addi gp,gp,2016 # 10000800 <__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: 00002517 auipc a0,0x2 34: dac50513 addi a0,a0,-596 # 1ddc <_data_lma> la a1, _data 38: 10000597 auipc a1,0x10000 3c: fc858593 addi a1,a1,-56 # 10000000 <__DATA_BEGIN__> la a2, _edata 40: 80818613 addi a2,gp,-2040 # 10000008 <__BSS_END__> bgeu a1, a2, 2f 44: 00c5fc63 bgeu a1,a2,5c <_start+0x3c> 1: lw t0, (a0) 48: 00052283 lw t0,0(a0) sw t0, (a1) 4c: 0055a023 sw t0,0(a1) addi a0, a0, 4 50: 00450513 addi a0,a0,4 addi a1, a1, 4 54: 00458593 addi a1,a1,4 bltu a1, a2, 1b 58: fec5e8e3 bltu a1,a2,48 <_start+0x28> 2: /* Clear bss section */ la a0, __bss_start 5c: 80818513 addi a0,gp,-2040 # 10000008 <__BSS_END__> la a1, _end 60: 80818593 addi a1,gp,-2040 # 10000008 <__BSS_END__> bgeu a0, a1, 2f 64: 00b57863 bgeu a0,a1,74 <_start+0x54> 1: sw zero, (a0) 68: 00052023 sw zero,0(a0) addi a0, a0, 4 6c: 00450513 addi a0,a0,4 bltu a0, a1, 1b 70: feb56ce3 bltu a0,a1,68 <_start+0x48> fssr x0 1: #endif /* argc = argv = 0 */ li a0, 0 74: 00000513 li a0,0 li a1, 0 78: 00000593 li a1,0 call main 7c: 008000ef jal ra,84
tail _exit 80: 3880006f j 408 <__wrap__exit> Disassembly of section .text: 00000084
: return result; } int main() { 84: fe010113 addi sp,sp,-32 volatile int result = 1; 88: 00100793 li a5,1 { 8c: 00812c23 sw s0,24(sp) 90: 00912a23 sw s1,20(sp) 94: 00112e23 sw ra,28(sp) volatile int result = 1; 98: 00f12623 sw a5,12(sp) for (int ii = 1; ii <= i; ii++) { 9c: 00100413 li s0,1 a0: 00b00493 li s1,11 result = result * ii; a4: 00c12503 lw a0,12(sp) a8: 00040593 mv a1,s0 for (int ii = 1; ii <= i; ii++) { ac: 00140413 addi s0,s0,1 result = result * ii; b0: 0dd010ef jal ra,198c <__mulsi3> b4: 00a12623 sw a0,12(sp) for (int ii = 1; ii <= i; ii++) { b8: fe9416e3 bne s0,s1,a4 return result; bc: 00c12783 lw a5,12(sp) volatile int result = factorial (10); printf("Factorial is %d\n", result); c0: 00002517 auipc a0,0x2 c4: 9f050513 addi a0,a0,-1552 # 1ab0 <__clzsi2+0x4c> volatile int result = factorial (10); c8: 00f12423 sw a5,8(sp) printf("Factorial is %d\n", result); cc: 00812583 lw a1,8(sp) d0: 2f1000ef jal ra,bc0 <__wrap_printf> printf("End of execution"); d4: 00002517 auipc a0,0x2 d8: 9f050513 addi a0,a0,-1552 # 1ac4 <__clzsi2+0x60> dc: 2e5000ef jal ra,bc0 <__wrap_printf> return 0; } e0: 01c12083 lw ra,28(sp) e4: 01812403 lw s0,24(sp) e8: 01412483 lw s1,20(sp) ec: 00000513 li a0,0 f0: 02010113 addi sp,sp,32 f4: 00008067 ret 000000f8 : .section .text.entry .align 2 .global trap_entry trap_entry: addi sp, sp, -32*REGBYTES f8: f8010113 addi sp,sp,-128 STORE x1, 1*REGBYTES(sp) fc: 00112223 sw ra,4(sp) STORE x2, 2*REGBYTES(sp) 100: 00212423 sw sp,8(sp) STORE x3, 3*REGBYTES(sp) 104: 00312623 sw gp,12(sp) STORE x4, 4*REGBYTES(sp) 108: 00412823 sw tp,16(sp) STORE x5, 5*REGBYTES(sp) 10c: 00512a23 sw t0,20(sp) STORE x6, 6*REGBYTES(sp) 110: 00612c23 sw t1,24(sp) STORE x7, 7*REGBYTES(sp) 114: 00712e23 sw t2,28(sp) STORE x8, 8*REGBYTES(sp) 118: 02812023 sw s0,32(sp) STORE x9, 9*REGBYTES(sp) 11c: 02912223 sw s1,36(sp) STORE x10, 10*REGBYTES(sp) 120: 02a12423 sw a0,40(sp) STORE x11, 11*REGBYTES(sp) 124: 02b12623 sw a1,44(sp) STORE x12, 12*REGBYTES(sp) 128: 02c12823 sw a2,48(sp) STORE x13, 13*REGBYTES(sp) 12c: 02d12a23 sw a3,52(sp) STORE x14, 14*REGBYTES(sp) 130: 02e12c23 sw a4,56(sp) STORE x15, 15*REGBYTES(sp) 134: 02f12e23 sw a5,60(sp) #ifndef __riscv_abi_rve STORE x16, 16*REGBYTES(sp) 138: 05012023 sw a6,64(sp) STORE x17, 17*REGBYTES(sp) 13c: 05112223 sw a7,68(sp) STORE x18, 18*REGBYTES(sp) 140: 05212423 sw s2,72(sp) STORE x19, 19*REGBYTES(sp) 144: 05312623 sw s3,76(sp) STORE x20, 20*REGBYTES(sp) 148: 05412823 sw s4,80(sp) STORE x21, 21*REGBYTES(sp) 14c: 05512a23 sw s5,84(sp) STORE x22, 22*REGBYTES(sp) 150: 05612c23 sw s6,88(sp) STORE x23, 23*REGBYTES(sp) 154: 05712e23 sw s7,92(sp) STORE x24, 24*REGBYTES(sp) 158: 07812023 sw s8,96(sp) STORE x25, 25*REGBYTES(sp) 15c: 07912223 sw s9,100(sp) STORE x26, 26*REGBYTES(sp) 160: 07a12423 sw s10,104(sp) STORE x27, 27*REGBYTES(sp) 164: 07b12623 sw s11,108(sp) STORE x28, 28*REGBYTES(sp) 168: 07c12823 sw t3,112(sp) STORE x29, 29*REGBYTES(sp) 16c: 07d12a23 sw t4,116(sp) STORE x30, 30*REGBYTES(sp) 170: 07e12c23 sw t5,120(sp) STORE x31, 31*REGBYTES(sp) 174: 07f12e23 sw t6,124(sp) #endif csrr a0, mcause 178: 34202573 csrr a0,mcause csrr a1, mepc 17c: 341025f3 csrr a1,mepc mv a2, sp 180: 00010613 mv a2,sp call handle_trap 184: 174000ef jal ra,2f8 csrw mepc, a0 188: 34151073 csrw mepc,a0 # Remain in M-mode after mret li t0, MSTATUS_MPP 18c: 000022b7 lui t0,0x2 190: 80028293 addi t0,t0,-2048 # 1800 <__muldf3+0x5bc> csrs mstatus, t0 194: 3002a073 csrs mstatus,t0 LOAD x1, 1*REGBYTES(sp) 198: 00412083 lw ra,4(sp) LOAD x2, 2*REGBYTES(sp) 19c: 00812103 lw sp,8(sp) LOAD x3, 3*REGBYTES(sp) 1a0: 00c12183 lw gp,12(sp) LOAD x4, 4*REGBYTES(sp) 1a4: 01012203 lw tp,16(sp) LOAD x5, 5*REGBYTES(sp) 1a8: 01412283 lw t0,20(sp) LOAD x6, 6*REGBYTES(sp) 1ac: 01812303 lw t1,24(sp) LOAD x7, 7*REGBYTES(sp) 1b0: 01c12383 lw t2,28(sp) LOAD x8, 8*REGBYTES(sp) 1b4: 02012403 lw s0,32(sp) LOAD x9, 9*REGBYTES(sp) 1b8: 02412483 lw s1,36(sp) LOAD x10, 10*REGBYTES(sp) 1bc: 02812503 lw a0,40(sp) LOAD x11, 11*REGBYTES(sp) 1c0: 02c12583 lw a1,44(sp) LOAD x12, 12*REGBYTES(sp) 1c4: 03012603 lw a2,48(sp) LOAD x13, 13*REGBYTES(sp) 1c8: 03412683 lw a3,52(sp) LOAD x14, 14*REGBYTES(sp) 1cc: 03812703 lw a4,56(sp) LOAD x15, 15*REGBYTES(sp) 1d0: 03c12783 lw a5,60(sp) #ifndef __riscv_abi_rve LOAD x16, 16*REGBYTES(sp) 1d4: 04012803 lw a6,64(sp) LOAD x17, 17*REGBYTES(sp) 1d8: 04412883 lw a7,68(sp) LOAD x18, 18*REGBYTES(sp) 1dc: 04812903 lw s2,72(sp) LOAD x19, 19*REGBYTES(sp) 1e0: 04c12983 lw s3,76(sp) LOAD x20, 20*REGBYTES(sp) 1e4: 05012a03 lw s4,80(sp) LOAD x21, 21*REGBYTES(sp) 1e8: 05412a83 lw s5,84(sp) LOAD x22, 22*REGBYTES(sp) 1ec: 05812b03 lw s6,88(sp) LOAD x23, 23*REGBYTES(sp) 1f0: 05c12b83 lw s7,92(sp) LOAD x24, 24*REGBYTES(sp) 1f4: 06012c03 lw s8,96(sp) LOAD x25, 25*REGBYTES(sp) 1f8: 06412c83 lw s9,100(sp) LOAD x26, 26*REGBYTES(sp) 1fc: 06812d03 lw s10,104(sp) LOAD x27, 27*REGBYTES(sp) 200: 06c12d83 lw s11,108(sp) LOAD x28, 28*REGBYTES(sp) 204: 07012e03 lw t3,112(sp) LOAD x29, 29*REGBYTES(sp) 208: 07412e83 lw t4,116(sp) LOAD x30, 30*REGBYTES(sp) 20c: 07812f03 lw t5,120(sp) LOAD x31, 31*REGBYTES(sp) 210: 07c12f83 lw t6,124(sp) #endif addi sp, sp, 32*REGBYTES 214: 08010113 addi sp,sp,128 mret 218: 30200073 mret .weak handle_trap handle_trap: 1: j 1b 21c: 0000006f j 21c 00000220 : int factorial(int i){ 220: fe010113 addi sp,sp,-32 volatile int result = 1; 224: 00100793 li a5,1 int factorial(int i){ 228: 00112e23 sw ra,28(sp) 22c: 00812c23 sw s0,24(sp) 230: 00912a23 sw s1,20(sp) volatile int result = 1; 234: 00f12623 sw a5,12(sp) for (int ii = 1; ii <= i; ii++) { 238: 02a05263 blez a0,25c 23c: 00150493 addi s1,a0,1 240: 00100413 li s0,1 result = result * ii; 244: 00c12503 lw a0,12(sp) 248: 00040593 mv a1,s0 for (int ii = 1; ii <= i; ii++) { 24c: 00140413 addi s0,s0,1 result = result * ii; 250: 73c010ef jal ra,198c <__mulsi3> 254: 00a12623 sw a0,12(sp) for (int ii = 1; ii <= i; ii++) { 258: fe9416e3 bne s0,s1,244 } 25c: 01c12083 lw ra,28(sp) 260: 01812403 lw s0,24(sp) return result; 264: 00c12503 lw a0,12(sp) } 268: 01412483 lw s1,20(sp) 26c: 02010113 addi sp,sp,32 270: 00008067 ret 00000274