---
# System prepended metadata

title: Lab-6

---

# Lab 6
Name: G Jaswanth
Roll No.: CS22B020

---
## Question 11

**Compiled Code** 

```assembly=
	.file	"test.c"
	.option nopic
	.attribute arch, "rv32i2p1"
	.attribute unaligned_access, 0
	.attribute stack_align, 16
	.text
	.align	2
	.globl	main
	.type	main, @function
main:
	addi	sp,sp,-432
	sw	ra,428(sp)
	sw	s0,424(sp)
	addi	s0,sp,432
	addi	a5,s0,-424
	li	a4,400
	mv	a2,a4
	li	a1,0
	mv	a0,a5
	call	memset
	li	a5,1
	sw	a5,-424(s0)
	sw	zero,-20(s0)
	sw	zero,-24(s0)
	j	.L2
.L3:
	lw	a5,-24(s0)
	slli	a5,a5,2
	addi	a5,a5,-16
	add	a5,a5,s0
	lw	a5,-408(a5)
	lw	a4,-20(s0)
	add	a5,a4,a5
	sw	a5,-20(s0)
	lw	a5,-24(s0)
	addi	a5,a5,1
	sw	a5,-24(s0)
.L2:
	lw	a4,-24(s0)
	li	a5,99
	ble	a4,a5,.L3
	li	a5,0
	mv	a0,a5
	lw	ra,428(sp)
	lw	s0,424(sp)
	addi	sp,sp,432
	jr	ra
	.size	main, .-main
	.ident	"GCC: (xPack GNU RISC-V Embedded GCC x86_64) 13.2.0"
```




---
## Question 12
**Compiled Code** 
```assembly=
.file	"test.c"
	.option nopic
	.attribute arch, "rv32i2p1"
	.attribute unaligned_access, 0
	.attribute stack_align, 16
	.text
	.align	2
	.globl	main
	.type	main, @function
main:
	addi	sp,sp,-432
	sw	ra,428(sp)
	sw	s0,424(sp)
	addi	s0,sp,432
	addi	a5,s0,-424
	li	a4,400
	mv	a2,a4
	li	a1,0
	mv	a0,a5
	call	memset
	li	a5,1
	sw	a5,-424(s0)
	sw	zero,-20(s0)
	sw	zero,-24(s0)
	j	.L2
.L3:
	lw	a5,-24(s0)
	slli	a5,a5,2
	addi	a5,a5,-16
	add	a5,a5,s0
	lw	a5,-408(a5)
	lw	a4,-20(s0)
	add	a5,a4,a5
	sw	a5,-20(s0)
	lw	a5,-24(s0)
	addi	a5,a5,1
	sw	a5,-24(s0)
.L2:
	lw	a4,-24(s0)
	li	a5,99
	ble	a4,a5,.L3
	li	a5,0
	mv	a0,a5
	lw	ra,428(sp)
	lw	s0,424(sp)
	addi	sp,sp,432
	jr	ra
	.size	main, .-main
	.ident	"GCC: (xPack GNU RISC-V Embedded GCC x86_64) 13.2.0"

```



---
## Question 13

**Code** 
* yes we can optimise it.
* we can use different optimisers like oO, o1, o2, o3, os, ofast and compile it.

