0% found this document useful (0 votes)
206 views3 pages

Assignment 1

This document contains an assignment for a Computer Architecture course. It includes 5 questions: 1. Write MIPS assembly code to compute the sum of integers from 1 to n, given a C function. 2. Add comments to MIPS code that computes a sum and describe what it does in one sentence. 3. Describe in one sentence what a code fragment does that processes an array, storing results in $v0 and $v1. 4. Write MIPS code for a C for loop that iterates through an array. 5. Provide minimal MIPS instruction sequences for various pseudo-instructions.

Uploaded by

aliazamrana
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
206 views3 pages

Assignment 1

This document contains an assignment for a Computer Architecture course. It includes 5 questions: 1. Write MIPS assembly code to compute the sum of integers from 1 to n, given a C function. 2. Add comments to MIPS code that computes a sum and describe what it does in one sentence. 3. Describe in one sentence what a code fragment does that processes an array, storing results in $v0 and $v1. 4. Write MIPS code for a C for loop that iterates through an array. 5. Provide minimal MIPS instruction sequences for various pseudo-instructions.

Uploaded by

aliazamrana
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

National University

Of Computer & Emerging Sciences Islamabad.


CFD Campus

Assignment # 01
_____________________________________________________________________________________
Course Title: Computer Architecture Sections: A&C Course Code: EE213
Instructors: Engr.Zeba Idrees,Engr.M Habib Ullah Wattoo
Due Date: 03-07-2015 Total Marks: 100
Q: 1
Consider the following C function computing the sum of the sequence:
1, 2, 3, : : : , n.
int sum (int n) {
int s = 0;
for (int i = 0; i < n; ++i)
s += i + 1;
return s;
}
Write a minimal sequence of MIPS assembly instructions that does the identical
operation. Assume that the registers $t0 and $s0 hold the values of the
variables i and s, respectively. As usual, we assume that $s0 has its own value
before the function sum is called, thus this value must be saved on stack (given
by the register $sp) during the execution of the function sum.
Note: the argument, the return value and the return address are in $a0, $v0
and $ra, respectively.

Q: 2

Add comments to the following MIPS code and describe in one sentence what it
computes. Assume that $a0 is used for the input and initially contains n, a positive
integer. Assume that $v0 is used for the output.
begin: addi $t0, $zero, 0
addi $t1, $zero, 1
loop: slt $t2, $a0, $t1
bne $t2, $zero, finish
add $t0, $t0, $t1
addi $t1, $t1, 2
j loop
finish: add $v0, $t0, $zero
Q: 3
The following code fragment processes an array and produces two important
values in registers $v0 and $v1. Assume that the array consists of 5000 words indexed 0
through 4999, and its base address is stored in $a0 and its size (5000) in $a1. Describe in
one sentence what this code does. Specifically, what will be returned in $v0 and $v1?
add $a1, $a1, $a1
add $a1, $a1, $a1
add $v0, $zero, $zero
add $t0, $zero, $zero
outer: add $t4, $a0, $t0
lw $t4, 0($t4)
add $t5, $zero, $zero
add $t1, $zero, $zero
inner: add $t3, $a0, $t1
lw $t3, 0($t3)
bne $t3, $t4, skip
addi $t5, $t5, 1
skip: addi $t1, $t1, 4
bne $t1, $a1, inner
slt $t2, $t5, $v0
bne $t2, $zero, next
add $v0, $t5, $zero
add $v1, $t4, $zero
next: addi $t0, $t0, 4
bne $t0, $a1, outer

Q: 4
Consider the following fragment of C code:
for (i=0; i<=100; i=i+1) { a[i] = b[i] + c; }
Assume that a and b are arrays of words and the base address of a is in $a0 and the base
address of b is in $a1. Register $t0 is associated with variable i and register $s0 with
c. Write the code in MIPS.
Q: 5
For each pseudo-instruction in the following table, produce a minimal sequence of
actual MIPS instructions to accomplish the same thing. You may use the $at for some of
the sequences. In the following table, imm32 refers to a 32-bit constant.

Pseudo-instruction Solution
move $t1, $t2

clear $t5

li $t5, imm32

addi $t5, $t3, imm32

beq $t5, imm32, Label


ble $t5, $t3, Label

bgt $t5, $t3, Label

bge $t5, $t3, Label

You might also like