News:

Masm32 SDK description, downloads and other helpful links
Message to All Guests

Main Menu

RosAsm update - Fev-2019 (V2.055b)

Started by guga, February 12, 2019, 01:48:15 PM

Previous topic - Next topic

guga

Small Update

Fixed FPU for debugger and disassembler.

- Added the identification of Subnormal numbers (Imprecise FPU) to be displayed on the debugger. Now whenever the debugger identifies a Floating Point number that is imprecise (subnormal) it adds a "(Bad)" label at the end of the number meaning that this is below the limit for a FPU (3.6e-4932).
- Updated the disassembler to it properly identify the Subnormal numbers in FPU. Whenever it find a Subnormal number, it will convert it to decimal Ascii, but will add an extra comment containing the bytes of the FPU data. Ex:
[<16 Data05642E0: T$ 1.18973149535723177e+4932, T$ -1.18973149535723177e+4932
                 T$ -1.18973149535723177e+4932, T$ 5.12014241972878135e-4937; Found Bad number (subnormal/imprecise number). Bytes correspondent are: B$ 0FE, 07F, 0, 0, 0C0, 07F, 0, 0, 0, 0
                 T$ 3.79714090567763482e-4932; Found Bad number (subnormal/imprecise number). Bytes correspondent are: B$ 0, 0, 0, 080, 01, 0, 090, 090, 0, 0
                 B$ 0, 0, 0, 0, 0, 0]

New test Version 2.054h
Portal
Forum



V 2.055b
Fixed a Bug on the detection of denormal values in FPU for the debugger and disassembler. Now, it can properly identify denormal(Subnormal) values.
New test Version 2.055b
Portal
Forum
Coding in Assembly requires a mix of:
80% of brain, passion, intuition, creativity
10% of programming skills
10% of alcoholic levels in your blood.

My Code Sites:
http://rosasm.freeforums.org
http://winasm.tripod.com

guga

#1
New Update
V 2.055a

Fixed FPU routine used on the debugger to identify NAN, Infinite, QNAN, Indefinite. The fixes are in the function: RealTenFPUNumberCategory and FloatToUString. Added 4 new FPU error categories to avoid Unknown FPU error. Those new errors Flags identifies when a TenByte does not contains the Integer Bit set (63th bit of the tenbyte that is the same as 31th bit of it´s 2nd dword). On such cases of lack of a integer bit, the FPU operators will simply refuses to process the TenByte number since it contains an error. So, to prevent such things,  i created a new category of errors to help identify all of this.

        SpecialFPU_SpecialIndefQNan         10      Special INDEFINITE QNAN (Same as QNAN, but happened on an TenByte without the integer bit set)
        SpecialFPU_SpecialIndefSNan         11      Special INDEFINITE SNAN (Same as SNAN, but happened on an TenByte without the integer bit set)
        SpecialFPU_SpecialIndefNegInfinite  12      Special INDEFINITE Negative Infinite (Same as Negative Infinite, but happened on an TenByte without the integer bit set)
        SpecialFPU_SpecialIndefPosInfinite  13      Special INDEFINITE Positive Infinite (Same as Positive Infinite, but happened on an TenByte without the integer bit set)

Also created a category to identify zeros. When a negative zero is found, it simply set to the same category as zero. After all, there´s no such a thing as a -0.
SpecialFPU_Zero                     4       The FPU contains a valid zero number

So, the full set of new flags are as follows:


        Equate                              Value   Description
       
        SpecialFPU_PosValid                 0       The FPU contains a valid positive number.
        SpecialFPU_NegValid                 1       The FPU contains a valid negative number.
        SpecialFPU_PosSubNormal             2       The FPU produced a positive Subnormal (denormalized) number.
                                                    Although it´s range is outside the range 3.6...e-4932, the number lost it´ precision, but it is still valid
                                                    Ex: 0000 00000000 00000000
                                                        0000 00000000 FFFFFFFF
                                                        0000 00000000 00008000
                                                        0000 00000001 00000000
                                                        0000 FFFFFFFF FFFFFFFF
        SpecialFPU_NegSubNormal             3       The FPU produced a negative Subnormal (denormalized) number.
                                                    Although it´s range is outside the range -3.6...e-4932, the number lost it´ precision, but it is still valid
                                                    Ex: 8000 00000000 00000000 (0) (Negative zero must be considered only as zero)
                                                        8000 00000000 FFFFFFFF (-0.0000000156560127730E-4933)
                                                        8000 01000000 00000000 (-0.2626643080556322880E-4933)
                                                        8000 FFFFFFFF 00000001 (-6.7242062846585856000E-4932)
        SpecialFPU_Zero                     4       The FPU contains a valid zero number
        SpecialFPU_QNAN                     5       QNAN - Quiet NAN (Not a number)
        SpecialFPU_SNAN                     6       SNAN - Signaling NAN (Not a number)
        SpecialFPU_NegInf                   7       Negative Infinite
        SpecialFPU_PosInf                   8       Positive Infinite
        SpecialFPU_Indefinite               9       Indefinite

        These 4 equates below are not the official ones from IEEE. They were created to represente the cases when the Integer bit of the TenByte was not
        present by some error on compilers. A tenbyte always should have this bit settled (value = 1). When it is not settled the FPU simply will
        refuses to process. To handle this lack of category of error we created the 4 ones below.
        The integer bit is the 63th bit of the tenbyte (or 31 of the 2nd dword) was not set
       
        SpecialFPU_SpecialIndefQNan         10      Special INDEFINITE QNAN (Same as QNAN, but happened on an TenByte without the integer bit set)
        SpecialFPU_SpecialIndefSNan         11      Special INDEFINITE SNAN (Same as SNAN, but happened on an TenByte without the integer bit set)
        SpecialFPU_SpecialIndefNegInfinite  12      Special INDEFINITE Negative Infinite (Same as Negative Infinite, but happened on an TenByte without the integer bit set)
        SpecialFPU_SpecialIndefPosInfinite  13      Special INDEFINITE Positive Infinite (Same as Positive Infinite, but happened on an TenByte without the integer bit set)


New test Version 2.055a
Portal
Forum


Many tks to Raymond,  JJ and AW
Coding in Assembly requires a mix of:
80% of brain, passion, intuition, creativity
10% of programming skills
10% of alcoholic levels in your blood.

My Code Sites:
http://rosasm.freeforums.org
http://winasm.tripod.com

guga

V 2.055b
Fixed a Bug on the detection of denormal values in FPU for the debugger and disassembler. Now, it can properly identify denormal(Subnormal) values.
New test Version 2.055b
Portal
Forum

Many tks to JJ to help detecting this bug :)  :t
Coding in Assembly requires a mix of:
80% of brain, passion, intuition, creativity
10% of programming skills
10% of alcoholic levels in your blood.

My Code Sites:
http://rosasm.freeforums.org
http://winasm.tripod.com