辅导案例-59PM -Assignment 5

欢迎使用51辅导,51作业君孵化低价透明的学长辅导平台,服务保持优质,平均费用压低50%以上! 51fudao.top
CSE30, Fall 2020
Assignment 5
Due: Wed Nov 18th, 2020 @11:59PM

Please read over the entire assignment before starting to get a sense of what you will need to
get done in the next week.

You MUST run the assignment on the pi cluster. You HAVE to ssh: You will not be able to
compile or run the assignment otherwise.
Table of Contents
1. Learning Goals
2. How the Program Works
a. Arguments
b. Required Methods
3. Getting Started
4. Testing
5. Style Requirements
6. Submitting
7. Grading Breakdown
Learning Goals
● Programming in ARM assembly
● Working with floating point numbers
● Coordinating a program with both ARM assembly and C code (you aren’t writing in C)
FP
Your goal for this assignment is to read the file of binary 8-bit FP numbers and convert them to
the IEEE Single Precision (32 bit) format.

FP Format
The FP format is similar to the one we studied in class. It has a sign bit, 3 bits of biased
exponent, and 4 bits of mantissa.


CSE30, Fall 2020
The following figure illustrates the bit assignments:

FP Format
sign
(1)
exponent
(3)
mantissa
(4)

There is an implied “1.” in front of the mantissa. FP does not support denormal numbers
(numbers less than 1.0 x 2-3).

Number Encoding in 8-bits
+0.0 8’b0000_0000 (8 bits of 0 in binary)
-0.0 8’b1000_0000

Number 8-Bit
Representation
Binary
Representation
Base 10
Representation
Largest Positive # 8’b0111_1111 2^4 * 5’b1.1111 5’b11111 = 31
Smallest Positive # 8’b0000_0001 2^-3 * 5’b1.0001 ⅛ + 1/128 = 0.1328125
Largest Negative # 8’b1111_1111 -2^4 * 5’b1.1111 -5’b11111 = -31
Smallest Negative # 8’b1000_0001 -2^-3 * 5’b1.0001 -( ⅛ + 1/128) = -0.1328125


IEEE-754 Single Precision Format
sign
(1)
exponent
(8)
mantissa
(23)


The bias for the IEEE Format is 127 (base 10) and the format uses an implied 1.
The smallest representable exponent is -126 which is represented as 8’b0000_0001. The
exponent code 8’b0000_0000 is not used by our program.1 However, +0 is 32 bits of 0 and -
0 is 1 followed by 31 0’s.

1 the exponent code 8’b0000_0000 represents denormal numbers where there is no implied 1. In this
assignment you will not need to use denormal representations.
CSE30, Fall 2020

Summary of select Conversions (0’s, min, max values)
FP 8-bit FP IEEE-754 Single
+0 0000_0000 0x00000000
-0 1000_0000 0x80000000
0.1328125 0000_0001 0x3e080000
-0.1328125 1000_0001 0xbe080000
31 0111_1111 0x41f80000
-31 1111_1111 0xc1f80000
Your Mission
Your program will take a binary file name as an argument. Read in the file that is the argument
passed to your program. This file is a raw binary file containing just bytes of coordinate data. For
each byte in the file, decode that byte and convert it into IEEE FP format and print it.

For example,

$ ./convertfp topsecret.bin

would read in the file topsecret.bin, convert each byte to a floating point number, and print
those numbers as decimal values to stdout. You can assume that a valid binary file is used and
there won’t be other arguments given.
Arguments

Arguments Description
convertfp This is the executable
.bin This .bin file contains binary information in the form of
bytes of FP data. You will read this file one byte at a time,
convert each number to IEEE FP format, and print it to the
screen, one number per line.

CSE30, Fall 2020
Files and Methods
You are provided 4 files:

1. Makefile (DO NOT EDIT)
2. main.c (DO NOT EDIT)
3. fp2float.s
4. makebin.c (DO NOT EDIT: Described below under Testing)
1. main.c
This file is provided for you and already complete. DO NOT EDIT!

int main(int argc, char **argv)
Description
This file reads in the contents of the binary file, calls the below FP2float routine, and prints
the decoded bytes to standard out. For each decoded byte from the binary input file, it will
print the following three values on one line: the FP value, the IEEE FP value, and the decimal
value.
2. fp2float.s
This file contains two routines in ARM assembly that you will complete.

