### LAB 6
NAME: LUKALAPU S V S RAGHURAM
ROLL NO: CS22B035
---
***Q12***
```
cat test.s
it will access contents from the file test.s
it is a short form for concatinate it is also used to combine more than two files together but in this
```
----
***Q13***
```
yes you can optimise the main code
files are attached later
```
***Q15***
```
133 test1.c
877 test1.s
877 test1_o0.s
545 test1_o1.s
529 test1_o2.s
529 test1_o3.s
529 test1_os.s
529 test1_ofast.s
```
---
below are the codes attached
***test1_o0***
```
.file "test1.c"
.option nopic
.attribute arch, "rv32i2p1"
.attribute unaligned_access, 0
.attribute stack_align, 16
.text
.section .rodata
.align 2
.LC0:
.string "%d"
.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
sw zero,-20(s0)
sw zero,-24(s0)
j .L2
.L3:
lw a5,-24(s0)
addi a4,a5,1
lw a5,-24(s0)
slli a5,a5,2
addi a5,a5,-16
add a5,a5,s0
sw a4,-408(a5)
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
lw a1,-20(s0)
lui a5,%hi(.LC0)
addi a0,a5,%lo(.LC0)
call printf
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"
```
---
***test1_o1***
```
.file "test1.c"
.option nopic
.attribute arch, "rv32i2p1"
.attribute unaligned_access, 0
.attribute stack_align, 16
.text
.section .rodata.str1.4,"aMS",@progbits,1
.align 2
.LC0:
.string "%d"
.text
.align 2
.globl main
.type main, @function
main:
addi sp,sp,-16
sw ra,12(sp)
li a5,100
.L2:
addi a5,a5,-1
bne a5,zero,.L2
li a1,4096
addi a1,a1,954
lui a0,%hi(.LC0)
addi a0,a0,%lo(.LC0)
call printf
li a0,0
lw ra,12(sp)
addi sp,sp,16
jr ra
.size main, .-main
.ident "GCC: (xPack GNU RISC-V Embedded GCC x86_64) 13.2.0"
```
---
***test1_o2***
```
.file "test1.c"
.option nopic
.attribute arch, "rv32i2p1"
.attribute unaligned_access, 0
.attribute stack_align, 16
.text
.section .rodata.str1.4,"aMS",@progbits,1
.align 2
.LC0:
.string "%d"
.section .text.startup,"ax",@progbits
.align 2
.globl main
.type main, @function
main:
li a1,4096
lui a0,%hi(.LC0)
addi sp,sp,-16
addi a1,a1,954
addi a0,a0,%lo(.LC0)
sw ra,12(sp)
call printf
lw ra,12(sp)
li a0,0
addi sp,sp,16
jr ra
.size main, .-main
.ident "GCC: (xPack GNU RISC-V Embedded GCC x86_64) 13.2.0"
```
---
***test1_o3***
```
.file "test1.c"
.option nopic
.attribute arch, "rv32i2p1"
.attribute unaligned_access, 0
.attribute stack_align, 16
.text
.section .rodata.str1.4,"aMS",@progbits,1
.align 2
.LC0:
.string "%d"
.section .text.startup,"ax",@progbits
.align 2
.globl main
.type main, @function
main:
li a1,4096
lui a0,%hi(.LC0)
addi sp,sp,-16
addi a1,a1,954
addi a0,a0,%lo(.LC0)
sw ra,12(sp)
call printf
lw ra,12(sp)
li a0,0
addi sp,sp,16
jr ra
.size main, .-main
.ident "GCC: (xPack GNU RISC-V Embedded GCC x86_64) 13.2.0"
```
---
***test1_os***
```
.file "test1.c"
.option nopic
.attribute arch, "rv32i2p1"
.attribute unaligned_access, 0
.attribute stack_align, 16
.text
.section .rodata.str1.4,"aMS",@progbits,1
.align 2
.LC0:
.string "%d"
.section .text.startup,"ax",@progbits
.align 2
.globl main
.type main, @function
main:
li a1,4096
lui a0,%hi(.LC0)
addi sp,sp,-16
addi a1,a1,954
addi a0,a0,%lo(.LC0)
sw ra,12(sp)
call printf
lw ra,12(sp)
li a0,0
addi sp,sp,16
jr ra
.size main, .-main
.ident "GCC: (xPack GNU RISC-V Embedded GCC x86_64) 13.2.0"
```
---
***test1_ofast***
```
.file "test1.c"
.option nopic
.attribute arch, "rv32i2p1"
.attribute unaligned_access, 0
.attribute stack_align, 16
.text
.section .rodata.str1.4,"aMS",@progbits,1
.align 2
.LC0:
.string "%d"
.section .text.startup,"ax",@progbits
.align 2
.globl main
.type main, @function
main:
li a1,4096
lui a0,%hi(.LC0)
addi sp,sp,-16
addi a1,a1,954
addi a0,a0,%lo(.LC0)
sw ra,12(sp)
call printf
lw ra,12(sp)
li a0,0
addi sp,sp,16
jr ra
.size main, .-main
.ident "GCC: (xPack GNU RISC-V Embedded GCC x86_64) 13.2.0"
```
---