---
## Question 14
**ELF File Code**
```
ELF header
==========

Name           Offset         NumValue            Value          
EI_MAG:        0x00000000     0x7F454C46          ELF
EI_CLASS       0x00000004     0x01                32 BIT
EI_DATA        0x00000005     0x01                DATA2LSB (Little-Endian)
EI_VERSION     0x00000006     0x01                EV_CURRENT
EI_OSABI       0x00000007     0x00                UNIX System V ABI
EI_OSABIVER    0x00000008     0x00                
E_TYPE         0x00000010     0x0002              ET_EXEC (Executable file)
E_MACHINE      0x00000012     0x00F3              Unknown
E_VERSION      0x00000014     0x00000001          EV_CURRENT
E_ENTRY        0x00000018     0x000100D8          
E_PHOFF        0x0000001C     0x00000034          
E_SHOFF        0x00000020     0x00003ECC          
E_FLAGS        0x00000024     0x00000000          
E_EHSIZE       0x00000028     0x0034              
E_PHENTSIZE    0x0000002A     0x0020              
E_PHNUM        0x0000002C     0x0003              
E_SHENTSIZE    0x0000002E     0x0028              
E_SHNUM        0x00000030     0x000E              
E_SHSTRNDX     0x00000032     0x000D              


Program header tables
=====================

Type                Offset              VAddr               PAddr               FileSz              MemSz               Align               Flags               
Unknown             0x00002847          0x00000000          0x00000000          0x0000001C          0x00000000          0x00000001          Read                
PT_LOAD             0x00000000          0x00010000          0x00010000          0x000022B8          0x000022B8          0x00001000          Execute|Read        
PT_LOAD             0x000022B8          0x000132B8          0x000132B8          0x0000055C          0x000008A4          0x00001000          Write|Read          


Section header tables
=====================

Nr             Name                Type           Address             Offset              Size                Link           Info           AddrAlign           EntSize             Flags          
0                                  SHT_NULL       0x00000000          0x00000000          0x00000000          0x00000000     0x00000000     0x00000000          0x00000000                         
1              .text               SHT_PROGBITS   0x00010094          0x00000094          0x00002224          0x00000000     0x00000000     0x00000004          0x00000000          Alloc|Exec     
2              .eh_frame           SHT_PROGBITS   0x000132B8          0x000022B8          0x00000004          0x00000000     0x00000000     0x00000004          0x00000000          Write|Alloc    
3              .init_array         SHT_INIT_ARRAY 0x000132BC          0x000022BC          0x00000008          0x00000000     0x00000000     0x00000004          0x00000004          Write|Alloc    
4              .fini_array         SHT_FINI_ARRAY 0x000132C4          0x000022C4          0x00000004          0x00000000     0x00000000     0x00000004          0x00000004          Write|Alloc    
5              .data               SHT_PROGBITS   0x000132C8          0x000022C8          0x00000538          0x00000000     0x00000000     0x00000008          0x00000000          Write|Alloc    
6              .sdata              SHT_PROGBITS   0x00013800          0x00002800          0x00000014          0x00000000     0x00000000     0x00000004          0x00000000          Write|Alloc    
7              .sbss               SHT_NOBITS     0x00013814          0x00002814          0x00000040          0x00000000     0x00000000     0x00000004          0x00000000          Write|Alloc    
8              .bss                SHT_NOBITS     0x00013854          0x00002814          0x00000308          0x00000000     0x00000000     0x00000004          0x00000000          Write|Alloc    
9              .comment            SHT_PROGBITS   0x00000000          0x00002814          0x00000033          0x00000000     0x00000000     0x00000001          0x00000001          Merge|Strings  
10             .riscv.attributes   Unknown        0x00000000          0x00002847          0x0000001C          0x00000000     0x00000000     0x00000001          0x00000000                         
11             .symtab             SHT_SYMTAB     0x00000000          0x00002864          0x00000D60          0x0000000C     0x00000080     0x00000004          0x00000010                         
12             .strtab             SHT_STRTAB     0x00000000          0x000035C4          0x0000088F          0x00000000     0x00000000     0x00000001          0x00000000                         
13             .shstrtab           SHT_STRTAB     0x00000000          0x00003E53          0x00000076          0x00000000     0x00000000     0x00000001          0x00000000                         


Symbol tables
==============

Symbol table of section table .symtab (Index 11) with 214 entries
-----------------------
Nr             Value               Size                Info (Binding|Type) Other          Shndx          Name           
0              0x00000000          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0000                        
1              0x00010094          0x00000000          LOCAL | SECTION     DEFAULT        0x0001                        
2              0x000132B8          0x00000000          LOCAL | SECTION     DEFAULT        0x0002                        
3              0x000132BC          0x00000000          LOCAL | SECTION     DEFAULT        0x0003                        
4              0x000132C4          0x00000000          LOCAL | SECTION     DEFAULT        0x0004                        
5              0x000132C8          0x00000000          LOCAL | SECTION     DEFAULT        0x0005                        
6              0x00013800          0x00000000          LOCAL | SECTION     DEFAULT        0x0006                        
7              0x00013814          0x00000000          LOCAL | SECTION     DEFAULT        0x0007                        
8              0x00013854          0x00000000          LOCAL | SECTION     DEFAULT        0x0008                        
9              0x00000000          0x00000000          LOCAL | SECTION     DEFAULT        0x0009                        
10             0x00000000          0x00000000          LOCAL | SECTION     DEFAULT        0x000A                        
11             0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         libc_a-exit.o  
12             0x00010094          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
13             0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         libc_a-__call_atexit.o
14             0x000100C0          0x00000018          LOCAL | FUNC        DEFAULT        0x0001         register_fini  
15             0x000100C0          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
16             0x00010DC8          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
17             0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         crt0.o         
18             0x000100D8          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
19             0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         crtbegin.o     
20             0x000132B8          0x00000000          LOCAL | OBJECT      DEFAULT        0x0002         _EH_FRAME_BEGIN_
21             0x00010118          0x00000000          LOCAL | FUNC        DEFAULT        0x0001         __do_global_dtors_aux
22             0x00010118          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
23             0x00013814          0x00000000          LOCAL | OBJECT      DEFAULT        0x0007         completed.1    
24             0x000132C4          0x00000000          LOCAL | OBJECT      DEFAULT        0x0004         __do_global_dtors_aux_fini_array_entry
25             0x00010160          0x00000000          LOCAL | FUNC        DEFAULT        0x0001         frame_dummy    
26             0x00010160          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
27             0x00013854          0x00000000          LOCAL | OBJECT      DEFAULT        0x0008         object.0       
28             0x000132C0          0x00000000          LOCAL | OBJECT      DEFAULT        0x0003         __frame_dummy_init_array_entry
29             0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         test.c         
30             0x00010180          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
31             0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         libc_a-atexit.o
32             0x0001020C          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
33             0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         libc_a-findfp.o
34             0x00010220          0x0000001C          LOCAL | FUNC        DEFAULT        0x0001         stdio_exit_handler
35             0x00010220          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
36             0x0001023C          0x00000064          LOCAL | FUNC        DEFAULT        0x0001         cleanup_stdio  
37             0x0001023C          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
38             0x000102A0          0x00000040          LOCAL | FUNC        DEFAULT        0x0001         __fp_lock      
39             0x000102A0          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
40             0x000102E0          0x00000040          LOCAL | FUNC        DEFAULT        0x0001         __fp_unlock    
41             0x000102E0          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
42             0x00010320          0x00000168          LOCAL | FUNC        DEFAULT        0x0001         global_stdio_init.part.0
43             0x00010320          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
44             0x00010488          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
45             0x000105D0          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
46             0x00010630          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
47             0x00010638          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
48             0x00010640          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
49             0x00010670          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
50             0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         libc_a-fwalk.o 
51             0x000106A0          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
52             0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         libc_a-stdio.o 
53             0x00010754          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
54             0x000107B0          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
55             0x000107B8          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
56             0x00010840          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
57             0x000108B8          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
58             0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         libc_a-closer.o
59             0x000108C0          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
60             0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         libc_a-reent.o 
61             0x00010910          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
62             0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         libc_a-lseekr.o
63             0x000109D4          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
64             0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         libc_a-readr.o 
65             0x00010A30          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
66             0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         libc_a-writer.o
67             0x00010A8C          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
68             0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         libc_a-init.o  
69             0x00010AE8          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
70             0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         libc_a-fini.o  
71             0x00010B7C          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
72             0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         libc_a-lock.o  
73             0x00010BD8          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
74             0x00010BDC          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
75             0x00010BE0          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
76             0x00010BE4          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
77             0x00010BE8          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
78             0x00010BEC          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
79             0x00010BF0          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
80             0x00010BF8          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
81             0x00010C00          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
82             0x00010C04          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
83             0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         libc_a-memset.o
84             0x00010C08          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
85             0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         libc_a-__atexit.o
86             0x00010CE4          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
87             0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         libc_a-freer.o 
88             0x00010F18          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
89             0x00011050          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
90             0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         libc_a-mallocr.o
91             0x00011354          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
92             0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         libc_a-mlock.o 
93             0x00011B1C          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
94             0x00011B24          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
95             0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         libc_a-fclose.o
96             0x00011B2C          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
97             0x00011C9C          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
98             0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         libc_a-fflush.o
99             0x00011CA8          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
100            0x00011EF4          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
101            0x00011FD4          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
102            0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         libc_a-sbrkr.o 
103            0x000120A4          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
104            0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         riscv_libgloss_a-sys_close.o
105            0x000120F4          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
106            0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         riscv_libgloss_a-sys_exit.o
107            0x00012138          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
108            0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         riscv_libgloss_a-sys_lseek.o
109            0x00012168          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
110            0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         riscv_libgloss_a-sys_read.o
111            0x000121AC          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
112            0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         riscv_libgloss_a-sys_sbrk.o
113            0x000121F0          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
114            0x00013850          0x00000004          LOCAL | OBJECT      DEFAULT        0x0007         heap_end.0     
115            0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         riscv_libgloss_a-sys_write.o
116            0x0001226C          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
117            0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         libc_a-errno.o 
118            0x000122B0          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0001         $xrv32i2p1     
119            0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1         crtend.o       
120            0x000132B8          0x00000000          LOCAL | OBJECT      DEFAULT        0x0002         _FRAME_END_  
121            0x00000000          0x00000000          LOCAL | FILE        DEFAULT        0xFFF1                        
122            0x000132C8          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0004         __fini_array_end
123            0x000132C4          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0004         __fini_array_start
124            0x000132C4          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0003         __init_array_end
125            0x000132BC          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0003         __preinit_array_end
126            0x000132BC          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0003         __init_array_start
127            0x000132BC          0x00000000          LOCAL | NOTYPE      DEFAULT        0x0003         __preinit_array_start
128            0x000109D4          0x0000005C          GLOBAL | FUNC       DEFAULT        0x0001         _lseek_r       
129            0x00013AC8          0x00000000          GLOBAL | NOTYPE     DEFAULT        0xFFF1         __global_pointer$
130            0x00013838          0x00000001          GLOBAL | OBJECT     DEFAULT        0x0007         _lock__atexit_recursive_mutex
131            0x00010840          0x00000078          GLOBAL | FUNC       DEFAULT        0x0001         __sseek        
132            0x000105D0          0x00000060          GLOBAL | FUNC       DEFAULT        0x0001         __sinit        
133            0x00011B24          0x00000008          GLOBAL | FUNC       DEFAULT        0x0001         __malloc_unlock
134            0x00013820          0x00000001          GLOBAL | OBJECT     DEFAULT        0x0007         _lock__arc4random_mutex
135            0x00013808          0x00000004          GLOBAL | OBJECT     DEFAULT        0x0006         __atexit_recursive_mutex
136            0x000122B0          0x00000008          GLOBAL | FUNC       DEFAULT        0x0001         __errno        
137            0x00010BE0          0x00000004          GLOBAL | FUNC       DEFAULT        0x0001         __retarget_lock_close
138            0x00013818          0x00000004          GLOBAL | OBJECT     DEFAULT        0x0007         __stdio_exit_handler
139            0x0001381C          0x00000004          GLOBAL | OBJECT     DEFAULT        0x0007         errno          
140            0x000107B0          0x00000008          GLOBAL | FUNC       DEFAULT        0x0001         __seofread     
141            0x00013800          0x00000000          GLOBAL | NOTYPE     DEFAULT        0x0006         _SDATA_BEGIN_
142            0x0001384C          0x00000004          GLOBAL | OBJECT     DEFAULT        0x0007         __malloc_top_pad
143            0x00013800          0x00000000          GLOBAL | OBJECT     HIDDEN         0x0006         __dso_handle   
144            0x000120A4          0x00000050          GLOBAL | FUNC       DEFAULT        0x0001         _sbrk_r        
145            0x00010A30          0x0000005C          GLOBAL | FUNC       DEFAULT        0x0001         _read_r        
146            0x00011B2C          0x00000170          GLOBAL | FUNC       DEFAULT        0x0001         _fclose_r      
147            0x00011FD4          0x000000D0          GLOBAL | FUNC       DEFAULT        0x0001         fflush         
148            0x00013848          0x00000004          GLOBAL | OBJECT     DEFAULT        0x0007         __malloc_max_sbrked_mem
149            0x0001382C          0x00000001          GLOBAL | OBJECT     DEFAULT        0x0007         _lock__env_recursive_mutex
150            0x00010AE8          0x00000094          GLOBAL | FUNC       DEFAULT        0x0001         __libc_init_array
151            0x000121F0          0x0000007C          GLOBAL | FUNC       DEFAULT        0x0001         _sbrk          
152            0x00010640          0x00000030          GLOBAL | FUNC       DEFAULT        0x0001         __fp_lock_all  
153            0x00010B7C          0x0000005C          GLOBAL | FUNC       DEFAULT        0x0001         __libc_fini_array
154            0x00010910          0x000000C4          GLOBAL | FUNC       DEFAULT        0x0001         _reclaim_reent 
155            0x00013830          0x00000001          GLOBAL | OBJECT     DEFAULT        0x0007         _lock__malloc_recursive_mutex
156            0x0001386C          0x00000138          GLOBAL | OBJECT     DEFAULT        0x0008         __sf           
157            0x00010C04          0x00000004          GLOBAL | FUNC       DEFAULT        0x0001         __retarget_lock_release_recursive
158            0x00010BF8          0x00000008          GLOBAL | FUNC       DEFAULT        0x0001         __retarget_lock_try_acquire_recursive
159            0x00010630          0x00000008          GLOBAL | FUNC       DEFAULT        0x0001         __sfp_lock_acquire
160            0x00011050          0x00000304          GLOBAL | FUNC       DEFAULT        0x0001         _free_r        
161            0x00010DC8          0x00000150          GLOBAL | FUNC       DEFAULT        0x0001         __call_exitprocs
162            0x000139A4          0x00000190          GLOBAL | OBJECT     DEFAULT        0x0008         __atexit0      
163            0x0001380C          0x00000004          GLOBAL | OBJECT     DEFAULT        0x0006         __malloc_sbrk_base
164            0x000100D8          0x00000040          GLOBAL | FUNC       DEFAULT        0x0001         _start         
165            0x00010BF0          0x00000008          GLOBAL | FUNC       DEFAULT        0x0001         __retarget_lock_try_acquire
166            0x00012168          0x00000044          GLOBAL | FUNC       DEFAULT        0x0001         _lseek         
167            0x00010CE4          0x000000E4          GLOBAL | FUNC       DEFAULT        0x0001         __register_exitproc
168            0x00013B34          0x00000028          GLOBAL | OBJECT     DEFAULT        0x0008         __malloc_current_mallinfo
169            0x000108C0          0x00000050          GLOBAL | FUNC       DEFAULT        0x0001         _close_r       
170            0x00010BE4          0x00000004          GLOBAL | FUNC       DEFAULT        0x0001         __retarget_lock_close_recursive
171            0x00010488          0x00000148          GLOBAL | FUNC       DEFAULT        0x0001         __sfp          
172            0x00013B5C          0x00000000          GLOBAL | NOTYPE     DEFAULT        0x0008         _BSS_END_    
173            0x000133F8          0x00000408          GLOBAL | OBJECT     DEFAULT        0x0005         _malloc_av   
174            0x00013840          0x00000004          GLOBAL | OBJECT     DEFAULT        0x0007         __atexit       
175            0x00010754          0x0000005C          GLOBAL | FUNC       DEFAULT        0x0001         __sread        
176            0x00011B1C          0x00000008          GLOBAL | FUNC       DEFAULT        0x0001         __malloc_lock  
177            0x00011EF4          0x000000E0          GLOBAL | FUNC       DEFAULT        0x0001         _fflush_r      
178            0x00010BEC          0x00000004          GLOBAL | FUNC       DEFAULT        0x0001         __retarget_lock_acquire_recursive
179            0x00013814          0x00000000          GLOBAL | NOTYPE     DEFAULT        0x0007         __bss_start    
180            0x00010C08          0x000000DC          GLOBAL | FUNC       DEFAULT        0x0001         memset         
181            0x00010180          0x0000008C          GLOBAL | FUNC       DEFAULT        0x0001         main           
182            0x00013844          0x00000004          GLOBAL | OBJECT     DEFAULT        0x0007         __malloc_max_total_mem
183            0x00010BDC          0x00000004          GLOBAL | FUNC       DEFAULT        0x0001         __retarget_lock_init_recursive
184            0x000108B8          0x00000008          GLOBAL | FUNC       DEFAULT        0x0001         __sclose       
185            0x00011C9C          0x0000000C          GLOBAL | FUNC       DEFAULT        0x0001         fclose         
186            0x00011354          0x000007C8          GLOBAL | FUNC       DEFAULT        0x0001         _malloc_r      
187            0x00010F18          0x00000138          GLOBAL | FUNC       DEFAULT        0x0001         _malloc_trim_r 
188            0x00010BD8          0x00000004          GLOBAL | FUNC       DEFAULT        0x0001         __retarget_lock_init
189            0x0001020C          0x00000014          GLOBAL | FUNC       DEFAULT        0x0001         atexit         
190            0x00010A8C          0x0000005C          GLOBAL | FUNC       DEFAULT        0x0001         _write_r       
191            0x00013804          0x00000004          GLOBAL | OBJECT     DEFAULT        0x0006         _impure_ptr    
192            0x00011CA8          0x0000024C          GLOBAL | FUNC       DEFAULT        0x0001         __sflush_r     
193            0x000106A0          0x000000B4          GLOBAL | FUNC       DEFAULT        0x0001         _fwalk_sglue   
194            0x00010670          0x00000030          GLOBAL | FUNC       DEFAULT        0x0001         __fp_unlock_all
195            0x000132C8          0x00000000          GLOBAL | NOTYPE     DEFAULT        0x0005         _DATA_BEGIN_ 
196            0x000132C8          0x0000000C          GLOBAL | OBJECT     DEFAULT        0x0005         __sglue        
197            0x0001226C          0x00000044          GLOBAL | FUNC       DEFAULT        0x0001         _write         
198            0x00013814          0x00000000          GLOBAL | NOTYPE     DEFAULT        0x0006         _edata         
199            0x00013B5C          0x00000000          GLOBAL | NOTYPE     DEFAULT        0x0008         _end           
200            0x00013834          0x00000001          GLOBAL | OBJECT     DEFAULT        0x0007         _lock__at_quick_exit_mutex
201            0x000107B8          0x00000088          GLOBAL | FUNC       DEFAULT        0x0001         __swrite       
202            0x00013810          0x00000004          GLOBAL | OBJECT     DEFAULT        0x0006         __malloc_trim_threshold
203            0x00010094          0x0000002C          GLOBAL | FUNC       DEFAULT        0x0001         exit           
204            0x000132D8          0x00000120          GLOBAL | OBJECT     DEFAULT        0x0005         _impure_data   
205            0x00010638          0x00000008          GLOBAL | FUNC       DEFAULT        0x0001         __sfp_lock_release
206            0x000121AC          0x00000044          GLOBAL | FUNC       DEFAULT        0x0001         _read          
207            0x00010BE8          0x00000004          GLOBAL | FUNC       DEFAULT        0x0001         __retarget_lock_acquire
208            0x00010C00          0x00000004          GLOBAL | FUNC       DEFAULT        0x0001         __retarget_lock_release
209            0x00012138          0x00000030          GLOBAL | FUNC       DEFAULT        0x0001         _exit          
210            0x00013824          0x00000001          GLOBAL | OBJECT     DEFAULT        0x0007         _lock__dd_hash_mutex
211            0x00013828          0x00000001          GLOBAL | OBJECT     DEFAULT        0x0007         _lock__tz_mutex
212            0x0001383C          0x00000001          GLOBAL | OBJECT     DEFAULT        0x0007         _lock__sfp_recursive_mutex
213            0x000120F4          0x00000044          GLOBAL | FUNC       DEFAULT        0x0001         _close         


Note tables
==============

- Note table does not exist -
```

