# Lab 05 Name: CHATSE SIDDHANT MADHUKAR Roll No.: CS22B016 --- ## Question 1 **Code:** ```assembly= .data arr: .word 11 12 13 14 15 16 17 18 19 20 21 22 .text addi x1 x0 3 addi x2 x0 12 la x16 arr loop: lw x5 44(x16) add x5 x5 x1 sw x5 44(x16) addi x2 x2 -1 lw x5 40(x16) add x5 x5 x1 sw x5 40(x16) addi x2 x2 -1 lw x5 36(x16) add x5 x5 x1 sw x5 36(x16) addi x2 x2 -1 lw x5 32(x16) add x5 x5 x1 sw x5 32(x16) addi x2 x2 -1 addi x16 x16 -16 bne x2 x0 loop exit: la x16 arr addi x2 x0 0 addi x7 x0 12 print_loop: beq x2 x7 print_exit lw x5 0(x16) addi a0 x5 0 li a7 1 ecall addi a0 x0 32 li a7 11 ecall addi x16 x16 4 addi x2 x2 1 j print_loop print_exit: li a7, 10 ecall ``` **Output:** 14 15 16 17 18 19 20 21 22 23 24 25 --- ## Question 2 **Code:** ```assembly= .data Node_1: .word 11 .word 0 Node_2: .word 12 .word 0 Node_3: .word 13 .word 0 Node_4: .word 14 .word 0 Node_5: .word 15 .word 0 Node_6: .word 16 .word 0 Node_7: .word 17 .word 0 Node_8: .word 18 .word 0 Node_9: .word 19 .word 0 Node_10: .word 20 .word 0 .text la x3 , Node_1 la x4 , Node_2 la x5 , Node_3 la x6 , Node_4 la x7 , Node_5 la x8 , Node_6 la x9 , Node_7 la x10 , Node_8 la x11 , Node_9 la x12 ,Node_10 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) sw x11 ,4(x10) sw x12 ,4(x11) addi x13 x13 1 addi x14 x14 20 addi x18 x0 5 p_1: .data str:.string "Before reverse:" .text la a0 str li a7 4 ecall p_loop_1: beqz x3 print_new_line lw x26, 0(x3) add a0, x0, x26 li a7, 1 ecall lw x3 4(x3) addi x25, x25, 1 addi a0 x0 32 li a7 11 ecall j p_loop_1 print_new_line: .data string_2:.string "\n" .text la a0 string_2 li a7 4 ecall return: la x3 Node_1 la x27 Node_1 reverse: beqz x27 return2 lw t5 4(x27) sw t4 4(x27) mv t4 x27 mv x27 t5 addi x23 x23 1 j reverse return2: la x3 Node_1 la x27 Node_10 addi x25 x0 0 p_2: .data string_1:.string "After reverse:" .text la a0 string_1 li a7 4 ecall p_loop_2: beqz x27 exit lw x26, 0(x27) add a0, x0, x26 li a7, 1 ecall lw x27 4(x27) addi x25, x25, 1 addi a0 x0 32 li a7 11 ecall j p_loop_2 exit: addi x0 x0 0 ``` **Output:** Before reverse : 11 12 13 14 15 16 17 18 19 20 After reverse : 20 19 18 17 16 15 14 13 12 11 **Explaination:** In the context of RISC-V assembly language, a linked list typically refers to a data structure where each element contains a pointer to the next element in memory. This structure facilitates dynamic memory allocation and efficient traversal, commonly used in implementing various algorithms and data structures in low-level programming. --- ## Question 3 **Code:** ```assembly= .equ N_size, 8 .equ N_value_offset, 0 .equ N_next_offset, 4 Allocate_Node: li a0, N_size beqz a0, Allocation_Failed sw a1, N_value_offset(a0) li t0, 0 sw t0, N_next_offset(a0) ret Allocation_Failed: ret ```