logo Use CA10RAM to get 10%* Discount.
Order Nowlogo
(5/5)

Endor FP 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)

INSTRUCTIONS TO CANDIDATES
ANSWER ALL QUESTIONS

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)

Endor FP

On Endor, they use an 8-bit FP format in all their computer systems. The Ewoks, the residents of Endor, have collected coordinates for several key Imperial bases. It is critical that these coordinates are uploaded to the computer on the Millennium Falcon. R2 can transfer the raw data from the Endorian Komputer to a file on the Millennium Falcon’s old computer system. Your mission is to read the file of binary 8-bit FP numbers and convert them to the IEEE Single Precision (32 bit) format that the Millennium Falcon’s computer can read.

Endor FP Format

 

The Endor-FP format is similar to the one we studied in class with a few twists. It has a sign bit,

3 bits of biased exponent, and 4 bits of mantissa.  (Ewoks live in a low precision world, so 8-bit

FP was fine for their purposes).

The following figure illustrates the bit assignments:

Endor-FP Format

sign

(1)

exponent

(3)

mantissa

(4)

There is an implied “1.” in front of the mantissa.  Endor-FP does not support denormal numbers

(numbers less than 1.0 x 2-3).

Number                           Encoding in 8-bits

 

+0.0                                 8’b0000_0000 (8bits of 0in binary)

 

-0.0                                  8’b1000_0000

 

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

 

The bias for the IEEE Format is 127(base 10) and the format uses an implied 1.

The smallest representable exponent is -126which is represented as 8’b0000_0001.  The

exponent code 8’b0000_0000is not used by our program.1

-0 is 1followed by 31 0’s.

However, +0is 32bits of 0and

Summary of select Conversions (0’s, min, max values)

 

EndorFP         Endor 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

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.

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,

$ ./endorfp 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.

(5/5)
Attachments:

Related Questions

. Introgramming & Unix Fall 2018, CRN 44882, Oakland University Homework Assignment 6 - Using Arrays and Functions in C

DescriptionIn this final assignment, the students will demonstrate their ability to apply two ma

. The standard path finding involves finding the (shortest) path from an origin to a destination, typically on a map. This is an

Path finding involves finding a path from A to B. Typically we want the path to have certain properties,such as being the shortest or to avoid going t

. Develop a program to emulate a purchase transaction at a retail store. This program will have two classes, a LineItem class and a Transaction class. The LineItem class will represent an individual

Develop a program to emulate a purchase transaction at a retail store. Thisprogram will have two classes, a LineItem class and a Transaction class. Th

. SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of Sea Ports. Here are the classes and their instance variables we wish to define:

1 Project 1 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of

. Project 2 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of Sea Ports. Here are the classes and their instance variables we wish to define:

1 Project 2 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of

Ask This Question To Be Solved By Our ExpertsGet A+ Grade Solution Guaranteed

expert
Um e HaniScience

964 Answers

Hire Me
expert
Muhammad Ali HaiderFinance

807 Answers

Hire Me
expert
Husnain SaeedComputer science

655 Answers

Hire Me
expert
Atharva PatilComputer science

760 Answers

Hire Me
June
January
February
March
April
May
June
July
August
September
October
November
December
2025
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
SunMonTueWedThuFriSat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
00:00
00:30
01:00
01:30
02:00
02:30
03:00
03:30
04:00
04:30
05:00
05:30
06:00
06:30
07:00
07:30
08:00
08:30
09:00
09:30
10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00
14:30
15:00
15:30
16:00
16:30
17:00
17:30
18:00
18:30
19:00
19:30
20:00
20:30
21:00
21:30
22:00
22:30
23:00
23:30