- #1
jiggleswiggly
- 4
- 0
so i have swap.s
my goal is to:
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.
i am confused on jal and jr's though...
for swap could I just do:
or do i need to save to the stack and such?
Code:
.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,'\n'
syscall
li $v0,10 # exit
syscall
swap:
L1:
.data
n1: .word 14
n2: .word 27
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.
Code:
void swap (int *px, int *py) {
int temp;
temp = *px;
*px = *py;
*py = temp;
}
for swap could I just do:
Code:
xor $a0 $a0 $a1
xor $a1 $a0 $a1
xor $a0 $a0 $a1
jr $ra
or do i need to save to the stack and such?