Question: MIPS Assembly Language and C Language Modify swap.s to translate the following procedure directly to MIPS assembly language. The temp variable, like all local variables

MIPS Assembly Language and C Language

MIPS Assembly Language and C Language Modify swap.s to translate the following

Modify swap.s to translate the following procedure directly to MIPS assembly language. The temp variable, like all local variables in C (when not optimized), is stored on the stack. In other words you cannot use $t0 to hold temp, though you may need it briefly. Hint: you will need to use 6 lw/sw instructions.

This exercise is slightly contrived, and could be easier if we let you optimize and use $t0 to hold the temp variable, part of the point of this exercise is to see what kind of difference optimization can make.

void swap

(int *px, int *py) { int temp; temp = *px; *px = *py; *py = temp; }

Now modify your solution (swap1.s) to implement the following buggy version of the swap procedure. void swap (int *px, int *py) { int *temp; *temp = *px; *px = *py; *py = *temp; }

Q1. The bug in swap2.s is that the temp pointer is dereferenced without being initialized. Why might a programmer not notice this even after testing the buggy swap? In other words: what situation would allow buggy swap to seem to work correctly?

Code given at bottom:

.text

main:

la $a0,n1

la $a1,n2

jal swap

li $v0,1 # print n1 and n2; should be 27 and 14

lw $a0,n1

syscall

li $v0,11

li $a0,' '

syscall

li $v0,1

lw $a0,n2

syscall

li $v0,11

li $a0,' '

syscall

li $v0,10 # exit

syscall

swap: # your code goes here

.data

n1: .word 14

n2: .word 27

(Exercise) Create swap1.s Modify swap.s to translate the following procedure directly to MIPS assembly language. The temp variable, like all local variables in C (when not optimized), is stored on the stack. In other words you cannot use sto to hold temp, though you may need it briefly. Hint: you will need to use 6 1w/sw instructions. This exercise is slightly contrived, and could be easier if we let you optimize and use sto to hold the temp variable, part of the point of this exercise is to see what kind of difference optimization can make. void swap (int *px, int *py) int temp; temppx pytemp (Exercise) Create swap2.s Now modify your solution (swap1.s) to implement the following buggy version of the swap procedure. void swap (int *px, int *py) int temp; Q1. The bug in swap2.s is that the temp pointer is dereferenced without being initialized. Why might a programmer not notice this even after (Exercise) Create swap1.s Modify swap.s to translate the following procedure directly to MIPS assembly language. The temp variable, like all local variables in C (when not optimized), is stored on the stack. In other words you cannot use sto to hold temp, though you may need it briefly. Hint: you will need to use 6 1w/sw instructions. This exercise is slightly contrived, and could be easier if we let you optimize and use sto to hold the temp variable, part of the point of this exercise is to see what kind of difference optimization can make. void swap (int *px, int *py) int temp; temppx pytemp (Exercise) Create swap2.s Now modify your solution (swap1.s) to implement the following buggy version of the swap procedure. void swap (int *px, int *py) int temp; Q1. The bug in swap2.s is that the temp pointer is dereferenced without being initialized. Why might a programmer not notice this even after

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!