Computer Hardware User's Guide
Floating-Point Conversion (IEEE Std. 754)
5-17
Data Formats and Floating-Point Operation
5.4.1.1 IEEE-to-TMS320C3x Floating-Point Format Conversion
Example 5–4 shows the fast conversion from IEEE to ’C3x floating-point format.
It properly handles the general case when 0 <
e
< 255, and also handles 0s (that
is,
e
= 0 and
f
= 0). The other special cases (denormalized, infinity, and NaN)
are not treated and, if present, will give erroneous results.
The fast version of the IEEE-to ’C3x conversion routine was originally developed
by Keith Henry of Apollo Computer, Inc. The other routines were based on this
initial input.
Example 5–4. IEEE-to-TMS320C3x Conversion (Fast Version)
* TITLE IEEE TO TMS320C3x CONVERSION (FAST VERSION)
*
*
* SUBROUTINE FMIEEE
*
* FUNCTION: CONVERSION BETWEEN THE IEEE FORMAT AND THE
* TMS320C3x FLOATING-POINT FORMAT. THE NUMBER TO
* BE CONVERTED IS IN THE LOWER 32 BITS OF R0.
* THE RESULT IS STORED IN THE UPPER 32 BITS OF R0.
* UPON ENTERING THE ROUTINE, AR1 POINTS TO THE
* FOLLOWING TABLE:
*
* (0) 0xFF800000 <–– AR1
* (1) 0xFF000000
* (2) 0x7F000000
* (3) 0x80000000
* (4) 0x81000000
*
* ARGUMENT ASSIGNMENTS:
* ARGUMENT | FUNCTION
* –––––––––––+–––––––––––––––––––––––––––––––––––––
* R0 | NUMBER TO BE CONVERTED
* AR1 | POINTER TO TABLE WITH CONSTANTS
*
* REGISTERS USED AS INPUT: R0, AR1
* REGISTERS MODIFIED: R0, R1
* REGISTER CONTAINING RESULT: R0
*