Question

For the following C statement, what is the corresponding RISC-V assembly code? Assume that the variables...

  1. For the following C statement, what is the corresponding RISC-V assembly code? Assume that the variables f, g, h, and i are given and could be considered 32-bit integers as declared in a C program. Assume your own memory addresses and registers to be used.
  • f = g + (h − 5);
  • B[8] = A[i−j];
addi $t0, $t1,-5
add $t2, $t0, $t3
A is in $S6, B is in $S7

Homework Answers

Answer #1

Solution:

I am assuming  variables f, g, h, i, and j are assigned to registers x1, x2, x3, x4, and x5, and the base address of the arrays A and B are in registers s6 and s7, respectively.

1. RISC-V assembly code for f = g + (h − 5);

addi x0, x3, -5 #equivalent to x0 = h - 5 where x0 is temporary register

add x1, x2, x0 #equivalent to x1 = x2 + x0 that is f = g + ( h - 5)

2. RISC-V assembly code for B[8] = A[i−j];​​​​​​​

sub s0, x4, x5 #equivalent to x0 = i - j where s0 is temporary register

add s1, s6, s0 #equivalent to s1 = &A[i-j] where s1 is temporary register

lw s2, 0(s1) #equivalent to s2 = A[i-j] where s2 is temporary register

sw s2, 32(s7) #equivalent to B[8] = A[i-j]

Please give thumbsup, if you like it. Thanks.

Know the answer?
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for?
Ask your own homework help question
Similar Questions
For the MIPS assembly instructions below, what is the corresponding C statement? Assume that the variables...
For the MIPS assembly instructions below, what is the corresponding C statement? Assume that the variables f, g, h, and I are assigned to registers $s0 - $s3, respectively. Assume that the base address of arrays X, Y, and Z are in registers $s4 - $s6, respectively. Be conservative and use a single temp register as possible. It is a C arithmetic command with two source operands and a destination. Each part is 3 points. Add $t0, $s0, $s1 addi...
Question: Write down the corresponding MIPS machine language of the following assembly language code. lw $S0,...
Question: Write down the corresponding MIPS machine language of the following assembly language code. lw $S0, 64($S1) add $t0,$S0,$S1 sub $t1,$S3,$S4 sw $t1,100($S1) addi $S4,$S6,100
(MIPS Assembly Language): Assume the following piece of MIPS code: label1: .text 0x4000fc lui $t0, 1022...
(MIPS Assembly Language): Assume the following piece of MIPS code: label1: .text 0x4000fc lui $t0, 1022 ori $t0, $t0, 2048 srl $t1, $t0, 18 sw $t0, 101($t1) slti $t2, $t1, 5 beq $t2, $0, label3 label2:... ... label3:... a) The code modifies a word in memory at the following address (circle one): (i) 1022 (ii) 101 (iii) 5 (iv) 10220000 (v) Other (provide your own answer): _________________ b) The following value is stored in memory (circle one): (i) 0x17 (ii)...
1. Assume there are three memory locations named h hand area, translate the following expression into...
1. Assume there are three memory locations named h hand area, translate the following expression into MIPS assembly language. No Floating point. Area= 1/2 b. h 2. Show the assembly statement that allocates a word in the data segment named area with an initial value of 10. 3. What are the contents of register $t0, $t1, and $t2? .data str:    .asciiz   "ab" .text main:   la $t0, str li    $t1, 0 loop: lb $t2, ($t0) beqz   $t2, eloop addi $t1,...
2.     Explain each line of the following MIPS assembly language code segment. Write the corresponding C...
2.     Explain each line of the following MIPS assembly language code segment. Write the corresponding C language code and indicate the content of each register with the corresponding variable in C-code. muli $t2, $s1, 4    add $t2, $t4, $t2    lw $t15, 0($t2)    lw $t16, 4($t2)    sw $t16, 0($t2)    sw $t15, 4($t2)
Consider the following C statement:           a = (b + d) + (b – c) +...
Consider the following C statement:           a = (b + d) + (b – c) + (c + d) Which of the following assembly instructions can be used to replicate all or part of this statement in MIPS, without changing or reducing the equation. Assume variables a, b, c, and d are assigned to registers $s0, $s1, $s2 and $s3 respectively. sub $t0, $s2, $s3 sub $t0, $s0, $s3 sub $t1, $s1, $s2 add $t2, $s1, $s3 add $t2, $s0,...
Convert each of the below C code snippet to LEGv8 assembly code. Assume the variables a,...
Convert each of the below C code snippet to LEGv8 assembly code. Assume the variables a, b, and c are stored in registers X19, X20, and X21 respectively. Base address of d is stored in register X22. Comment your assembly code. a. if (a > b) d[a] = b + 8; else d[a] = b - 16; b. for (i=0;i 0) i++; a = d[i] + c; c. i = 0; while (d[i] == b) if ((a - i) >...
Write the C55x assembly code for each of the following C snippet code shown below. Assume...
Write the C55x assembly code for each of the following C snippet code shown below. Assume the 8-bit values a, b, c, and d are stored in locations 0x600, 0x601, 0x602, and 0x603 respectively in the memory. Store the result x in location 0x604 and y in location 0x60C. Do not use software to generate the assembly code and comment your code. x = (a - b)3 - (c*d); for (j=0;j<=200;j++)   y = y + (a * b);
Write the corresponding MIPS I instruction to the C++ code segment below. for (; i <...
Write the corresponding MIPS I instruction to the C++ code segment below. for (; i < 100; i ++) s = s + (2*i + 1); Use the table below for variable-register association Variable i s Register $t0 $t1 Variables s has been initialized with 0; i has been initialized with 1. No need to write instruction for their initializations. The instructions corresponding to the for-loop is labeled as "LOOP". The instructions following the for-loop is labeled by "DONE" (no...
1. In the following C code, elements of each row are stored contiguously in memory. Assume...
1. In the following C code, elements of each row are stored contiguously in memory. Assume each element in an array is a 32-bit integer. p = 0; for (j=0; j<8; ++j) for(i=500; i>0; --i ) {     A[ i] = 2 * B[j]; ++p; } a. How many 32-bit integers can be stored in a 32-byte cache block? b. Which variable references exhibit temporal locality? c. Which variable references exhibit spatial locality?