flat assembler
Message board for the users of flat assembler.
![]() |
Author |
|
vid
good catch
![]() |
|||
![]() |
|
Tomasz Grysztar
What are the exact value ranges that should be disallowed? I'm too lazy to check it myself.
![]() |
|||
![]() |
|
revolution
Tomasz Grysztar wrote: What are the exact value ranges that should be disallowed? I'm too lazy to check it myself. For large numbers: If the exponent goes to all 1's then you have either an infinity or a NaN, so in those cases the assembler should ideally say number out of range. For tiny numbers: If the exponent goes to all 0's then you have either a zero or a denormal. Denormals are not left justified and are stored with one extra shift to keep the MSb in the mantissa. When the mantissa is all 0's then the number is either + or - zero. If the mantissa does go to zero from a non zero decimal input then ideally the assembler should say number out of range. |
|||
![]() |
|
bitRAKE
Does this also effect the dword floats?
|
|||
![]() |
|
revolution
bitRAKE wrote: Does this also effect the dword floats? |
|||
![]() |
|
vid
bitRAKE: FASM first converts to internal 3*32 bit mantissa, 32bit exponent (just like FASMLIB does, wonder why...), and then "downconverts" to desired format. So yeah, it definitively can cause problems with those too, but you have to be really "lucky" to hit it. But still I think this catch deserves Nobel prize for 2008 computing, really a great catch.
|
|||
![]() |
|
Tomasz Grysztar
It's finally fixed in 1.67.31 (I think).
|
|||
![]() |
|
revolution
Erm
![]() Code: dq 5e-324 ;2.147483647526668e-314 9C 2B 13 03 01 00 00 00 |
|||
![]() |
|
Tomasz Grysztar
Corrected.
|
|||
![]() |
|
revolution
The rounding is not working for denormals. Maybe not important:
Code: dq 9.89e-324 ;9.88e-324 02 00 00 00 00 00 00 00 dq 9.88e-324 ;4.94e-324 01 00 00 00 00 00 00 00 |
|||
![]() |
|
Tomasz Grysztar
You're right, I didn't care to round them. Perhaps I will make it in a spare time.
|
|||
![]() |
|
Tomasz Grysztar
Well, got some spare minutes right now.
![]() Can you check how much I broke it this time? ![]() |
|||
![]() |
|
revolution
You get one star:
* Congrats. |
|||
![]() |
|
Madis731
What does one star mean? Is it partly fixed or is a * a REALLY good thing ^o)
|
|||
![]() |
|
revolution
Stars are VERY VERY hard to get. They don't come freely. If someone gets a star you can be sure it is for hard work and diligence above and beyond the normal requirement. So in this case, one star means "a REALLY good thing".
|
|||
![]() |
|
< Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2020, Tomasz Grysztar. Also on GitHub, YouTube, Twitter.
Website powered by rwasa.