float FP2float(unsigned int Num);
Description
Write a routine called FP2float implemented in CSE 30 ARMv6 assembler (your routine is
only allowed to use the cse30 subset of ARMv6).

FP2float is called in the main method of main.c.

The routine FP2float should convert all the non-zero input cases - converting Num to an
IEEE single precision float. If Num is a +0 or a -0 as described above, it should call the
routine zeroFP2float (which is in the same file, described below).
Parameters
CSE30, Fall 2020
unsigned int Num 32-bit integer representation of an 8-bit FP number read
from the input file (The value of the parameter is stored in
R0 and you should store the return value in R0).

zeroFP2float
Description
This routine should be called from within the assembly routine FP2float if the Num passed
in to it is a +0 or a -0 (The value of the parameter is stored in R0 and you should store the
return value in R0).
Parameters
unsigned int Num 32-bit integer representation of an 8-bit FP number read
from the input file (This parameter should still be in register
R0. You should store the return value in R0)
Getting Started
Instructions to Run Your Program
In order to run your program you MUST ssh into the pi-cluster on ieng6. Both your ieng6 and pi-
cluster accounts share the same files so anything you copy onto the lab machines (scp to ieng6)
will ALSO be on the pi-cluster when you ssh in.
From the lab machines
1. Open a Terminal
2. Download the starter code
3. ssh into the pi-cluster using the following command:
$ ssh @pi-cluster.ucsd.edu
ex: $ ssh [email protected]
4. You are ready to start!

From Your Personal Computer
1. Open a Terminal
2. ssh into your ieng6 account
3. Download the starter code
4. ssh into the pi-cluster using the following command:
$ ssh @pi-cluster.ucsd.edu
CSE30, Fall 2020
ex: $ ssh [email protected]
5. You are ready to start! (REMEMBER: when you exit, you need to do so twice if you want
to get back to your local machine!)

Running Your Program
We’ve provided you with a Makefile and starter code.

Makefile: The Makefile provided will create a convertfp executable from the source files
provided. Compile it by typing make into the terminal. Run make clean to remove files generated
by make.

gdb: To run with gdb, the command is gdb [executable] to start gdb with your executable.
r [arguments] will run your executable with [arguments]

Allowed Instructions
You are only allowed to use the instructions provided in the ARM ISA Green Card. Failure
to comply will result in a score of 0 on the assignment.

Testing
1. The file makebin.c has been provided so that you can easily create examples to test
your code on.

Example contents of an input file (somehexnums) given as an argument to makebin:

0x0
0x80
0x01
0x81
0x7f
0xff

Example on how to use makebin:

$ ./makebin somehexnums somehexnums.bin

Note: if you try to edit somehexnums.bin you will see a bunch of gibberish, as it's a binary file.
CSE30, Fall 2020
Style Requirements
Points WILL be given for style, and teaching staff won't be able to provide assistance or
regrades unless code is readable. Please follow these Style Guide:lines for ARM assembly.
Submission and Grading
Submitting
1. Submit your files to Gradescope under the assignment titled “Assignment 5”. You will
submit the following files :

● fp2float.s
● README

To upload multiple files to gradescope, zip all of the files and upload the zip to
the assignment, or you can multi-select all files and drag and drop. Ensure that the files
you submit are not in a nested folder.

2. After submitting, the autograder will run a few tests:
a. Checks that all required files were submitted
b. Checks that your source code compiles
c. Runs test input on your program and compares your output to ours
Grading Breakdown

Make sure to check the autograder output after submitting! We will be running additional
tests after the deadline passes to determine your final grade.

You will receive 1 point for each test that you pass on Gradescope, and points for style. Make
sure your assignment compiles correctly through the provided Makefile on the pi-cluster. Any
assignment that does not compile will receive 0 credit. This assignment will also have 3
points dedicated to style (see above ARM assembly style requirements). We will be comparing
the standard out of your program to ours, so please ensure nothing else is printed than what is
printed by the provided main.

欢迎咨询51作业君
51作业君

Email:51zuoyejun

@gmail.com

添加客服微信: abby12468