binary division program for signed integer, Computer Engineering

Assignment Help:

The program division.c is available for download as part of this assignment. It is a binary division program which works for signed integers. It contains a function, div32, which does the signed division; and a main() program which tests division for several pairs of numbers. You should download, compile, and run it to see the output. Now, re-implement the binary division function, div32, in MIPS assembly code, assuming the following convention for passing arguments:

Register Argument Mechanism

$4 dividend pass by value

$5 divisor pass by value

$6 quotient pass by value

$7 remainder pass by value

Although this is not quite the convention used by a "C" compiler (quotient and remainder are pointers and would otherwise by passed by reference), we will use it here since argument passing mechanisms have not been dealt with in detail at this point in the course. In coding your function it is absolutely essential that the context of the calling program is fully preserved.

Then, re-implement the main() program in MIPS assembly code to test the binary division function. The SPIM environment includes a number of SYSCALL functions for printing strings and integers. Test your functions with the same arrays of test cases given. Your results should be identical. Your assembly program must be fully documented, as follows:

First, at the start of each procedure (main and div32) you should have a list of all the registers that you use, and what each is used for. For example, you should have something like the following at the start of your div32 code (you will have many more registers, probably allocated differently; this is just to give the idea):

#--------------------------------------------------------------------------

# Procedure Name: int div32(long dividend, long divisor,

# long quotient, long remainder)

#

# Description:

#

# Register Allocation: $4: dividend (changed)

# $5: divisor (changed)

# ...

# $10: scratch

# ...

# $17: dividend_sign

# $18: divisor_sign

#--------------------------------------------------------------------------

Second, you should have a comment containing the "C" code that you are translating just before the assembly code implementing that "C" code. You should also have a comment at the end of every line of the assembly code. Here's an example:

#--------------------------------------------------------------------------

# if (dividend < 0) {

# dividend_sign = 1;

# dividend = -dividend;

# }

#--------------------------------------------------------------------------

slt $10, $4, $0 # Check if dividend less than 0

beq $10, $0, div20 # If not, skip to next case

li $17, 1 # dividend_sign = 1

negu $4, $4 # negate dividend

#--------------------------------------------------------------------------

# if (divisor < 0) {

# divisor_sign = 1;

# divisor = -divisor;

# }

#--------------------------------------------------------------------------

div20: slt $10, $5, $0 # Check if divisor less than 0

beq $10, $0, div30 # If not, skip ahead

li $18, 1 # divisor_sign = 1

negu $5, $5 # negate dividend


Related Discussions:- binary division program for signed integer

What is drawbacks of cd- rom, Q. What is Drawbacks of CD- ROM? Drawbac...

Q. What is Drawbacks of CD- ROM? Drawbacks of CD- ROM are as below: 1. It is read-only and can't be updated. 2. It has an access time much longer than magnetic disk dri

Convert a JK flipflop to T type flipflop, With the help of a suitable diagr...

With the help of a suitable diagram, explain how do you convert a JK flipflop to T type flipflop. Ans. As here flip flop is JK flip flop and it is required to convert JK in T.

How do you perform functional testing under load, Functionality under load ...

Functionality under load can be tested by running various Vusers concurrently. By enhancing the amount of Vusers, we can verify how much load the server can sustain.

Write an algorithm to outline the macro-expansion, Write an algorithm to ou...

Write an algorithm to outline the macro-expansion using macro-expansion counter. The flow of control throughout macro expansion can be implemented by using a MEC that is macro-

Concept of multithreading, Concept of Multithreading: This problem ris...

Concept of Multithreading: This problem rises in design of large scale multiprocessors like MPP. So a solution for optimizing this latency must be acquired at. The idea of Mul

What are the role of an operating system, What are the role of an operating...

What are the role of an operating system? Sharing the Processor Virtual Machine: Resource management: Memory Management

Sigmoid units, Sigmoid units: Always remember that the function inside...

Sigmoid units: Always remember that the function inside units take as input the weighted sum, S and of the values coming from the units connected to it. However the function i

What is data hazard in pipelining, What is data hazard in pipelining? What ...

What is data hazard in pipelining? What are the solutions? A data hazard is a situation in which  the pipeline is stalled due to the data to be operated on are delayed for some

What is the prominence of rs232-c in serial communication, What is the prom...

What is the prominence of RS232-C in serial communication?  Name some application where you see its use.  RS-232 stands for Recommend Standard number 232 and C is the latest re

Describe loading disk operating system, Q. Describe Loading Disk Operating ...

Q. Describe Loading Disk Operating System? Different version of DOS, such as 2.0, 3.0, 3.2, 4.0, 5.0, 6.0, 6.2, 6.22, 7.0, 7.2 are present. The newer versions have additional

Write Your Message!

Captcha
Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd