flat assembler
Message board for the users of flat assembler.
Index
> Compiler Internals > FASM crashes with "if (~eq) && (~)" |
Author |
|
LocoDelAssembly 23 Dec 2006, 05:43
Both works fine in FASMW 1.64 (throws the appropiate error of course but without any crash).
|
|||
23 Dec 2006, 05:43 |
|
LocoDelAssembly 27 Dec 2006, 16:26
This bug keeps in version 27 December 2006
|
|||
27 Dec 2006, 16:26 |
|
Tomasz Grysztar 27 Dec 2006, 16:34
There would be a version number change if there was a modification of core. The frequent updates are due to the interface development (FASMW/FASMD mainly - note that packages for Linux/Unix were not updated).
|
|||
27 Dec 2006, 16:34 |
|
Tomasz Grysztar 27 Dec 2006, 19:12
I guess you were concerned because of the delay between the report and the fix?
Well, it seems that the server has been updated with a new version of Tomasz, which appears to be a bit slower... Anyway, 1.67.18 is out. |
|||
27 Dec 2006, 19:12 |
|
LocoDelAssembly 27 Dec 2006, 19:37
hahaha, thanks for the fix
BTW, it's OK to no report any error? the following code compiles a nicely 0 byte binary Code: if (~eq) && () db "Hello" end if FASM 1.64 inmediately refuses to compile that code telling that there is an invalid value. Things like "if (~eq) && (~ /-*+-)" is also acepted by the lastest version but not accepted by FASM 1.64 and both doesn't accept "if (~eq) && ~ /-*+-" |
|||
27 Dec 2006, 19:37 |
|
Tomasz Grysztar 27 Dec 2006, 19:51
This is the so called "lazy evaluation" - when the value before "&" is false, the rest is not even evaluated. Because of the bug that was corrected by 1.67.17, the earlier versions did not skip logical values containing round brackets correctly, however. And the fix in 1.67.17 contained a mistake that made the reported crash.
PS. Latest one DOES accept "if (~eq) && ~ /-*+-". PS2. Note that "&&" is interpreted as "& (empty logical value) &". |
|||
27 Dec 2006, 19:51 |
|
LocoDelAssembly 27 Dec 2006, 20:18
Quote:
You're right :S Well, it's a little strange to allow invalid expressions, I though that this "lazy evaluation" was just not evaluate subexpresions when not needed BUT still verifying the validity of the entire expression once. Quote:
Sometimes I feel like writing in C apparently |
|||
27 Dec 2006, 20:18 |
|
Tomasz Grysztar 27 Dec 2006, 21:28
I was still too hasty, one more correction was needed. There's a silent update, don't tell anyone.
LocoDelAssembly wrote: Well, it's a little strange to allow invalid expressions, I though that this "lazy evaluation" was just not evaluate subexpresions when not needed BUT still verifying the validity of the entire expression once. The validity of the ENTIRE expression is still checked - the "if (~eq) && ~ /-*+-" is valid expression, but "if (~eq) & (~ /-*+-" is not. The values themselves are not checked, but since you can compare almost anything with the EQ or EQTYPE operators, that's not that strange. |
|||
27 Dec 2006, 21:28 |
|
LocoDelAssembly 27 Dec 2006, 21:55
OK
|
|||
27 Dec 2006, 21:55 |
|
vid 31 Dec 2006, 08:30
just wondering: any chance to use EQ and EQTYPE on "(" and ")" ?
|
|||
31 Dec 2006, 08:30 |
|
Tomasz Grysztar 31 Dec 2006, 08:53
There's no problem with this now.
|
|||
31 Dec 2006, 08:53 |
|
< Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2025, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.