---
## Question 15
**Code** 
(using: riscv-none-elf-gcc -march=rv32i -mabi=ilp32 -O0 -S test.c -o test_o0.s)
```assembly=
.file "test.c"
	.option nopic
	.attribute arch, "rv32i2p1"
	.attribute unaligned_access, 0
	.attribute stack_align, 16
	.text
	.align	2
	.globl	main
	.type	main, @function
main:
	addi	sp,sp,-432
	sw	ra,428(sp)
	sw	s0,424(sp)
	addi	s0,sp,432
	addi	a5,s0,-424
	li	a4,400
	mv	a2,a4
	li	a1,0
	mv	a0,a5
	call	memset
	li	a5,1
	sw	a5,-424(s0)
	sw	zero,-20(s0)
	sw	zero,-24(s0)
	j	.L2
.L3:
	lw	a5,-24(s0)
	slli	a5,a5,2
	addi	a5,a5,-16
	add	a5,a5,s0
	lw	a5,-408(a5)
	lw	a4,-20(s0)
	add	a5,a4,a5
	sw	a5,-20(s0)
	lw	a5,-24(s0)
	addi	a5,a5,1
	sw	a5,-24(s0)
.L2:
	lw	a4,-24(s0)
	li	a5,99
	ble	a4,a5,.L3
	li	a5,0
	mv	a0,a5
	lw	ra,428(sp)
	lw	s0,424(sp)
	addi	sp,sp,432
	jr	ra
	.size	main, .-main
	.ident	"GCC: (xPack GNU RISC-V Embedded GCC x86_64) 13.2.0"
```
**code**
(using: risv-none-elf-gcc -march=rv32i -mabi=ilp32 -O1 -S test.c -o test_o1.s)
```assembly=
.file "test.c"
	.option nopic
	.attribute arch, "rv32i2p1"
	.attribute unaligned_access, 0
	.attribute stack_align, 16
	.text
	.align	2
	.globl	main
	.type	main, @function
main:
	li	a5,100
.L2:
	addi	a5,a5,-1
	bne	a5,zero,.L2
	li	a0,0
	ret
	.size	main, .-main
	.ident	"GCC: (xPack GNU RISC-V Embedded GCC x86_64) 13.2.0"
```
**code**
(using: risv-none-elf-gcc -march=rv32i -mabi=ilp32 -O2 -S test.c -o test_o2.s)
```assembly=
.file "test.c"
	.option nopic
	.attribute arch, "rv32i2p1"
	.attribute unaligned_access, 0
	.attribute stack_align, 16
	.text
	.section	.text.startup,"ax",@progbits
	.align	2
	.globl	main
	.type	main, @function
main:
	li	a0,0
	ret
	.size	main, .-main
	.ident	"GCC: (xPack GNU RISC-V Embedded GCC x86_64) 13.2.0"

```
**code**
(using: risv-none-elf-gcc -march=rv32i -mabi=ilp32 -O3 -S test.c -o test_o3.s)
```assembly=
.file "test.c"
	.option nopic
	.attribute arch, "rv32i2p1"
	.attribute unaligned_access, 0
	.attribute stack_align, 16
	.text
	.section	.text.startup,"ax",@progbits
	.align	2
	.globl	main
	.type	main, @function
main:
	li	a0,0
	ret
	.size	main, .-main
	.ident	"GCC: (xPack GNU RISC-V Embedded GCC x86_64) 13.2.0"

```

