|
Ghidra Decompiler Analysis Engine
|
Encoding information for a single floating-point format. More...
#include <float.hh>
Public Types | |
| enum | floatclass { normalized = 0, infinity = 1, zero = 2, nan = 3, denormalized = 4 } |
| The various classes of floating-point encodings. More... | |
Public Member Functions | |
| FloatFormat (int4 sz) | |
| Construct default IEEE 754 standard settings. More... | |
| double | getHostFloat (uintb encoding, floatclass *type) const |
| Convert an encoding into host's double. More... | |
| uintb | getEncoding (double host) const |
| Convert host's double into this encoding. More... | |
| uintb | convertEncoding (uintb encoding, const FloatFormat *formin) const |
| Convert between two different formats. More... | |
| uintb | extractFractionalCode (uintb x) const |
| Extract the fractional part of the encoding. More... | |
| bool | extractSign (uintb x) const |
| Extract the sign bit from the encoding. More... | |
| int4 | extractExponentCode (uintb x) const |
| Extract the exponent from the encoding. More... | |
| uintb | opEqual (uintb a, uintb b) const |
| Equality comparison (==) More... | |
| uintb | opNotEqual (uintb a, uintb b) const |
| Inequality comparison (!=) More... | |
| uintb | opLess (uintb a, uintb b) const |
| Less-than comparison (<) More... | |
| uintb | opLessEqual (uintb a, uintb b) const |
| Less-than-or-equal comparison (<=) More... | |
| uintb | opNan (uintb a) const |
| Test if Not-a-Number (NaN) More... | |
| uintb | opAdd (uintb a, uintb b) const |
| Addition (+) More... | |
| uintb | opDiv (uintb a, uintb b) const |
| Division (/) More... | |
| uintb | opMult (uintb a, uintb b) const |
| Multiplication (*) More... | |
| uintb | opSub (uintb a, uintb b) const |
| Subtraction (-) More... | |
| uintb | opNeg (uintb a) const |
| Unary negate. More... | |
| uintb | opAbs (uintb a) const |
| Absolute value (abs) More... | |
| uintb | opSqrt (uintb a) const |
| Square root (sqrt) More... | |
| uintb | opTrunc (uintb a, int4 sizeout) const |
| Convert floating-point to integer. More... | |
| uintb | opCeil (uintb a) const |
| Ceiling (ceil) More... | |
| uintb | opFloor (uintb a) const |
| Floor (floor) More... | |
| uintb | opRound (uintb a) const |
| Round. More... | |
| uintb | opInt2Float (uintb a, int4 sizein) const |
| Convert integer to floating-point. More... | |
| uintb | opFloat2Float (uintb a, const FloatFormat &outformat) const |
| Convert between floating-point precisions. More... | |
| void | saveXml (ostream &s) const |
| Save the format to an XML stream. More... | |
| void | restoreXml (const Element *el) |
| Restore the format from XML. More... | |
Encoding information for a single floating-point format.
This class supports manipulation of a single floating-point encoding. An encoding can be converted to and from the host format and convenience methods allow p-code floating-point operations to be performed on natively encoded operands. This follows the IEEE754 standards.
| FloatFormat::FloatFormat | ( | int4 | sz | ) |
Construct default IEEE 754 standard settings.
Set format for a given encoding size according to IEEE 754 standards
| sz | is the size of the encoding in bytes |
| uintb FloatFormat::convertEncoding | ( | uintb | encoding, |
| const FloatFormat * | formin | ||
| ) | const |
Convert between two different formats.
| encoding | is the value in the other FloatFormat |
| formin | is the other FloatFormat |
| int4 FloatFormat::extractExponentCode | ( | uintb | x | ) | const |
Extract the exponent from the encoding.
| x | is an encoded floating-point value |
| uintb FloatFormat::extractFractionalCode | ( | uintb | x | ) | const |
Extract the fractional part of the encoding.
| x | is an encoded floating-point value |
| bool FloatFormat::extractSign | ( | uintb | x | ) | const |
Extract the sign bit from the encoding.
| x | is an encoded floating-point value |
| uintb FloatFormat::getEncoding | ( | double | host | ) | const |
Convert host's double into this encoding.
| host | is the double value to convert |
| double FloatFormat::getHostFloat | ( | uintb | encoding, |
| floatclass * | type | ||
| ) | const |
Convert an encoding into host's double.
| encoding | is the encoding value |
| type | points to the floating-point class, which is passed back |
| uintb FloatFormat::opAbs | ( | uintb | a | ) | const |
Absolute value (abs)
| a | is an encoded floating-point value |
| uintb FloatFormat::opAdd | ( | uintb | a, |
| uintb | b | ||
| ) | const |
Addition (+)
| a | is the first floating-point value |
| b | is the second floating-point value |
| uintb FloatFormat::opCeil | ( | uintb | a | ) | const |
Ceiling (ceil)
| a | is an encoded floating-point value |
| uintb FloatFormat::opDiv | ( | uintb | a, |
| uintb | b | ||
| ) | const |
Division (/)
| a | is the first floating-point value |
| b | is the second floating-point value |
| uintb FloatFormat::opEqual | ( | uintb | a, |
| uintb | b | ||
| ) | const |
Equality comparison (==)
| a | is the first floating-point value |
| b | is the second floating-point value |
| uintb FloatFormat::opFloat2Float | ( | uintb | a, |
| const FloatFormat & | outformat | ||
| ) | const |
Convert between floating-point precisions.
| a | is an encoded floating-point value |
| outformat | is the desired output FloatFormat |
| uintb FloatFormat::opFloor | ( | uintb | a | ) | const |
Floor (floor)
| a | is an encoded floating-point value |
| uintb FloatFormat::opInt2Float | ( | uintb | a, |
| int4 | sizein | ||
| ) | const |
Convert integer to floating-point.
| a | is a signed integer value |
| sizein | is the number of bytes in the integer encoding |
| uintb FloatFormat::opLess | ( | uintb | a, |
| uintb | b | ||
| ) | const |
Less-than comparison (<)
| a | is the first floating-point value |
| b | is the second floating-point value |
| uintb FloatFormat::opLessEqual | ( | uintb | a, |
| uintb | b | ||
| ) | const |
Less-than-or-equal comparison (<=)
| a | is the first floating-point value |
| b | is the second floating-point value |
| uintb FloatFormat::opMult | ( | uintb | a, |
| uintb | b | ||
| ) | const |
Multiplication (*)
| a | is the first floating-point value |
| b | is the second floating-point value |
| uintb FloatFormat::opNan | ( | uintb | a | ) | const |
Test if Not-a-Number (NaN)
| a | is an encoded floating-point value |
| uintb FloatFormat::opNeg | ( | uintb | a | ) | const |
Unary negate.
| a | is an encoded floating-point value |
| uintb FloatFormat::opNotEqual | ( | uintb | a, |
| uintb | b | ||
| ) | const |
Inequality comparison (!=)
| a | is the first floating-point value |
| b | is the second floating-point value |
| uintb FloatFormat::opRound | ( | uintb | a | ) | const |
Round.
| a | is an encoded floating-point value |
| uintb FloatFormat::opSqrt | ( | uintb | a | ) | const |
Square root (sqrt)
| a | is an encoded floating-point value |
| uintb FloatFormat::opSub | ( | uintb | a, |
| uintb | b | ||
| ) | const |
Subtraction (-)
| a | is the first floating-point value |
| b | is the second floating-point value |
| uintb FloatFormat::opTrunc | ( | uintb | a, |
| int4 | sizeout | ||
| ) | const |
Convert floating-point to integer.
| a | is an encoded floating-point value |
| sizeout | is the desired encoding size of the output |
| void FloatFormat::restoreXml | ( | const Element * | el | ) |
Restore the format from XML.
Restore object from a <floatformat> XML tag
| el | is the element |
| void FloatFormat::saveXml | ( | ostream & | s | ) | const |
Save the format to an XML stream.
Write the format out to a <floatformat> XML tag.
| s | is the output stream |
1.8.17