# Lab 5
Name: Havish Jadav
Roll No.: cs22b026
___
## Question 1
**code**
```assembly=
.data
.word 1 3 2 4 5 9 7 11 8 10 14 89
base: .word 0x10000000
.text
lw x16 base
addi x1 x0 0
addi x5 x0 12
addi x3 x0 3
addi x20 x0 12
loop:
ble x5 x0 exit
lw x4 0(x16)
add x4 x4 x3
sw x4 0(x16)
lw x15 4(x16)
add x15 x15 x3
sw x15 4(x16)
lw x6 8(x16)
add x6 x6 x3
sw x6 8(x16)
lw x7 12(x16)
add x7 x7 x3
sw x7 12(x16)
addi x16 x16 16
addi x5 x5 -4
j loop
exit:
addi x0 x0 0
addi x25 x0 0
lw x16, base
done5:
beq x25, x20, exit2
lw x10 0(x16)
add a0, x0, x10
li a7, 1
ecall
addi x16, x16, 4
addi x25, x25, 1
addi a0 x0 32
li a7 11
ecall
addi x14 x14 10
j done5
exit2:
addi x0 x0 0
```
___
## Question 2
```assembly=
.data
node1: .word 1
.word 0
node2: .word 2
.word 0
node3: .word 3
.word 0
node4: .word 4
.word 0
node5: .word 5
.word 0
node6: .word 6
.word 0
node7: .word 7
.word 0
node8: .word 8
.word 0
node9: .word 9
.word 0
node10: .word 10
.word 0
.text
la x1, node1
la x2, node2
la x3, node3
la x4, node4
la x5, node5
la x6, node6
la x7, node7
la x8, node8
la x9, node9
la x10, node10
sw x2, 4(x1)
sw x3, 4(x2)
sw x4, 4(x3)
sw x5, 4(x4)
sw x6, 4(x5)
sw x7, 4(x6)
sw x8, 4(x7)
sw x9, 4(x8)
sw x10, 4(x9)
exit:
addi x20, x0, 10
addi x25, x0, 0
la x16, node1
done5:
beq x25, x20, exit2
lw x11, 0(x16)
add a0, x0, x11
li a7, 1
ecall
lw x16 4(x16)
addi x25, x25, 1
addi a0, x0, 32
li a7, 11
ecall
addi x14, x14, 10
j done5
exit2:
addi x0, x0, 0
la x1, node1
la x2, node2
la x3, node3
la x4, node4
la x5, node5
la x6, node6
la x7, node7
la x8, node8
la x9, node9
la x10, node10
sw x1, 4(x2)
sw x2, 4(x3)
sw x3, 4(x4)
sw x4, 4(x5)
sw x5, 4(x6)
sw x6, 4(x7)
sw x7, 4(x8)
sw x8, 4(x9)
sw x9, 4(x10)
addi x20, x0, 9
addi x25, x0, 0
la x16, node10
lw x11, 0(x16)
add a0, x0, x11
li a7, 1
ecall
addi a0, x0, 32
li a7, 11
ecall
lw x16 4(x16)
done6:
beq x25, x20, exit4
lw x11, 0(x16)
add a0, x0, x11
li a7, 1
ecall
lw x16 4(x16)
addi x25, x25, 1
addi a0, x0, 32
li a7, 11
ecall
addi x14, x14, 10
j done6
exit4:
addi x0, x0, 0
```
___
## Question 3
**code**
```assembly=
allocate_node:
li t1, 0x8
li a7, 93
ecall
bnez a0, allocation_successful
mv a0, zero
ret
allocation_successful:
li t2, 0
sw t2, 0(a0)
sw t2, 4(a0)
ret
```
___