**code**
(using: riscv-none-elf-gcc -march=rv32i -mabi=ilp32 -Os -S test.c -o test_os.s)
```assembly=
    .file "test.c"
	.option nopic
	.attribute arch, "rv32i2p1"
	.attribute unaligned_access, 0
	.attribute stack_align, 16
	.text
	.section	.text.startup,"ax",@progbits
	.align	2
	.globl	main
	.type	main, @function
main:
	li	a0,0
	ret
	.size	main, .-main
	.ident	"GCC: (xPack GNU RISC-V Embedded GCC x86_64) 13.2.0"
```

**code**
(using: riscv-none-elf-gcc -march=rv32i -mabi=ilp32 -Ofast -S test.c -o test_ofast.s)
```assembly=
.file "test.c"
	.option nopic
	.attribute arch, "rv32i2p1"
	.attribute unaligned_access, 0
	.attribute stack_align, 16
	.text
	.section	.text.startup,"ax",@progbits
	.align	2
	.globl	main
	.type	main, @function
main:
	li	a0,0
	ret
	.size	main, .-main
	.ident	"GCC: (xPack GNU RISC-V Embedded GCC x86_64) 13.2.0"


```


![Screenshot 2024-03-26 234052](https://hackmd.io/_uploads/BktO-9g10.png)
